版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、存檔資料 成績: 此頁無需打印,需使用統(tǒng)一購買的封皮。華 東 交 通 大 學課 程 設 計 報 告 書所屬課程名稱 嵌入式系統(tǒng)設計 題 目 游蛇吃豆游戲設計 院 (系) 信息工程學院 班 級 物聯(lián)網(wǎng) 學號 學生姓名 指導教師 輔導教師 2016年 6 月 20 日 華東交通大學課程設計報告課程設計(論文)任務書 信息工程 學院物聯(lián)網(wǎng) 專業(yè) 2013-2 班 一、課程設計(論文)題目游蛇吃豆游戲設計 二、課程設計(論文)工作自 2016 年 06 月 20 日起至 2016 年 06 月 24 日止。三、課程設計(論文) 地點: 嵌入式系統(tǒng)實驗室 四、課程設計(論文)內(nèi)容要求:1本課程設計的目的
2、(1)使學生掌握嵌入式開發(fā)板(實驗箱)各功能模塊的基本工作原理; (2)培養(yǎng)嵌入式系統(tǒng)的應用能力及嵌入式軟件的開發(fā)能力; (3)使學生較熟練地應用嵌入式操作系統(tǒng)及其API開發(fā)嵌入式應用軟件;(4)培養(yǎng)學生分析、解決問題的能力;(5)提高學生的科技論文寫作能力。 2課程設計的任務及要求1)基本要求:(1)分析所設計嵌入式軟件系統(tǒng)中各功能模塊的實現(xiàn)機制;(2)選用合適嵌入式操作系統(tǒng)及其API;(3)編碼實現(xiàn)最終的嵌入式軟件系統(tǒng); (4)在實驗箱上調(diào)試、測試并獲得最終結果。2)創(chuàng)新要求: 在基本要求達到后,可進行創(chuàng)新設計,如改善嵌入式軟件實時性能;擴展嵌入式軟件功能及改善其圖形用戶界面。3)課程設計
3、論文編寫要求(1)要按照書稿的規(guī)格打印謄寫課程設計論文。(2)論文包括目錄、正文、小結、參考文獻、謝辭、附錄等(以上可作微調(diào))。(3)課程設計論文裝訂按學校的統(tǒng)一要求完成。4) 課程設計評分標準: (1)學習態(tài)度:20分;(2)回答問題及系統(tǒng)演示:30分(3)課程設計報告書論文質量:50分。成績評定實行優(yōu)秀、良好、中等、及格和不及格五個等級。不及格者需重做。5)參考文獻:(1)羅蕾.嵌入式實時操作系統(tǒng)及應用開發(fā)北京航空航天大學出版社 (2)Jean J.Labrosse. 嵌入式實時操作系統(tǒng)uC/OS-II北京航空航天大學出版社(3)王田苗.嵌入式設計與開發(fā)實例.北京航空航天大學出版社(4)北
4、京博創(chuàng)科技公司. 嵌入式系統(tǒng)實驗指導書6) 課程設計進度安排(1)準備階段(4學時):選擇設計題目、了解設計目的要求、查閱相關資料。(2)嵌入式軟件設計分析階段(4學時):程序總體設計、詳細設計。(3)嵌入式軟件代碼編寫調(diào)試階段(8學時):程序模塊代碼編寫、調(diào)試、測試。(4)撰寫論文階段(4學時):總結課程設計任務和設計內(nèi)容,撰寫課程設計論文。7) 課程設計題目具體要求:本題的具體任務是設計多任務的嵌入式軟件游蛇吃豆游戲,基本要求:(1)鍵盤控制改變游蛇運動方向;(2)碰到邊框或柵欄游戲結束;(3)吃掉豆子蛇身變長;(4)豆子全部吃光,游戲結束。提高要求(選做):(1)改進游戲界面,增加相關統(tǒng)
5、計信息;(2)考慮一合理的得分方法,得分值取決于吃下去的豆子和游戲完成時間等等。學生簽名: 2016 年 6 月20 日課程設計(論文)評審意見(1)考勤(10分): 優(yōu)()、良()、中()、一般()、差(); (2)系統(tǒng)設計(20分):優(yōu)( )、良()、中()、一般()、差(); (3)編程調(diào)試(10分):優(yōu)()、良()、中()、一般()、差();(4)回答問題(15分):優(yōu)()、良()、中()、一般()、差();(5)論文撰寫(35分):優(yōu)()、良()、中()、一般()、差();(6)創(chuàng)新思想(10分):優(yōu)()、良()、中()、一般()、差();綜合評定等級:評閱人: 職稱: 副教授 20
6、16 年6 月 24日目錄 TOC o 1-3 h z u HYPERLINK l _Toc182973578 一、課設目的及內(nèi)容 PAGEREF _Toc182973578 h 1 HYPERLINK l _Toc182973579 二、設計的原理 PAGEREF _Toc182973579 h 2 HYPERLINK l _Toc182973580 三、環(huán)境搭建及開發(fā)步驟 PAGEREF _Toc182973580 h 3 HYPERLINK l _Toc182973581 四、主要程序代碼設計6 HYPERLINK l _Toc182973582 五、運行測試結果14 HYPERLINK
7、 l _Toc182973583 六、心得體會及自己所做的亮點工作的特別說明15 HYPERLINK l _Toc182973584 七、參考文獻16第13頁 第1頁 共1頁一、課設目的及內(nèi)容目的:(1)使學生掌握嵌入式開發(fā)板(實驗箱)各功能模塊的基本工作原理; (2)培養(yǎng)嵌入式系統(tǒng)的應用能力及嵌入式軟件的開發(fā)能力; (3)使學生較熟練地應用嵌入式操作系統(tǒng)及其API開發(fā)嵌入式應用軟件;(4)培養(yǎng)學生分析、解決問題的能力;(5)提高學生的科技論文寫作能力。 內(nèi)容:本題的具體任務是設計多任務的嵌入式軟件游蛇吃豆游戲,內(nèi)容如下:鍵盤控制改變游蛇運動方向;碰到邊框或柵欄游戲結束;吃掉豆子蛇身變長;豆子
8、全部吃光,游戲結束。同組人員和分工信息:小組成員:小組分工:在本次課程設計中我主要負責:游蛇算法設計和代碼實現(xiàn)二、設計的原理游蛇吃豆的關鍵是表示蛇的圖形以及移動。在本系統(tǒng)中,我們用小方塊來表示蛇的一節(jié)身體,身體每長一節(jié),增加一個小方塊。移動時必須從蛇頭開始,所以蛇不能向相反方向移動,也就是蛇尾不能改作蛇頭。如果不按任何鍵,蛇自行在當前方向上前移,當游戲者按了有效的方向鍵后,蛇頭朝著指定的方向移動,一步移動一節(jié)身體,所以當按了有效的方向鍵后,先確定蛇頭的位置,然后蛇身體隨著蛇頭移動,圖形的實現(xiàn)是從蛇頭的新位置開始畫出蛇,這是由于沒有清屏的原因,原來蛇的位置和新蛇的位置差一個單位,所以看起來多一節(jié)
9、身體,所以將蛇的最后一節(jié)用背景色覆蓋。游戲中的豆子是通過API函數(shù)中的Circle函數(shù)繪制而成。蛇的不停移動,就是蛇的下一節(jié)取代前一節(jié)的位置,在計算機中就是蛇下一節(jié)的位置坐標變成前一節(jié)的位置坐標。蛇的不停移動,就是蛇的下一節(jié)取代前一節(jié)的位置,在計算機中就是蛇下一 節(jié)的位置坐標變成前一節(jié)的位置坐標。在上文中,已定義蛇的位置坐標為數(shù)組類 型,一組坐標對應一節(jié)的位置,假設有 i+1 節(jié), 由 0 到 i 節(jié),第 i 節(jié)的坐標取第 i-1 節(jié)的坐標,第 i-1 節(jié)的坐標取第 i-2 節(jié)的坐標直到第 1 節(jié)取第 0 節(jié)的坐 標。而第 0 節(jié)的坐標,即蛇頭的坐標要往某個方向變化,變化量為蛇每節(jié)的長度。三、
10、環(huán)境搭建及開發(fā)步驟1、嵌入式實時操作系統(tǒng)C/OS-II簡介uC/OS II(Micro Control Operation System Two)是一個可以基于 HYPERLINK /view/15546.htm t _blank ROM運行的、可裁減的、搶占式、實時多任務內(nèi)核,具有高度可移植性,特別適合于 HYPERLINK /view/1125.htm t _blank 微處理器和控制器,適合很多商業(yè)操作系統(tǒng)性能相當?shù)膶崟r操作系統(tǒng)(RTOS)。為了提供最好的移植性能,uC/OS II最大程度上使用ANSI C語言進行開發(fā),并且已經(jīng)移植到近40多種處理器體系上,涵蓋了從8位到64位各種CPU
11、(包括DSP)。 uC/OS II可以簡單的視為一個多任務調(diào)度器,在這個任務調(diào)度器之上完善并添加了和 HYPERLINK /view/1462677.htm t _blank 多任務操作系統(tǒng)相關的系統(tǒng)服務,如信號量、郵箱等。其主要特點有公開源代碼,代碼結構清晰、明了,注釋詳盡,組織有條理,可移植性好,可裁剪,可固化。內(nèi)核屬于搶占式,最多可以管理60個任務。從1992年開始,由于高度可靠性、魯棒性和安全性,uC/OS II已經(jīng)廣泛使用在從照相機到航空電子產(chǎn)品的各種應用中。2、任務設計要求游蛇吃豆游戲需要創(chuàng)建三個任務,第一個任務是Main_Task,第二個任務是Transmit_Task,第三個任
12、務是Led_Flash_Task。下面對這三個任務作詳細說明。任務一負責程序開始運行時的整個游戲環(huán)境的繪制,接著進入死循環(huán)等待鍵盤消息,當有鍵盤觸發(fā)時,程序執(zhí)行onKey()函數(shù)判斷是哪一個按鍵,從而執(zhí)行相應的操作,然后對相應的變量重新賦值。任務二主要負責Snake在屏幕上的位置移動。其中,蛇的身體由draw_rect()函數(shù)動態(tài)繪制,通過動態(tài)的繪制,從而在屏幕上顯示出游動的效果。任務二在負責繪制Snake的同時也完成對分數(shù)和其他相關參數(shù)的記錄和顯示。任務三負責LED燈的閃爍,用來指示RTOS處于正常工作狀態(tài)。在上面三個任務中,任務一的優(yōu)先級是12,任務二的優(yōu)先級是20,任務三的優(yōu)先級是60,
13、。所以任務一是主任務,在創(chuàng)建任務后,任務一優(yōu)先運行,任務二處于就緒狀態(tài),但是又因為任務一是等待鍵盤消息,在沒有鍵盤觸發(fā)的時候,任務一被掛起,這時候任務二就進入了運行狀態(tài)。流程圖圖一、任務一流程圖圖二、任務二流程圖圖三、任務之間的協(xié)調(diào)關系四、主要程序代碼設計1、任務劃分和優(yōu)先級定義OS_STK Main_StackSTACKSIZE*8=0, ; /Main_Test_Task堆棧void Main_Task(void *Id); /Main_Test_Task#define Main_Task_Prio 12OS_STK Led_Flash_StackSTACKSIZE= 0, ; /LED閃
14、爍任務堆棧void Led_Flash_Task(void *Id); /LED閃爍任務#define Led_Flash_Prio 60OS_STK Transmit_Task_StackSTACKSIZE*8=0, ; /Transmit_Task堆棧void Transmit_Task(void *Id); /Transmit_Task#define Transmit_Task_Prio 202、初始化LCDLCD_Init(); /初始化LCD模塊LCD_printf(LCD initialization is OKn);LCD_printf(240 x 128 Text Moden)
15、; initOSGUI();LoadFont();LoadConfigSys();3、創(chuàng)建任務OSTaskCreate(Main_Task,(void *)0, (OS_STK *)&Main_StackSTACKSIZE*8-1, Main_Task_Prio);OSTaskCreate(Led_Flash_Task,(void*)0,(OS_STK*)&Led_Flash_StackSTACKSIZE-1, Led_Flash_Prio);OSTaskCreate(Transmit_Task,(void*)0,(OS_STK*)&Transmit_Task_StackSTACKSIZE-1
16、, Transmit_Task_Prio);4、初始化蛇身U8 HeadPos2;/the position of the head of the snakeU8 EndPos2; /the position of the end of the snake5、初始化豆子u8 bean0032 = 2,11, 18,13, 15,20 ;u8 bean0112 = 10,27 ;u8 bean1012 = 38,3 ;u8 bean1112 = 27,38 ;BOOLEAN boolbean003 = TRUE, TRUE, TRUE;BOOLEAN boolbean011 = TRUE ;BO
17、OLEAN boolbean101 = TRUE ;BOOLEAN boolbean111 = TRUE ;6、移動功能的實現(xiàn)蛇的移動功能是游戲的主體部分。要求蛇可以根據(jù)按鍵控制方向進行轉彎和移動。當蛇頭撞到邊界或者自身時,界面顯示游戲結束。當蛇吃掉食物后,蛇的身體增長一個矩形的長度,同時顯示新的食物。蛇身起始為3節(jié)。首先要判斷按鍵所控制的方向,進而根據(jù)按鍵控制讓蛇在一定方向上游動,在顯示蛇游動的過程中,要根據(jù)需求計算蛇頭的下一個位置,然后將蛇身中每一節(jié)的當前坐標給它的后一節(jié),即蛇身的每一塊移動到其前一塊的位置,接著把新蛇顯示在液晶上。當蛇頭撞墻或者撞自身時,將蛇移動任務掛起;執(zhí)行死亡任務時在
18、液晶上顯示Game Overed;蛇每次吃到食物后,蛇的長度增加1,將蛇尾的坐標保留,傳給新增的那一節(jié),顯示新的食物。通過ChangePointCount記錄改變次數(shù),ChangePointPos102記錄每一次的坐標,沒有移動改變的時候,用繪圖函數(shù)畫原先的圖,有移動的時候,先畫頭部,再利用循環(huán)畫中間,最后畫尾部。主要代碼如下:oldendpos0 = EndPos0;oldendpos1 = EndPos1;/判斷snake頭部的變化switch (HeadDirect)case 1:HeadPos0 = HeadPos0 + 1;break;case 2:HeadPos0 = HeadPo
19、s0 - 1;break;case 3:HeadPos1 = HeadPos1 - 1;break;case 4:HeadPos1 = HeadPos1 + 1;break;/判斷snake尾部的變化if (ChangePointCount 0)if( ( abs(ChangePointPosChangePointCount-10-EndPos0)+abs(ChangePointPosChangePointCount-11-EndPos1) = 0)DelChangePoint();switch(EndDirect)case 1:EndPos0 = EndPos0 + 1;break;case
20、 2:EndPos0 = EndPos0 - 1;break;case 3:EndPos1 = EndPos1 - 1;break;case 4:EndPos1 = EndPos1 + 1;break;/繪制SnakeFillRect2(pdc, pbarRect1, GRAPH_MODE_NORMAL, RGB(0, 0, 255);FillRect2(pdc, pbarRect2, GRAPH_MODE_NORMAL, RGB(0, 0, 255);if (ChangePointCount=0)draw_rect(HeadPos0,HeadPos1, EndPos0, EndPos1);e
21、lsedraw_rect(HeadPos0,HeadPos1,ChangePointPos00,ChangePointPos01);for(i=1; iChangePointCount; i+)draw_rect(ChangePointPosi-10,ChangePointPosi-11,ChangePointPosi0, ChangePointPosi1);draw_rect(ChangePointPosi-10,ChangePointPosi-11,EndPos0,EndPos1);7、判斷能否吃到豆子判斷蛇能否吃到豆子的方法比較簡單,只要判斷蛇頭的X,Y坐標是否同時和食物的坐標X,Y一樣
22、,吃到食物后,改變響應游戲參數(shù),這時候要讓變量addcount加1,要注意根據(jù)此時蛇的運動方向來確定新蛇頭的坐標。另外,要注意,蛇吃完食物后,要把變量boolbean00i,bean010,bean100,bean110賦值FALSE,食物產(chǎn)生子程序能夠判斷食物已經(jīng)被蛇“吃到”了。代碼如下:u8 bean0032 = 2,11, 18,13, 15,20 ;u8 bean0112 = 10,27 ;u8 bean1012 = 38,3 ;u8 bean1112 = 27,38 ;if (HeadPos0 = 20)if (HeadPos1 =20)for (i=0;i3;i+)if (bool
23、bean00i = TRUE)if ( (bean00i0 = HeadPos0) & (bean00i1 = HeadPos1) )catch = TRUE;boolbean00i = FALSE;addcount = 2;return;elseif (boolbean010 = TRUE)if ( (bean0100 = HeadPos0) & (bean0101 = HeadPos1) ) catch = TRUE;boolbean010 = FALSE;addcount = 2;return;elseif (HeadPos1 =20)if (boolbean100 = TRUE)if ( (bean1000 = HeadPos0) & (bean1001 = HeadPos1) ) catch = TRUE;boolbean100 = FALSE;addcount = 2;return;elseif (boolbean110 = TRUE)if ( (bean1100 = HeadPos0) & (bean1101 = HeadPos1) ) catch = TRUE;boolbean110 = FALSE;addcount = 2;return;8、畫豆子畫豆子時,通過判斷豆子有沒有被吃掉決定要不要畫,如果已經(jīng)被蛇吃掉,就不要畫,沒有吃掉就畫,通過數(shù)組的值是TR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湘教版地理八年級下冊7.4《長江三角洲區(qū)域的內(nèi)外聯(lián)系》(第2課時)聽課評課記錄
- 北師大版道德與法治七年級下冊9.1《我們身邊的法律》聽課評課記錄
- 湘教版數(shù)學九年級下冊聽評課記錄:2.3 垂徑定理
- 小學二年級上冊數(shù)學口算練習題人教版新課標
- 小學二年級人教版口算及豎式計算寒假練習A4排版
- 小學二年級加減乘法口算練習題
- 蘇教版小學二年級數(shù)學上冊口算題卡
- 超市連鎖加盟合同范本
- 儲藏室租賃合同范本
- 汽車二級經(jīng)銷商合作協(xié)議書范本
- 高標準農(nóng)田施工組織設計(全)
- 宿舍、辦公樓消防應急預案
- 細胞全能性的課件資料
- 職業(yè)安全健康工作總結(2篇)
- 14S501-1 球墨鑄鐵單層井蓋及踏步施工
- YB 4022-1991耐火泥漿荷重軟化溫度試驗方法(示差-升溫法)
- 水土保持方案中沉沙池的布設技術
- 安全生產(chǎn)技術規(guī)范 第25部分:城鎮(zhèn)天然氣經(jīng)營企業(yè)DB50-T 867.25-2021
- 現(xiàn)代企業(yè)管理 (全套完整課件)
- 走進本土項目化設計-讀《PBL項目化學習設計》有感
- 高中語文日積月累23
評論
0/150
提交評論