新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM的多人對戰(zhàn)游戲平臺

基于ARM的多人對戰(zhàn)游戲平臺

作者: 時間:2013-12-04 來源:網絡 收藏
基于ARM的多人對戰(zhàn)游戲平臺

  對于單人五子棋游戲,即人機對戰(zhàn),只需要一個應用程序。當用戶鼠標左擊棋盤時,程序先在相應位置處畫棋子,然后執(zhí)行電腦方策略,實現對戰(zhàn)。

  對于雙人五子棋游戲,則需要先運行一個服務器端程序,然后兩個用戶分別運行一個客戶端程序,并與此服務器相連。游戲進行過程中,由服務器執(zhí)行游戲策略,客戶端程序只負責采集鼠標信息和顯示棋子。我們讓用戶A在游戲平臺A上運行服務器端程序,緊接著運行客戶端程序,并與服務器建立Socket連接;然后告訴用戶B服務器的IP地址,讓其在平臺B上運行客戶端程序,并與服務器建立Socket連接;連接成功后就可以開始游戲了。

  3.2 單人游戲

  建立MFC工程,選擇創(chuàng)建單文檔類型的應用程序。添加對話框資源用于選擇游戲模式,并在View類構造函數中DoModal()。

  進入單人模式后的程序開發(fā)流程如圖5所示。

基于ARM的多人對戰(zhàn)游戲平臺

  對于某些步驟需要作詳細說明:

基于ARM的多人對戰(zhàn)游戲平臺

  3)判斷游戲是否結束

  在Doc類中定義私有性質的成員變量int state[15][10];,用于記錄棋盤上每一格的狀態(tài):無棋(值為0)、用戶方棋(值為1)、電腦方棋(值為2),初始值是0。游戲過程中,某一方落棋后立即給state數組對應成員賦值,下標可由鼠標左鍵消息響應函數的CPoint point參數轉換而來。

  對于棋盤上每一個坐標點(i,j),沿東西、南北、東南西北、東北西南四個方向掃描五個沿途點的狀態(tài)值,若發(fā)現五個相同狀態(tài)相連,則該狀態(tài)(用戶方或電腦方)的棋手獲勝,游戲結束。

  4)電腦方下棋策略

  對于棋盤上每一個坐標點(i,j),掃描它的狀態(tài)值state[i][j],一經發(fā)現不為0,就以此點為起點,沿東、南、西、北、東南、西南、東北、西北8個方向搜索5個棋位。

  事先定義針對每個點、每個方向的8個整型數組(初始值賦為0):

基于ARM的多人對戰(zhàn)游戲平臺

  對于坐標點(i,j),搜索過程中若遇到具有相同狀態(tài)的點(m,n),則對應方向數組的[i][j]成員的值增加,遇到不同狀態(tài)點則減小。保存8個中絕對值最大的。

  上述操作完后,比較所有點存的值,絕對值最大的說明以該點起始的某個方向己方棋子相連較多,或者對方棋子相連較多,最適合落子。

  3.3 雙人游戲

  從游戲開始到結束,客戶端與服務器的交互過程如圖6所示。

基于ARM的多人對戰(zhàn)游戲平臺

  3.3.1 服務器端程序

  創(chuàng)建基于對話框的MFC工程。

  在App類的BOOL InitInstance()中加載套接字庫:AfxSocketInit();

  在Dlg類的BOOL OnInitDialog()中初始化套接字,包括新建和綁定套接字:socket()、bind();

  在對話框上畫兩個按鈕控件:“連接用戶”和“開始游戲”。



評論


相關推薦

技術專區(qū)

關閉