女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]基于ARM和WinSock的多人對戰(zhàn)游戲平臺設計

摘要:具有多機互聯(lián)對戰(zhàn)功能的開放式便攜游戲機具有廣闊的應用價值和深遠的發(fā)展空間。以SAMSUNG公司基于ARM920T的處理器S3C2410為核心,嵌入WinCE 5.0操作系統(tǒng),在VS2008開發(fā)環(huán)境下創(chuàng)建智能設備MFC工程,并將在Win32環(huán)境下開發(fā)的單人/雙人五子棋游戲進行代碼移植,最終在ARM開發(fā)板上成功運行游戲。游戲開發(fā)基于Windows Sockets網(wǎng)絡鳊程,能夠實現(xiàn)ARM板與PC、ARM板與ARM板之間的游戲對戰(zhàn),可利用以太網(wǎng)接口互聯(lián),也可以通過無線局域網(wǎng)互聯(lián)。該文以五子棋游戲為例,詳述了硬件構建、游戲開發(fā)及移植的整個過程,極具借鑒價值。
關鍵詞:ARM處理器;WinCE5.0操作系統(tǒng);網(wǎng)絡鳊程;代碼移植

    游戲不僅能開發(fā)人的智力,使人頭腦反應靈敏,還能滿足人的精神需求(如冒險、創(chuàng)造力、情感等),極具娛樂性和趣味性,深受人們的喜愛。隨著消費類電子產業(yè)的蓬勃發(fā)展,越來越多的嵌入式電子產品走進了千家萬戶,催生出了諸如GBA(Game Boy Advance)、PSP(Play-Station Portabk)以及最近才在我國上市的iPad等一大批專業(yè)的并且銷量驚人的明星級移動娛樂游戲設備。
    然而上述游戲平臺通常造價昂貴,且不具有開放性。例如備受推崇的PSP,開發(fā)授權問題和昂貴的專用開發(fā)套件(軟硬件)使得PSP游戲的開發(fā)門檻很高。這在很大程度上限制了這些游戲平臺的普及。如果利用通用的處理器和常用的嵌入式操作系統(tǒng)(如WinCE、Linux等)構建一種基于以太網(wǎng)或者無線以太網(wǎng)的便攜式的游戲機。則可以吸引大量熟悉C/C++嵌入式編程的工程師或發(fā)燒友制作出各種精彩的游戲,這必將極大地推動這種游戲平臺的普及。而且將平臺進行功能裁剪和批量生產后成本較低,對于中低收入人群來說將是極佳選擇,市場潛力無窮。
    本文詳述了這種游戲平臺的硬件構建、互聯(lián)對戰(zhàn)游戲開發(fā)框架和流程,以及從Win32到WinCE進行代碼移植的整個開發(fā)過程,并記錄了開發(fā)過程中積累的經驗,具有很高的借鑒價值。

1 硬件平臺
    硬件平臺架構如圖1所示。


    S3C2410是Samsung公司推出的16/32位RISC處理器,為手持設備和一般類型應用提供了低價格、低功耗、高性能小型微控制器的解決方案。
    S3C2410采用了ARM920T內核,0.18μm工藝的CMOS標準宏單元和存儲器單元。它的低功耗、精簡和出色的全靜態(tài)設計特別適用于對低成本和功耗敏感的應用。ARM920T實現(xiàn)了MMU,AMBA BUS和Harvard高速緩沖體系結構。這一結構具有獨立的16 kB的指令Cache和16 kB數(shù)據(jù)Cache,每個都由8字長的行構成。

2 套接字編程
2.1 WinSock基礎
    WinSock是Windows Sockets的縮寫,是Windows環(huán)境下廣泛應用的、開放的、支持多種協(xié)議的網(wǎng)絡編程接口規(guī)范。這里主要使用TCP/IP協(xié)議族實現(xiàn)通信。
    基于TCP/IP的套接字有流式套接字(SOCK_STREAM)、數(shù)據(jù)報式套接字(SOCK_DGRAM)、原始式套接字(SOCK_RAW)3種類型,如圖2所示。


    TCP協(xié)議是面向連接的網(wǎng)絡協(xié)議,它的連接步驟較多,而且當檢測到數(shù)據(jù)包丟失或錯誤時,會要求發(fā)送端重新發(fā)送,這樣一來就不可避免地引起了傳輸延時。
    UDP協(xié)議面向無連接服務,每個分組都攜帶有完整的目的地址,操作簡單,且無傳輸延遲,比較適合要求不高的游戲通信。它的通信時序如圖3所示。

