您的位置:首頁>科技>正文

五子棋-藍牙或WiFi對戰小遊戲

一.項目介紹

1.地址:

2.效果圖:

近場五子棋對戰.gif

3.簡介:

該項目主要用到MutipeerConnectivity框架, 用藍牙或者局域網二人近場五子棋對戰。

二.思路介紹

大概說下思路,

具體看代碼實現。

1.畫棋盤及落點

這個可以去慕課網看看這個視頻:五子棋, 裡面有詳細的講解, 我對裡面的進行了部分優化。 比如怎麼判斷兩點之間到底觸摸的哪個點。

2.悔棋, 重來

每個點都是一個物件, 讓後把物件放陣列裡面, 進行刪去, 或者重置。

3.人機模式

AI簡介.png

這裡的AI(人工智慧)比較簡單, 這個演算法可深可淺, 此項目就是比較淺的, 深的可以去看演算法, 此專案AI的大體思路是:

先便利棋盤上面的點, 找到AI的棋子有活四, 死四的點, 既下一步能形成5個點的落子點, 找到就直接在此點落子。

如果沒找到, 就遍歷玩家活四, 或者死四的點, 並在此進行落點進行防守, 雖然活四沒法防守。

然後這兩個點都沒找到的話, 就直接找AI有形成活三, 或者死三的點, 進行落子進攻。

如果沒找到, 就找用戶能形成活三, 死三的點進行防守。 就這樣簡單的進行交互。

4.人人模式

人人連機主要用Multipeer Connectivity框架進行近場通訊, 現在有黑白玩家想要連接。

那麼雙方必須打開藍牙或者連接同一WiFi,

接著至少要有一個設備作為流覽器(browser), 用來搜尋其他設備;

第二個設備必須是可發現的, 它要聲明它在這裡, 並且它想要與別的設備連接。 換句話說, 第二個設備需要宣傳自己。 一般來說, 兩個設備都要宣傳自己, 但至少要有一個能流覽其他設備, 從而建立連接。

接受邀請後雙方建立連接。 然後他們就可以基於session會話來傳遞資料消息資料(包括文本、圖像以及可以轉換為NSData物件的任何其他資料), 流資料, 資來源資料。

此專案只需要傳遞消息資料即可。 收到資料的代理方法預設會是在子執行緒上面, 所以如果要更新UI等操作要用GCD執行緒回檔到主執行緒上面來, 否則會造成執行緒異常的情況。

傳遞的資料有棋子位置, 棋子顏色,

催促信號, 語言文字等。 為此我制定了簡單的協定來區別這些資料。 否則沒有一套基本的標準, 應用沒辦法判定這串資料是否是語言文字, 還是棋子位置或者信號等。 通訊協定表如下表所示。

資料類型頭部內容例子語言文字~文字~你吃飯了嗎?黑子位置black棋子x,y座標black0705白子位置white棋子x,y座標white0705催促quiklyquikly悔棋undoundo

三.用到的三方和借鑒

感謝下面作者

四.結語

如果能對你有幫助, 就給個star或贊鼓勵下, 有什麼不足的地方, 歡迎大家指正。

Next Article
喜欢就按个赞吧!!!
点击关闭提示