




已閱讀5頁,還剩13頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1基于C/OS系統、ARM9硬件平臺的貪吃蛇游戲設計摘要程序核心思想:游戲開始后進入游戲界面。首先初始化蛇的坐標,食物的坐標。線程基本流程:判斷是否是暫停階段,是否有有退出按鍵,游戲是否有結束,如果都沒有就執行,如果游戲結束了就重新游戲或者退出。設計要求;1、能夠通過方向鍵來控制蛇的移動方向;2、蛇吃到食物后能夠重新出現食物;并且能夠更新和顯示分數;3、游戲開始的時候能通過手動進行游戲級別的調整;4、每吃到5個食物后,游戲能夠自動進入下一關,并能通過增加蛇的移動速度來增加游戲的難度;5、游戲開始的時候能夠手動對游戲級別進行調整;開發平臺信息一、C/OS操作系統C/OS和C/OS-II是專門為計算機的嵌入式應用設計的,絕大部分代碼是用C語言編寫的。CPU硬件相關部分是用匯編語言編寫的、總量約200行的匯編語言部分被壓縮到最低限度,為的是便于移植到任何一種其它的CPU上。C/OS-II中最多可以支持64個任務,分別對應優先級063,其中0為最高優先級。63為最低級,系統保留了4個最高優先級的任務和4個最低優先級的任務,所有用戶可以使用的任務數有56個,每個任務都有不同的優先級,用戶在創建任務的時候定義該任務的優先級。uC/OS操作系統中每個任務可以有5種狀態:休眠態、就緒態、運行態、等待或掛起狀態、中斷態,在任一個時候,任務的狀態一定是這5種狀態之一。任務在等待消息、郵箱或者信號量等事件的到來的時候會進入掛起狀態,當任務接到消息以后,則處于就緒狀態。二、試驗箱基本硬件信息1)CPU:S3C44B0X,ARM7TDMI,工作在60MHz2)BIOS:2M,NORFLASH3)內存:8MSDRAM4)海量存儲器:16M,NANDFlash5)鍵盤:17鍵數字小鍵盤6)顯示器:32024016級灰度的LCD(可選256彩色LCD),四線電阻式觸摸屏7)USB接口:1.1標準8)串行口:兩個,最高波特率115200kb9)網絡接口:10M以太網10)CAN接口:125Kb,250Kb,500Kb,1Mb11)調試接口:JTAG,14針,20針12)電機:直流電機(有刷),步進電機(帶1/64減速器)13)A/D:8路10位,滿量程2.5V,已用前4路14)D/A:10位,滿量程4.096V15)LED:8個,共陰極216)音頻輸出:44.1KHz17)FPGA(可選):ACEX1K系列,擴展輸出100I/O,與S3C44B0X外部總線直接相連18)擴展口:2個二、開發集成環境ARMSDT2.5集成開發環境ARMSDT2.5集成開發環境(ARMProjectManager)是ARM公司(為方便用戶在ARM芯片上進行應用軟件開發而推出的一整套集成開發工具。ARMSDT可在Windows95、98、NT以及Solaris2.5/2.6、HP-UX10上運行,支持最高到ARM9(含ARM9)的所有ARM處理器芯片的開發,包括StrongARM。ARMSDT包括一套完整的應用軟件開發工具:1、*armccARM的C編譯器,具有優化功能,兼容于ANSIC。2、*tccTHUMB的C編譯器,同樣具有優化功能,兼容于ANSIC。3、*armasm支持ARM和THUMB的匯編器。4、*armlinkARM連接器,連接一個和多個目標文件,最終生成ELF格式的可執行映像文件。5、*armsdARM和THUMB的符號調試器。詳細設計一、屬性解釋貪吃蛇游戲設計最主要在于蛇移動的控制,在設計中分別用兩組一維數組snake.U16x100和snake.U16x100來分別0存放蛇身的坐標,x100代表橫坐標,y100代表縱坐標。蛇的寬度設置為10個像素點。變量direction為移動方向,foodx,foody為食物的坐標。function.stop為判定是否是要結束退出游戲,function.restar用來在游戲結束后重新開始游戲。1000/snake.level為蛇的移動速度(在程序中用1000/snake.level作為每次循環的延遲時間),當snake.level的記錄的等級越高的話,蛇的移動速度會越快(因為延遲時間越小),難度越高。snake.life用來判定游戲是否結束,snake.life=1代表蛇已死,游戲結束。游戲的其他相關變量還有snake.node,用來記錄蛇的節數;snake.score用來記錄游戲得分;snake.level用來記錄游戲的等級。二、相關初始化過程:1、堆棧大小定義、任務優先級定義:OS_STKMain_StackSTACKSIZE*8=0,;VoidMain_Task(void*Id);#defineMain_Task_Prio12OS_STKControl_StackSTACKSIZE*8=0,;voidControl(void*Id);#defineControl_Prio152、任務的創建:OSTaskCreate(Main_Task,(void*)0,(OS_STK*)&Main_StackSTACKSIZE-1,Main_Task_Prio);OSTaskCreate(Control,(void*)0,(OS_STK*)&Control_StackSTACKSIZE*8-1,Control_Prio);3、初始化畫筆寬度:SetPenWidth(pdc,10);/初始化畫筆寬度為10個像素點4、初始化蛇的節數:snake.node=5;/游戲開始時蛇有5節35、初始蛇尾巴的坐標:snake.x0=10;snake.y0=10;初始化蛇各節的坐標:for(i=0;i=snake.node-1;i+)snake.xi+1=snake.xi+10;snake.yi+1=snake.yi;6、蛇相關參數的初始化:初始化移動方向為向右:snake.direction=6;7、游戲相關參數的初始化:初始化分數:snake.score=0;初始化等級:snake.level=1;三、程序流程:本設計需要創建兩個任務,任務流程和任務狀態切換如下圖。具體的任務流程和任務所要完成的功能如下:在系統啟動后,同時創建兩個任務,任務一和任務二。任務一主要功能是等待鍵盤消息,有鍵盤消息的時候判斷是什么鍵盤,并對相應的變量重新賦值。任務二主要功能是控制并在屏幕上顯示蛇的移動,并完成對分數、游戲等級、和其他相關參數的記錄和顯示。任務一為主任務,在創建任務的時候,賦給它的優先級別比任務二高,所以任務一優先運行,任務二處于就緒狀態,因為任務一主要是等待鍵盤消息,在無鍵盤消息的時候,任務一被掛起,這時候任務二進入運行狀態。1、程序主流程圖:是否有鍵盤消息任務一掛起任務一,任務二就緒任務二掛起任務一運行任務二運行是否42、主任務流程圖:主要功能是等待鍵盤消息,有鍵盤消息的時候判斷是什么鍵盤,并對相應的變量重新賦值。3、任務二流程圖:主要功能是控制并在屏幕上顯示蛇的移動,并完成對分數、游戲等級、和其他相關參數的記錄和顯示。是等待鍵盤消息是否有鍵盤按下判斷是哪個按鍵否8如果蛇現在的方向是左或者右就把方向改成向上2如果蛇現在的方向是左或者右就把方向改成向下4如果蛇現在的方向是上或者下就把方向改成左6如果蛇現在的方向是上或者下就把方向改成右*發出退出游戲的信息發出重新開始游戲的信息/+對游戲的等級加1(只在游戲開始前有效)-對游戲的等級減1(只在游戲開始前有效)/n車確定等級選擇,開始游戲5四、具體功能實現:1、移動功能的實現:這部分功能是游戲的主體,實現蛇移動的方式是首先擦除蛇尾,擦除的方發是用白色的畫筆覆蓋畫上蛇尾,蛇尾就變成白色底色不可見,然后從蛇尾開始,依次將蛇每一的坐標給下一節。例如剛開始蛇是5節,這時候依次把第2四節的坐標給第1節;把第3節(即蛇頭)的坐標給第2節;把第4四節的坐標給第3節;把第4節(即蛇頭)的坐標給第3節;把第5節(即蛇頭)的坐標給第4節。擦除蛇尾和轉移坐標這兩個順序不能顛倒。這時候蛇頭的初始化游戲是否結束是否調用食物產生程序根據direction變量移動蛇是否吃到食物否是蛇的節數加1分數加1加快蛇的移動速度是否要產生食物否是是否有返回按鍵顯示結束畫面否6坐標和第4節的坐標是一樣的,這時候需要判斷變量snake.direction的值,根據snake.direction的值補畫上蛇頭。首先,擦除蛇尾SetPenColor(pdc,0xffffffff);MoveTo(pdc,snake.x0,snake.y0);LineTo(pdc,snake.x0,snake.y0);然后,蛇的每個環節坐標給下一節;For(i=0;i=0;i-)if(snake.xi=snake.xsnake.node&snake.yi=snake.ysnake.node)snake.life=1;break;elsecontinue;8(2)蛇頭撞到游戲界面邊框判斷蛇是否撞到邊框的方法,只要比較蛇頭的X、Y坐標是不是同時和邊框的X、Y坐標一樣,一樣的話,即表明蛇撞到邊框,游戲結束。例如:本設計中以(10,45)為坐標原點的情況下,只要保證蛇頭的X坐標在0620之間(像素點為單位),蛇頭Y坐標在0415之間(像素點為單位),即表示蛇沒有撞到邊框。if(snake.xsnake.node=0|snake.xsnake.node=620|snake.ysnake.node=0|nake.ysnake.node=415)snake.life=1;5、監聽鍵盤動作:任務通過等待消息而處于掛起狀態,當任務接到消息以后,則處于就緒狀態,然后開始判斷所接受到的這個消息是不是需要處理,如果是執行相應的處理函數,最后,刪除所接收到的消息,繼續掛起等待下一條消息。VoidMain_Task(void*Id)/Main_Test_TaskU8xiaoxi;POSMSGpMsg=0;for(;)pMsg=WaitMessage(0);switch(pMsg-Message)caseOSM_KEY:xiaoxi=onKey(pMsg-WParam,pMsg-LParam);if(xiaoxi=default:break;OSTimeDly(200);DeleteMessage(pMsg);U8onKey(intnkey,intfnkey)switch(nkey)Casereturndefault:returnFALSE;9程序下載與調試1、把程序下載到試驗箱中:(1)執行菜單Project|Make對工程進行編譯連接。在出現的錯誤/警告窗口中選擇某錯誤/警告信息,ADS會自動打開相應源文件并用箭頭指向出錯的文本行。如果某個源文件被修改,重新編譯時ADS會自動同步各文件的日期信息。(2)在ADS中執行菜單Project|Debug啟動ADS1.2的調試工具AXD。(3)在AXD中執行菜單Options|ConfigureTarget對AXD進行設置。選擇ADP即遠程調試,點Configure按鈕進一步設置具體參數。(4)點Select按鈕選擇遠程連接為ARMethernetdriver,點Configure按鈕輸入仿真器的IP地址。如果用戶使用的是并行口仿真器,請輸入127.0.0.1即可。(5)等待程序裝載完畢以后,通過Execute|Go菜單以及Execute|Stop(或者工具欄中的相應按鈕)運行或暫停程序。程序暫停后在窗口中將顯示出程序暫停的位置。(6)通過Execute|Step菜單(或者工具欄中的相應按鈕)可以單步運行程序。也可以使用StepIn、StepOut菜單命令進入或者跳出函數的調用。RunToCursor命令運行到光標位置。(7)程序停止后可以通過ProcessorViews|Sources菜單查看源文件,并可在適當位置按F9設置端點。(8)使用在ProcessorView菜單下的Registers、Variables和Memory命令可以查看工作寄存器或者內存變量。讀者可以逐一地嘗試,為以后調試程序打下基礎。注意:在進行調試時在ADS中必須選擇當前工程的Debug版本,如果選擇Release版本則無法正常調試程序。但在調試通過后就必須選擇Release版本進行編譯連接并將生產的system.bin文件復制到開發板的Flash中。將開發板上的Flash激活并使Windows認其為一個2、運行結果與不足:本程序能夠完成設計目的的所有基本要求;(1)能夠通過方向鍵來控制蛇的移動方向;(2)蛇吃到食物后能夠重新出現食物;并且能夠更新和顯示分數;(3)每吃到5個食物后,游戲能夠自動進入下一關,并能通過增加蛇的移動速度來增加游戲的難度;(4)能夠通過按鍵隨便退出游戲,并能通過按鍵重新進入游戲;未能實現的功能;本程序設計時預想在游戲開始前能夠停留在游戲界別設置畫面,并能通過手動進行游戲級別的調整,“+”按
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 窗簾行業品牌形象塑造與傳播考核試卷
- 糧油企業生產流程標準化與質量控制考核試卷
- 木地板品牌國際化戰略與市場拓展考核試卷
- 彈射玩具產品創新設計思路與方法考核試卷
- 砼結構構件的預制件疲勞試驗考核試卷
- 紡織品的耐磨性與強度分析考核試卷
- 半導體照明器件的環境適應性測試標準考核試卷
- 線上線下融合的衛浴零售模式探索考核試卷
- 天津城建大學《形勢與政策(5)》2023-2024學年第二學期期末試卷
- 三門峽職業技術學院《基本樂理專業理論教學》2023-2024學年第二學期期末試卷
- 豐田鋒蘭達說明書
- 2023年東莞市人民醫院醫師規范化培訓招生(放射科)考試參考題庫含答案
- 2022年甘肅省張掖市輔警協警筆試筆試模擬考試(含答案)
- 勾頭作業施工方案
- 中醫醫院重癥醫學科建設與管理指南
- 創傷性網胃炎
- LY/T 1556-2000公益林與商品林分類技術指標
- GB/T 3522-1983優質碳素結構鋼冷軋鋼帶
- 主要電氣設備絕緣電阻檢查記錄
- 探析小學數學作業分層設計與評價獲獎科研報告
- 2023年陜西高考理科數學試題
評論
0/150
提交評論