[!--empirenews.page--]
2.2 應用程序接口函數(shù)
    1)加載套接字庫AfxSocketlnit()
    布爾型,參數(shù)缺省值為NULL,在程序結束前自動調用WSACleanup清除套接字。
    2)創(chuàng)建套接字socket()
    用于創(chuàng)建指定類型的套接字,流式(TCP協(xié)議)SOCK_STREAM或數(shù)據(jù)報式(UDP協(xié)議)SOCK_DGRAM。
    3)綁定本地地址bind()
    將套接字地址(包括本地主機地址和本地端口地址)與所創(chuàng)建的套接字號聯(lián)系起來,即將名字賦予套接字,以指定本地半相關。
    4)接收recvfrom()
    在套接字指定的已連接的數(shù)據(jù)報或流套接字上接收輸入數(shù)據(jù)。
    5)發(fā)送sendto()
    在套接字指定的已連接的數(shù)據(jù)報或流套接字上發(fā)送輸出數(shù)據(jù)。

3 Win32下五子棋程序設計
3.1 游戲設計思路
    游戲開始前有一系列引導步驟,讓用戶選擇游戲模式,并作相應的初始連接,如圖4所示。這些引導步驟可通過添加一系列對話框資源來實現(xiàn)。完成之后進入選擇的游戲模式。


    對于單人五子棋游戲,即人機對戰(zhàn),只需要一個應用程序。當用戶鼠標左擊棋盤時,程序先在相應位置處畫棋子,然后執(zhí)行電腦方策略,實現(xiàn)對戰(zhàn)。
    對于雙人五子棋游戲,則需要先運行一個服務器端程序,然后兩個用戶分別運行一個客戶端程序,并與此服務器相連。游戲進行過程中,由服務器執(zhí)行游戲策略,客戶端程序只負責采集鼠標信息和顯示棋子。我們讓用戶A在游戲平臺A上運行服務器端程序,緊接著運行客戶端程序,并與服務器建立Socket連接;然后告訴用戶B服務器的IP地址,讓其在平臺B上運行客戶端程序,并與服務器建立Socket連接;連接成功后就可以開始游戲了。
3.2 單人游戲
    建立MFC工程,選擇創(chuàng)建單文檔類型的應用程序。添加對話框資源用于選擇游戲模式,并在View類構造函數(shù)中DoModal()。
    進入單人模式后的程序開發(fā)流程如圖5所示。

[!--empirenews.page--]
    對于某些步驟需要作詳細說明:

    3)判斷游戲是否結束
    在Doc類中定義私有性質的成員變量int state[15][10];,用于記錄棋盤上每一格的狀態(tài):無棋(值為0)、用戶方棋(值為1)、電腦方棋(值為2),初始值是0。游戲過程中,某一方落棋后立即給state數(shù)組對應成員賦值,下標可由鼠標左鍵消息響應函數(shù)的CPoint point參數(shù)轉換而來。
    對于棋盤上每一個坐標點(i,j),沿東西、南北、東南西北、東北西南四個方向掃描五個沿途點的狀態(tài)值,若發(fā)現(xiàn)五個相同狀態(tài)相連,則該狀態(tài)(用戶方或電腦方)的棋手獲勝,游戲結束。
    4)電腦方下棋策略
    對于棋盤上每一個坐標點(i,j),掃描它的狀態(tài)值state[i][j],一經發(fā)現(xiàn)不為0,就以此點為起點,沿東、南、西、北、東南、西南、東北、西北8個方向搜索5個棋位。
    事先定義針對每個點、每個方向的8個整型數(shù)組(初始值賦為0):
  
    對于坐標點(i,j),搜索過程中若遇到具有相同狀態(tài)的點(m,n),則對應方向數(shù)組的[i][j]成員的值增加,遇到不同狀態(tài)點則減小。保存8個中絕對值最大的。
    上述操作完后,比較所有點存的值,絕對值最大的說明以該點起始的某個方向己方棋子相連較多,或者對方棋子相連較多,最適合落子。
