新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM和WinSock的多人對戰游戲平臺設計

        基于ARM和WinSock的多人對戰游戲平臺設計

        作者: 時間:2011-07-15 來源:網絡 收藏

        i.JPG


        對于某些步驟需要作詳細說明:
        1)開辟線程
        如果讓服務器一直recvfrom(),則主線程將一直執行此函數,造成消息擁堵,從而導致其他事件難以響應,因此選擇開辟新線程在后臺接收客戶端信息,合理分配系統資源。
        開辟線程的過程如下:
        ①定義要傳送給線程的全局性質的結構體RECVPARAM,成員為Dlg類指針類型變量。
        ②定義RECVPARAM結構體變量pRecvParam,并把當前工程的Dlg類指針賦給其成員;創建線程,把pRecvParam傳遞給線程;然后關閉線程。
        ③在線程回調函數中接收傳遞來的變量pRecvParam,然后就可以調用Dlg類的成員來實現功能。
        2)信息格式
        ①客戶端連接信息
        格式隨意的字符串,目的是讓服務器端接收到數據,從而發現客戶端IP地址。我們發的是“0000”。
        ②客戶端下棋信息
        信息格式:用戶標識(1位)、落子橫坐標(2位)、落子縱坐標(2位)。
        其中,用戶標識位1代表先手(白方),0代表后手(黑方)。
        ③服務器端發送信息
        指導客戶端畫棋子以及顯示狀態。
        信息格式:用戶標識(1位)、落子橫坐標(2位)、落子縱坐標(2位)、狀態(1位)。
        其中,前5位與從客戶端接收的相同:狀態位1表示結束,0表示游戲未結束。
        3.3.2 客戶端程序
        創建單文檔的MFC工程。
        在App類的BOOL InitInstance()中加載套接字庫:AfxSocketInit();
        添加對話框資源CDlgMode,用于選擇游戲模式:
        添加對話框資源CDlgLink,用于連接服務器;并在其上畫一個IP地址控件,用于填寫服務器IP;在確定按鈕的響應函數中初始化套接字socket()、bind(),并向服務器發送連接請求sendto();
        在View類構造函數中將模式選擇對話框DoModal(),選擇進入雙人模式,之后的程序開發流程如圖8所示。

        j.JPG



        4 代碼移植
        4.1 WindowsCE簡介
        Windows CE是Win32 API重新開發的新型信息設備,具有模塊化、結構化和Win32應用程序接口以及與處理器無關等特點。大量用戶對于Windows操作方式和編程的熟悉,是Windows CE作為嵌入式操作系統迅速發展的最大的優勢,也是選擇的原因。
        4.2 代碼移植
        安裝WinCE5.0的標準SDK,在VS2008開發環境下創建智能設備的MFC工程,選擇基于對話框或單文檔的應用程序,并選擇剛剛安裝的標準SDK。工程創建完成后,將在Win32下開發的代碼按同樣的方式轉移過來,然后編譯,修改錯誤。
        WinCE是Unicode環境,盡管WinCE支持ASCII功能來進行文件交換,但是WinCE的本地文件格式是Unicode。所以,要將字符串轉換為UmcMe才能使用。另外就是代碼移植過程中丟三落四的粗心錯誤。以下列舉代碼移植過程中遇到的問題及解決方法:
        1)某些函數發生變化,不再識別ASCII碼字符或字符串,例如MessageBox,其字符串參數必須經_T(“”)轉換成Unicode;另外Cstring類不要輕易使用;
        2)某些功能使用不同函數,例如整型轉字符串型,由函數itoa變為_itoa_s;
        3)智能設備項目中沒有IP地址控件,用編輯框代替,多了些字符串拼接、轉換的工作;
        4)不要忘了使客戶端與服務器端的端口號保持一致。

        5 硬件調試及結果
        5.1 PC與板連接
        1)連接
        通過網線相連,然后指定網關地址和IP地址。指定方法如下:本地連接一>點右鍵看屬性—>雙擊“Internet協議(TCP/IP)”一>使用下面的IP地址,自己填寫即可。特別注意,當兩臺機器直接用網線相連而不使用路由器時,必須同一個網關才可實現數據交換。可通過ping命令測試網絡是否連通。
        2)運行游戲
        利用同步軟件Microsoft AcfiveSync將開發的WinCE5.0下游戲程序傳到平臺中,即可在上面運行。
        5.2 板與ARM板連接
        與上述過程類同。

        6 結論
        經實際操作驗證,這種游戲開發方式(多線程)使得資源占用率很低,S3C2410處理器完全可以勝任,整個游戲運行流暢。游戲平臺可以通過有線方式互聯,也可以通過無線方式互聯,操作簡單,使用方便。而且這種游戲平臺具有很高的開放性,利用上述的開發框架可以輕易開發出更多更好玩的游戲。


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 京山县| 东丰县| 陵水| 郴州市| 兖州市| 高平市| 皋兰县| 建阳市| 利辛县| 永川市| 岚皋县| 石河子市| 鸡西市| 鄂托克前旗| 伊金霍洛旗| 仁怀市| 米泉市| 呈贡县| 台中市| 亚东县| 乌什县| 会宁县| 垦利县| 刚察县| 乐业县| 东乌珠穆沁旗| 嘉祥县| 黄大仙区| 阳西县| 达日县| 郓城县| 博湖县| 江源县| 高台县| 高清| 汪清县| 黄山市| 新建县| 金溪县| 泌阳县| 郎溪县|