Android技術分享| 【你畫我猜】Android 快速實現

anyRTC發表於2022-02-28

以你畫我猜為代表的益智類遊戲,已經逐漸成為社交新寵。使用者在遊戲過程中,根據題目線索,發揮自身的想象力。使用者之間理解偏差的遊戲過程中,拉近使用者間的距離。


因而,一個優質的線上你畫我猜平臺,除了最佳化遊戲設定、遊戲規則外,還需要不斷提升畫板的實收互動質量,讓線上使用者獲得如線下玩家一般的流暢體驗。


### 如何快速做一款你畫我猜遊戲


你畫我猜的益智類遊戲,除了畫板,還要配合IM以及實收音影片,三者相互配合。除了互動外,你猜我畫題目也是遊戲好玩的關鍵。


- **畫板功能:** 利用 anyRTC ARBoard SDK ,便能輕鬆實現多人實時畫板協同

- **IM聊天功能:** 題目的提示以及揭示答案還有互動間裡訊息聊天,我們也利用anyRTC RTM 去完成,該庫屬於輕量級IM 庫,庫比較小,傳送訊息和接收訊息都比較簡單

- **實時音影片通訊:** 使用anyRTC RTC SDK,配合變聲、美聲、混音等功能,讓聊天更有趣

- **你猜我畫題庫:** 需要用業務服務做題目庫,玩家來選擇題目,好玩的題目也可以付費讓玩家購買;畫猜的規則也需要配合 IM 精準同步


總和上述關鍵功能點,便能快速做出一塊你畫我猜遊戲了,由於畫猜題庫需要服務端配合,下面給大家演示的demo中,只做了畫畫功能,題目這塊略去,相信開發者可以自行實現。


### 效果展示


![在這裡插入圖片描述](https://img-blog.csdnimg.cn/cf25b7e87571440d9e121b2c5250c070.gif#pic_center)



### 功能描述


- **許可權繪畫:** 進入房間,透過RTM的頻道屬性來標記當前房間哪位玩家在畫畫,以及對應的許可權

- **畫畫功能:** 畫筆粗細,畫板顏色修改,畫筆撤銷,清空畫板以及對畫板截圖,這些都是你畫我猜的基礎功能

- **訊息聊天:** 基本的IM訊息聊天功能,顏色如何收發訊息

- **語音實時互動:** 真實的場景中有觀眾以及麥上玩家,本demo做為演示demo,也是使用的直播模式,只不過預設上麥,真實開發當中切換角色,只需要呼叫一句程式碼即可,可以在demo中找到


### 跑通demo


實現步驟如下:


* 在`app/build.gradle`中新增依賴:


```Groovy

dependencies {

  ...

  // 白板

  implementation 'io.anyrtc:ARBoard:1.0.0.2'

}

```


* 白板初始化相關API

  白板初始化會用到4個類:`ARBoardAuthParam`、`ARBoardBaseParam`、`ARBoardKit`以及`ARBoardHandler`

  `ARBoardHandler`為事件通知類,需使用者繼承及實現

  `ARBoardKit`為控制類,透過`ARBoardKit`控制白板

  `ARBoardAuthParam`負責傳遞APP_ID、token及uid

  `ARBoardBaseParam`負責傳遞白板初始化配置,其架構如下:

    - ARBoardBaseParam.ARBoardInitConfig

      - String ratio //比例,如1:1、16:9

      - int scale //取值100~300,100=1倍

      - ARBoardToolType toolType //畫筆型別,預設為PEN

    - ARBoardBaseParam.ARBoardInitStyleConfig

      - ARBoardTextStyle textStyle //取值:bold,italic,bold_italic,normal,預設normal

      - int textSize //文字大小(設定ARBoardToolType為文字時生效)

      - String textColor //文字顏色

      - String brushColor //畫筆顏色

      - int brushThin //畫筆粗細

      - String globalBackgroundColor //畫板可以分頁,此屬性可設定每一頁的預設顏色

      - String selectBoxColor

    - ARBoardBaseParam.ARBoardInitAuthConfig

      - boolean drawEnable //畫板是否可以繪製,預設true

      - String progressBarUrl //載入畫板時的loading圖,支援gif、jpg、png、base64、http、https

      - boolean progressEnable //此屬性為false時不展示loading效果。為true時,progressBarUrl不為空展示Url內容,否則展示預設效果



* 初始化白板


```Kotlin

// 初始化白板

// 初始化ARBoardAuthParam物件,傳入APP ID、token、uid

val authConfig = ARBoardAuthParam(appId, "", uid)

// 在baseParams中定義初始值,如白板比例(radio),畫筆粗細、顏色等

val baseParams = ARBoardBaseParam()

baseParams.authConfig.progressEnable = false

baseParams.config.ratio = "1:1"

baseParams.styleConfig.run {

    brushThin = 2

    brushColor = "#FF0000"

}


// 建立Kit並將白板View新增到佈局中

kit = ARBoardKit(this, authConfig, roomId, baseParams, MyBoardHandler())

val boardView = kit.arBoardView

binding.boardParent.addView(boardView)


...

```


除了實現畫板,還能順帶實現即時通訊、音影片聊天功能,具體的音影片實現可以參考我們往期文章~

如果您也想擁有如此方便的畫板,請參考以下資料:


> **專案地址:[]()**<br>

> 白板Demo[]()<br>

> 白板API文件[]()


![在這裡插入圖片描述](https://img-blog.csdnimg.cn/82349259c18847da889cb06067a26c75.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYW55UlRD,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70013909/viewspace-2859966/,如需轉載,請註明出處,否則將追究法律責任。

相關文章