freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于arm9的貪吃蛇游戲-在線瀏覽

2024-08-06 14:20本頁面
  

【正文】 dy, //Snake Body TP_SkHead, TP_SkTail}。2)游戲初始化游戲的初始化將LCD屏幕以等大小的方塊進行劃分,并定義每個方塊的屬性,邊框和障礙物的屬性相同,還有蛇頭的屬性,蛇身的屬性,蛇尾的屬性,食物的屬性,空白方塊的屬性。同時產(chǎn)生隨機產(chǎn)生食物。 LineTo(pdc,620,440)。 LineTo(pdc,620,480)。 LineTo(pdc,220,480)。 LineTo(pdc,420,480)。 TextOut(pdc,20,420,text1,TRUE,FONTSIZE_MIDDLE)。WorldArray[W_YSize/2][W_XSize/21]。 xNodeisBlock=1。 UpdateNextNode(xNode,Left)。 //Snake Body xNode=amp。 xNodeType=TP_SkBody。 UpdateNextNode(xNode,Left)。 //Snake Tail xNode=amp。 xNodeType=TP_SkTail。 TailNode=xNode。 xNodePreDir=Left。2 判斷蛇是否吃到食物判斷蛇是否吃到食物的方法比較簡單,只要判斷蛇頭的屬性是否和下一個節(jié)點的屬性一樣。以后食物產(chǎn)生子程序能夠判斷食物已經(jīng)被蛇“吃到”了,要重新產(chǎn)生食物。 if(score==5) flag1=1。 LenToAdd+=CakeLength。 }3 判斷游戲是否結束(1) 蛇頭撞到蛇身判斷蛇是否撞到蛇身的方法可以從蛇頭開始依次開始判斷蛇頭的屬性是否和下一個方塊的屬性相同,一樣的話即表明蛇撞到蛇身了,此時游戲結束。If ( HeadNode isBlock ) { nRet = 1。 }4 蛇移動功能這部分功能是游戲的主體,實現(xiàn)蛇移動的方式是首先擦除蛇尾,擦除的方發(fā)是改變蛇尾的屬性,通過調用繪圖上下文設備,蛇尾就變成白色底色不可見,然后從蛇尾開始,依次改變下一個節(jié)點的屬性。擦除蛇尾和轉移坐標這兩個順序不能顛倒。If ( LenToAdd != 0) { LenToAdd 。 TailNode IsBlock = 0。 //old tail TailNode = TailNode Next。 DrawPoint ( TailNode )。 //old head DrawPoint ( HeadNode )。 //save predir HeadNode = HeadNode Next。本設計是通過在每次吃完食物后調用隨機產(chǎn)生食物函數(shù),另外還要保證食物不能超出蛇的活動界面,并要保證食物能被蛇吃到,所以需要指定食物坐標的范圍,被通過舍去食物坐標個位的方法保證食物坐標是整十,這樣就能被蛇吃到。void RandCake (void){ //Get a new rand cake position INT32U x,y。 Y = rand () %W_YSize。 } CakeNode = amp。 CakeNode Type = TP_Cake。}監(jiān)聽鍵盤動作:任務通過等待消息而處于掛起狀態(tài),當任務接到消息以后,則處于就緒狀態(tài),然后開始判斷所接受到的這個消息是不是需要處理,如果是執(zhí)行相應的處理函數(shù),最后,刪除所接收到的消息,繼續(xù)掛起等待下一條消息。//定義消息結構 ClearScreen ()。 GameRun = OSSemCreate (1)。 SetLCDUpdata ( pdc , FALSE )。 。//等待消息 switch ( pMsg Message) { case OSM_KEY://鍵盤消息 onKey ( pMsg WParam , pMsg LParam )。 } DeleteMessage ( pMsg )。}6 AD控制蛇速度在每次蛇前進一步后,通過刷新LCD屏幕來顯示畫面和相關參數(shù),緊接著占用系統(tǒng)信號量,占用的時間是同過當前游戲的關口和調用AD采樣函數(shù)來確定的額,游戲關口越高,蛇的前進速度越快,AD采樣值越小,蛇的前進速度越快。INT32S GetSpeed ( U8 level){ int ADData。 ADData = GetADresult(0)。 if ( level == 1 ) return 300 + lastData。 else return 100 + lastData。在出現(xiàn)的錯誤/警告窗口中選擇某錯誤/警告信息,ADS 會自動打開相應源文件并用箭頭指向出錯的文本行。(2)在ADS 中執(zhí)行菜單Project | Debug 的調試工具AXD。選擇ADP 即遠程調試,點Configure 按鈕進一步設置具體參數(shù)。如果用戶使用的是并行口仿真器, 即可。程序暫停后在窗口中將顯示出程序暫停的位置。也可以使用 Step In、Step Out 菜單命令進入或者跳出函數(shù)的調用。(7)程序停止后可以通過Processor Views | Sources 菜單查看源文件,并可在適當位置按F9 設置端點。讀者可以逐一地嘗試,為以后調試程序打下基礎。但在調試通過后就必須選擇Release 文件復制到開發(fā)板的Flash 中。未能實現(xiàn)的功能;本程序設計時預想在游戲開始前能夠停留在游戲界別設置畫面,并能通過手動進行游戲級別的調整,“+”按鍵用來增加游戲級別,“”按鍵用來減少游戲級別,并能在屏幕上顯示游戲灌輸,等到有確認信息,游戲才開始。由于調試時間有限,最后刪掉次部分功能。這個不足的原理是因為每次按鍵按下,要等到下一次循環(huán),蛇才能響應方向改變,而蛇控制的程序中每次循環(huán)中用到了比較多的循環(huán)語句,判斷,跳轉,每次程序循環(huán)所需要的時間比較長,所以感覺按鍵有一點延遲,但是這個延遲非常的小,并不明顯。(2)蛇的移動范圍和游戲界面有些不一致,例如蛇會稍稍超出游戲界面的邊框。這個問題僅僅是畫面上有點缺陷,不影響貪吃蛇的功能。五 總結想要寫出好的程序,需要我們有扎實的基礎,這樣遇到一些基本算法的時候可能就會游刃有余了。不要拘泥于固定的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。 在編程時我們會碰到了很多的困難,這就需要我們多與別人交流。在編程的過程中我們也看到了有良好的編程風格是十分重要的,至少在時間效率上就體現(xiàn)了這一點。 還有在變成中最能體現(xiàn)簡單的原則。遇到問題時要優(yōu)先考慮最簡單的方案,只有簡單方案不能滿足要求時再考慮復雜的方案。 //Main_Test_Task堆棧void Main_Task ( void *Id )。 //snake_Test_Task堆棧void Snake_Task ( void *Id )。 //定義全局信號量OS_EVENT *GameRun。 INT8U y。enum WN_Type{ //定義枚舉變量的方塊類型 TP_Space , // 空白類型 TP_Block , // 塊狀類型 TP_Cake , //食物類型 TP_SkBody , //蛇的軀體 TP_SkHead , // 蛇的頭 TP_SkTail // 蛇的尾}。// 定義方向的枚舉型變量typedef struct WorldNode //定義節(jié)點類型結構變量{ BOOLEAN isBlock。 //方塊類型的變量 enum Direction Dir。 // 方向類型的變量 struct Pt pos。 // 定義節(jié)點類型的指針} WorldNode。//更新下一節(jié)點函數(shù)void DrawPoint ( struct WorldNode* xNode) 。 //隨機產(chǎn)生食物函數(shù)/**** Global vars ****/WorldNode WorldArray[ W_YSize ][ W_XSize ]。 // 定義節(jié)點類型的蛇頭指針,蛇尾指針,食物指針I(yè)NT8U LenToAdd = 0。 // 第一反方向的常量INT8U ERRNO。 // 定義繪圖上下文設備INT32S score = 0。//game為關數(shù),目前為三關,每關只改變速度U16 timeuse。 // 定義游戲運行標志U8 flag1=0。 // 定義 第三關游戲標志///********************AD 定義和初始化************************///define ADCCON_FLAG ( 0x115 ) //AD 控制標志define ADCCON_ENABLE_START_BYREAD ( 0x11 ) //AD使能讀信號define rADCCON ( * ( volatile unsigned * ) 0x58000000 )define rADCDAT0 ( * ( volatile unsigned * ) 0x5800000C )define PRSCVL ( 49 6 )define ADCCON_ENABLE_START ( 0x1 )define STDBM ( 0x0 2 )define PRSCEN ( 0x1 14 )void init_ADdevice(){//初始化 rADCCON = ( PRSCVL | ADCCON_ENABLE_START | STDBM | PRSCEN )。 // 驅動轉換 hudelay ( 10 )。 ADCCON_FLAG ) )。 rADCDAT0 )。 // 定義AD轉換數(shù)據(jù)變量 U16 lastData。 //調用轉換函數(shù),獲得轉換數(shù)據(jù) lastData = ADData**50/1023。//根據(jù)關口返回對應的速度參數(shù) else { if ( level == 2 ) return 200 + lastData。 } }///**************根據(jù)關數(shù)初始化游戲*****************///void WorldInit( void ){ INT8U x,y。 WorldNode *xNode。ERRNO )。 //繪制邊框,移動到該點 LineTo ( pdc,620,440 )。 LineTo ( pdc,620,480 )。 LineTo ( pdc,220,480 )。 LineTo ( pdc,420,480 )。//轉換成UNICODE TextOut ( pdc,20,420,text1,TRUE,FONTSIZE_MIDDLE )。y W_YSize 。x W_XSize 。WorldArray [ y ][ x ] 。 xNode = y。 xNod e isBlock = 1。 xNode isBlock = 0。 ( y == W_YSize/3 | y==W_YSize*2/3 ) )|( x == 0 || y == 0 || x == W_XSize1 || y == W_YSize1)) //如果是第二關則有兩個障礙物 { xNode Type = TP_Block。 } else { xNode Type = TP_Space。 } } else { If ( (( x == W_XSize/3 | x == W_XSize*
點擊復制文檔內容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1