【正文】
及說(shuō)明int SnakeOfBrick[24][24]。 初始化每個(gè)小格子的高度,定義為整形int snake_body_length。 定時(shí)器間隔,定義為整形CPoint snake_foods。記錄蛇身的每個(gè)節(jié)點(diǎn)的坐標(biāo),定義為整形3. 程序Snake類內(nèi)部方法定義及說(shuō)明程序中主要函數(shù)聲明詳見(jiàn)下:void InitSnake()。void IS_GameOver()。產(chǎn)生食物坐標(biāo)的函數(shù),通過(guò)此函數(shù),每當(dāng)蛇吃到一個(gè)食物時(shí),隨機(jī)產(chǎn)生下一個(gè)食物的坐標(biāo)。根據(jù)蛇前進(jìn)的方向重畫蛇頭蛇尾,動(dòng)態(tài)顯示蛇前進(jìn)的方向,就是把蛇尾節(jié)點(diǎn)重畫成背景色,蛇頭節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)重畫蛇身顏色,同時(shí)蛇頭節(jié)點(diǎn)變?yōu)橄乱粋€(gè)節(jié)點(diǎn)坐標(biāo),蛇尾節(jié)點(diǎn)變?yōu)榈箶?shù)第二節(jié)點(diǎn)。以上是貪吃蛇游戲類中主要的宏定義、變量、方法名以及方法對(duì)用的功能。 游戲退出函數(shù),通過(guò)此函數(shù)實(shí)現(xiàn)游戲的結(jié)束功能。 游戲暫停函數(shù),通過(guò)鼠標(biāo)點(diǎn)擊暫停按鈕,實(shí)現(xiàn)游戲的暫停動(dòng)能。 通過(guò)點(diǎn)擊相應(yīng)的按鈕,實(shí)現(xiàn)蛇向右方向前進(jìn)的功能。 通過(guò)點(diǎn)擊相應(yīng)的按鈕,實(shí)現(xiàn)蛇向下方向前進(jìn)的功能。void CSnakeDlg::Start(){ Level=1。 dead_flag=1。BOOL CSnakeDlg::OnInitDialog(){ CDialog::OnInitDialog()。 CRect rt。// HEIGHTOFBRICKS=(())/24。 InitSnake()。 for(int y=0。x++) { if(SnakeOfBrick[y][x]==0) { dcFillSolidRect(LEFTMARGIN+x*WIDTHOFBRICKS,10+y*HEIGHTOFBRICKS,WIDTHOFBRICKS,HEIGHTOFBRICKS,BACKCOLOR)。 } } } ReleaseDC(dc)。1. 燒寫B(tài)lob使用JflashMM將eboot燒寫到Nand Flash中。在Windows 回車,選擇輸入“bc16”,回車,可以看到如下圖所示的界面:然后我們輸入“blob”,如上面右圖所示;此時(shí)我們等待系統(tǒng)燒寫Flash,完成后如下圖所示:到這我們完成燒寫第一步; 如下:在這里我們應(yīng)十分注意注意,所有文件都需要放到Current Directory目錄下,請(qǐng)確保這個(gè)路徑和IP設(shè)置正確無(wú)誤。注意開(kāi)發(fā)機(jī)與設(shè)備的連接關(guān)系,可以使用直連網(wǎng)線連接開(kāi)發(fā)機(jī)PC與設(shè)備。配置好了之后運(yùn)行ifconfig查看配置是否正確。出現(xiàn)如下圖所示:運(yùn)行“flash eboot”將eboot寫入flash。配置Eboot 參數(shù)Bootloader下載好之后,可以運(yùn)行控制臺(tái)執(zhí)行一些操作。在PB中選擇菜單中Target\Connectivity Options,彈出如下對(duì)話框:將“Download”“Transport”兩欄都選擇為“Ethernet”,“Debugger”一欄選擇為“None”。+EbootSendBootmeAndWaitForTftpSent BOOTME to Sent BOOTME to 選擇菜單中Target\Connectivity Options,在Download欄中按Settings按鈕,出現(xiàn)如下對(duì)話框:在Active Device框中選擇識(shí)別出的設(shè)備名,點(diǎn)擊框中的設(shè)備,在device boot name中選中該設(shè)備,之后點(diǎn)“OK”確定。如果因?yàn)榫W(wǎng)絡(luò)狀況不好,造成下載中斷,則需要重新進(jìn)行上述過(guò)程。我們將開(kāi)發(fā)板接好電源,下載好winCE系統(tǒng),后,將數(shù)據(jù)線連接好,啟動(dòng)同步軟件,進(jìn)行連接,直到同步軟件顯示連接成功之后,瀏覽板子內(nèi)容,選擇PXA270S開(kāi)發(fā)板SDK,進(jìn)行編譯,將C:\Documents and Settings\lining\桌面\Snake_no_dead\ARMV4Irel目錄下的可執(zhí)行文件加入到實(shí)驗(yàn)箱目錄下,然后連接鍵盤和鼠標(biāo)到開(kāi)發(fā)板上的USB上,點(diǎn)擊可執(zhí)行程序Snake文件,運(yùn)行開(kāi)發(fā)完成的貪吃蛇游戲程序,這樣,整個(gè)系統(tǒng)整合完成。我們運(yùn)行程序,然后按空格鍵開(kāi)始游戲,讓蛇自身開(kāi)始移動(dòng),我們首先讓蛇頭撞到地圖周圍的墻壁,觀察結(jié)果是不是出現(xiàn)應(yīng)該出現(xiàn)的結(jié)果。開(kāi)始游戲,然后讓蛇吃到自己的身體某一部分,結(jié)果如下圖所示: 通過(guò)上圖,我們發(fā)現(xiàn),當(dāng)蛇頭吃到自己身體的某一部分時(shí),貪吃蛇死亡,游戲結(jié)束,說(shuō)明此功能正確,測(cè)試結(jié)束。下面我們來(lái)進(jìn)行上、下、左、右功能鍵的按鍵測(cè)試,如下圖所示:通過(guò)觀察上圖和前一個(gè)狀態(tài)的變化,我們發(fā)現(xiàn)此圖顯示了按上功能鍵后,貪吃蛇蛇頭向上移動(dòng),說(shuō)明向上按鍵功能正確。當(dāng)蛇死亡時(shí),我們需要回到初始化界面,進(jìn)行游戲的重玩,這時(shí),我們需要按鍵回車鍵進(jìn)行游戲的重新初始化工作,我們現(xiàn)在來(lái)進(jìn)行回車鍵功能的測(cè)試工作,如下圖所示:通過(guò)觀察上圖和前一個(gè)狀態(tài)的變化,我們發(fā)現(xiàn)當(dāng)我們按下回車鍵時(shí),游戲重新回到初始化界面,說(shuō)明此功能正確,測(cè)試結(jié)束。3. 作為基于winCE嵌入式程序的開(kāi)發(fā),提供了一個(gè)完整的過(guò)程,從一開(kāi)始定制內(nèi)核到下載內(nèi)核,程序的編寫直至最后程序在板子上調(diào)試運(yùn)行給初學(xué)者帶來(lái)了一個(gè)整體的指導(dǎo),方便學(xué)習(xí)基于winCE嵌入式。首先我要深深的感謝我的恩師吳磊老師,在本次設(shè)計(jì)期間給予我悉心的指導(dǎo)。從吳老師那里,不僅學(xué)到了許多的專業(yè)知識(shí),而且學(xué)會(huì)了一些學(xué)習(xí)的方法和為人處事的道理,對(duì)我以后的工作學(xué)習(xí),影響是非常深遠(yuǎn)的。最后感謝我的父母,在我最困難的時(shí)候,他們始終給我最有力的支持和理解。[J].廣州致遠(yuǎn)電子有限公司,2008年[6] 張晶,[J].嵌入式操作系統(tǒng)應(yīng)用,2008年5月:39一42[7] 程序設(shè)計(jì)VisualC++++[J].電子工業(yè)出版社,2000年12月 [8] ++[J].清華大學(xué)出版社,2006年[9] ++入門、進(jìn)階與應(yīng)用實(shí)例[J].人民郵電出版社,2007年外文資料翻譯及原文翻譯原文The Windows Programming ModelPrograms written for traditional operating environments use a procedural programming model in which programs execute from top to bottom in an orderly fashion. The path taken from start to finish may vary with each invocation of the program depending on the input it receives or the conditions under which it is run, but the path remains fairly predictable. In a C program, execution begins with the first line in the function named main and ends when main returns. In between, main might call other functions and these functions might call even more functions, but ultimately it is the program—not the operating system—that determines what gets called and when. Windows programs operate differently. They use the eventdriven programming model illustrated in Figure 11, in which applications respond to events by processing messages sent by the operating system. An event could be a keystroke, a mouse click, or a mand for a window to repaint itself, among other things. The entry point for a Windows program is a function named WinMain, but most of the action takes place in a function known as the window procedure. The window procedure processes messages sent to the window. WinMain creates that window and then enters a message loop, alternately retrieving messages and dispatching them to the window procedure. Messages wait in a message queue until they are retrieved. A typical Windows application performs the bulk of its processing in response to the messages it receives, and in between messages, it does little except wait for the next message to arrive. The message loop ends when a WM_QUIT message is retrieved from the message queue, signaling that it39。t process are passed on to an API function named DefWindowProc, which provides default responses to unprocessed messages. Messages, Messages, and More MessagesWhere do messages e from, and what kinds of information do they convey? Windows defines hundreds of different message types. Most messages have names that begin with the letters WM and an underscore, as in WM_CREATE and WM_PAINT. These messages can be classified in various ways, but for the moment classification is not nearly as important as realizing the critical role messages play in the operation of an application. The following table shows 10 of the most mon messages. A window receives a WM_PAINT message, for example, when its interior needs repainting. One way to characterize a Windows program is to think of it as a collection of message handlers. To a large extent, it is a program39。s upper right corner), or selected Close from the window39。在此一并致謝。其次需要感謝計(jì)算機(jī)一班的同學(xué)們,四年的同窗生涯,在學(xué)習(xí)生活上給了我許多無(wú)私熱情的幫助。在這寶貴的四年時(shí)光里,吳老師淵博的知識(shí)、嚴(yán)謹(jǐn)?shù)慕虒W(xué)態(tài)度令我欽佩不已。致謝時(shí)光飛逝,四年的大學(xué)生活轉(zhuǎn)瞬即逝。總結(jié)與展望本論文描述了基于winCE設(shè)計(jì)思想開(kāi)發(fā)的貪吃蛇游戲功能,采用了軟硬件相結(jié)合的嵌入式設(shè)計(jì)方案,開(kāi)拓了自己對(duì)嵌入式領(lǐng)域的認(rèn)知,最后經(jīng)過(guò)一系列的功能測(cè)試,下載內(nèi)核,調(diào)試實(shí)驗(yàn)開(kāi)發(fā)板,完成了能夠在實(shí)驗(yàn)板上運(yùn)行的貪吃蛇游戲,總體來(lái)說(shuō),本次設(shè)計(jì)主要有幾下幾個(gè)特點(diǎn):1. ,較其他嵌入式操作系統(tǒng)而言,具有的優(yōu)勢(shì)是:良好的操作界面、實(shí)時(shí)性較高、占用資源少、開(kāi)發(fā)工具豐富以及強(qiáng)大的技術(shù)支持等等。通過(guò)觀察上圖和前一個(gè)狀態(tài)的變化,我們發(fā)現(xiàn)此圖顯示了按左功能鍵后,貪吃蛇蛇頭向上移動(dòng),說(shuō)明向上按鍵功能正確。一共有6個(gè)按鍵與貪吃蛇游戲相關(guān),分別是,上、下、左、右按鍵,還有回車,空格按鍵。根據(jù)游戲規(guī)則,當(dāng)貪吃蛇吃到自己身體的某一部分時(shí),也應(yīng)該出現(xiàn)一個(gè)對(duì)話框,顯示游戲結(jié)束,標(biāo)志著游戲的結(jié)束,玩家重新開(kāi)始游戲。按照預(yù)先設(shè)計(jì)應(yīng)出現(xiàn)的結(jié)果是當(dāng)蛇頭下一個(gè)移動(dòng)節(jié)點(diǎn)的位置是地圖四周的墻壁時(shí),或者是蛇自身的某一個(gè)位置節(jié)點(diǎn)時(shí),應(yīng)該顯示出一個(gè)對(duì)話框,標(biāo)志著蛇死亡。至此,我們完成了整個(gè)winCE內(nèi)核的燒寫工作。等待下載完畢。啟動(dòng)實(shí)驗(yàn)板,按空格進(jìn)入控制臺(tái),監(jiān)視超級(jí)終端,配置好子網(wǎng)掩碼和系統(tǒng)IP,保存選項(xiàng),再選擇“D”選項(xiàng)下載新的內(nèi)核,然后等待超級(jí)終端出現(xiàn)下面信息:Using device name: 39。如下圖所示: 以下是對(duì)各個(gè)項(xiàng)目的解釋:0為設(shè)備啟動(dòng)IP設(shè)定;1 為設(shè)備及子網(wǎng)地址設(shè)定;2 為boot延時(shí)的時(shí)間設(shè)定;3 選擇是否設(shè)置動(dòng)態(tài)IP分配,這一