3.3 雙人游戲
    從游戲開始到結束,客戶端與服務器的交互過程如圖6所示。


3.3.1 服務器端程序
    創(chuàng)建基于對話框的MFC工程。
    在App類的BOOL InitInstance()中加載套接字庫:AfxSocketInit();
    在Dlg類的BOOL OnInitDialog()中初始化套接字,包括新建和綁定套接字:socket()、bind();
    在對話框上畫兩個按鈕控件:“連接用戶”和“開始游戲”。
    開發(fā)流程如圖7所示。[!--empirenews.page--]


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



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

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

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

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

上海2025年9月5日 /美通社/ -- 由上海市經濟和信息化委員會、上海市發(fā)展和改革委員會、上海市商務委員會、上海市教育委員會、上海市科學技術委員會指導,東浩蘭生(集團)有限公司主辦,東浩蘭生會展集團上海工業(yè)商務展覽有...

關鍵字: 電子 BSP 芯片 自動駕駛

推進卓越制造,擴大產能并優(yōu)化布局 蘇州2025年9月5日 /美通社/ --?耐世特汽車系統(tǒng)與蘇州工業(yè)園區(qū)管委會正式簽署備忘錄,以設立耐世特亞太總部蘇州智能制造項目。...

關鍵字: 智能制造 BSP 汽車系統(tǒng) 線控

慕尼黑和北京2025年9月4日 /美通社/ -- 寶馬集團宣布,新世代首款量產車型BMW iX3將于9月5日全球首發(fā),9月8日震撼亮相慕尼黑車展。中國專屬版車型也將在年內與大家見面,2026年在國內投產。 寶馬集團董事...

關鍵字: 寶馬 慕尼黑 BSP 數(shù)字化

北京2025年9月4日 /美通社/ --?在全球新一輪科技革命與產業(yè)變革的澎湃浪潮中,人工智能作為引領創(chuàng)新的核心驅動力,正以前所未有的深度與廣度重塑各行業(yè)發(fā)展格局。體育領域深度融入科技變革浪潮,駛入數(shù)字化、智能化轉型快車...

關鍵字: 人工智能 智能體 AI BSP

上海2025年9月2日 /美通社/ -- 近日,由 ABB、Moxa(摩莎科技)等八家企業(yè)在上海聯(lián)合發(fā)起并成功舉辦"2025 Ethernet-APL 技術應用發(fā)展大會"。會議以"破界?融合...

關鍵字: ETHERNET 智能未來 BSP 工業(yè)通信

傳感器模塊能實現(xiàn)便捷無接觸的后備箱或側滑門開啟,適配各種車輛架構 該24 GHz雷達傳感器可集成于保險杠或底盤上,并通過特定的手勢或腳部動作觸發(fā)響應 已為多家歐洲主流車企啟動量產交付 德國布爾2025...

關鍵字: 傳感器 BSP 觸發(fā) 保險杠

以高效節(jié)能方案繪制AI算力綠色未來 上海2025年8月29日 /美通社/ -- 8月28日,臺達受邀出席"2025中國智算產業(yè)綠色科技大會",全方位分享臺達在智算領域的前沿洞見與綠色解決方...

關鍵字: AI 可持續(xù)發(fā)展 數(shù)據(jù)中心 BSP

淄博2025年8月29日 /美通社/ -- 8月26日至27日,TÜV南德意志集團(以下簡稱"TÜV南德")受邀參加由淄博市...

關鍵字: BSP 人工智能 信息安全 新加坡

北京2025年8月28日 /美通社/ -- 近日,北京亦莊創(chuàng)新發(fā)布消息,北京經濟技術開發(fā)區(qū)(簡稱北京經開區(qū),又稱北京亦莊)以"高效辦成一件事"為抓手,圍繞企業(yè)信用修復的全流程全環(huán)節(jié),打造經開區(qū)特色的&...

關鍵字: 數(shù)字化 集成 BSP 數(shù)據(jù)共享

深圳2025年8月27日 /美通社/ -- 2025年8月27日,華測檢測認證集團股份有限公司(簡稱CTI華測檢測,股票代碼300012)與北京戴納實驗科技股份有限公司(簡稱戴納科技)在華測集團上海基地完成戰(zhàn)略簽約,雙方...

關鍵字: TI AI BSP 智能化
關閉