【電氣設(shè)計自動化論文】貪吃蛇游戲的設(shè)計
【電氣設(shè)計自動化論文】貪吃蛇游戲的設(shè)計,電氣設(shè)計,自動化,論文,貪吃,游戲,設(shè)計
本科畢業(yè)論文(設(shè)計)(2015 屆)貪吃蛇游戲的設(shè)計院 系 電子信息工程學(xué)院 專 業(yè) 電氣工程及其自動化 姓 名 指導(dǎo)教師 副教授 年 4 月學(xué)號:I摘 要本篇論文主要是設(shè)計并且著手致力于實現(xiàn)一種基于 51 單片機的經(jīng)典的貪吃蛇游戲,主要是研究該游戲的硬件電路和軟件編程的設(shè)計,同時也簡單介紹了應(yīng)該如何使用Proteus 軟件進行仿真。借助仿真軟件進行實驗測試,可以基本實現(xiàn)游戲一些簡單的基本功能。直至現(xiàn)在,大家都知道且明白了 51 系列的單片機技術(shù)相對而言比較成熟,功能也十分強大,應(yīng)用較為廣泛。將單片機作為本設(shè)計的控制核心,能夠使硬件電路大大地簡化,用軟件來編程控制單片機,來加以實現(xiàn)硬件電路的功能,可以降低能耗,同時也節(jié)約成本。選用 C 語言編程,比較方便靈活,極大地加快了軟件開發(fā)的速度,使開發(fā)周期縮短了,同時方便移植。本篇論文比較詳細(xì)的的介紹了各種硬件的基本特性,貪吃蛇游戲?qū)崿F(xiàn)的基本功能與詳細(xì)設(shè)計,軟件設(shè)計的具體說明,每一個模塊的細(xì)節(jié)要求,還有一些功能模塊的程序流程圖和關(guān)鍵部分代碼的詳細(xì)講解等。關(guān)鍵詞:Proteus 軟件仿真;51 單片機;Keil;貪吃蛇;LED 點陣屏IIAbstractThis paper is mainly committed to the design and begin a 51 microcontroller based on the classic Snake game, is to study the hardware circuit design and software programming of the game, but also a brief introduction to how to use Proteus simulation software . With simulation software experimental tests, the basic realization of the game can be some simple basic functions. Until now, we all know and understand the 51 series of single-chip technology is relatively mature, the function is also very powerful, is widely used. The microcontroller as control core of this design, enabling greatly simplify the hardware circuit with microcontroller programming control software, hardware circuitry to be functional, you can reduce energy consumption, but also cost savings. Selection of the C programming language, more convenient and flexible, which greatly accelerated the pace of software development, shorten the development cycle, while convenient for transplant. This paper a more detailed introduction to the basic characteristics of various hardware realization of the basic functions of the Snake game with detailed design, software design, specify the details of the requirements of each module, there are some functional modules of the program flow chart and explain in detail the critical parts of the code and so on.Keywords:Proteus software simulation;51 microcontroller;Keil;Snake;LED lattice;III目 錄摘 要 .IAbstractII目錄 Ⅲ1 緒論 .11.1 研究背景及意義 .11.2 單片機發(fā)展?fàn)顩r .11.3 LED 發(fā)展?fàn)顩r .31.4 設(shè)計特點 32 系統(tǒng)總體設(shè)計 42.1 設(shè)計要求 .42.2 系統(tǒng)設(shè)計方案 42.2.1 硬件設(shè)計 42.2.2 軟件設(shè)計 43 系統(tǒng)硬件設(shè)計 .53.18*8LED 點陣的原理說明 .53.2 LED 陣列驅(qū)動電路 .54 系統(tǒng)軟件設(shè)計 .64.1 系統(tǒng)主要模塊介紹 .64.1.1 主函數(shù)模塊 .64.1.2 按鍵模塊 .74.1.3 蛇運動控制模塊 .74.2 主程序工作流程 .74.3 游戲設(shè)計思想 84.4 LED 點陣初始化 .94.5 貪吃蛇的移動 94.6 食物的隨機出現(xiàn) 95 聯(lián)調(diào)與測試 10IV5.1 軟件調(diào)試 105.2 硬件調(diào)試 11結(jié)論與展望 .13致謝 14參考文獻(xiàn) 15附錄 A:系統(tǒng)原理圖 .16附錄 B:系統(tǒng) PCB 圖 .17附錄 C:系統(tǒng)仿真圖 .18附錄 D:系統(tǒng)實物圖 .18附錄 E:系統(tǒng)源程序 .2011 緒論1.1 研究背景及意義時代在不斷的進步,人們的生活節(jié)奏也因此不斷加快,越來越多的人加入了經(jīng)濟化全球化的世界。人們不再只需要保持自己的小世界,加班、旅游已逐漸代替了人們的正常工作,成為我們必然的公務(wù)。同時,我們可以供隨時隨地的休閑娛樂,因而休閑類的小游戲已經(jīng)逐漸成為生活的必需品,漸漸得變得無所不在,滲入我們?nèi)粘I畹母鱾€部分。貪食蛇這款經(jīng)典的小游戲具有可塑性強、簡單易行、通俗易懂、操作方便、娛樂性強等特點,因此引來了不少人們的青睞。這款小游戲牢牢地把握住了人們追求娛樂的心理,看起來很簡單,但真正接觸的時候毫無違和感,甚至?xí)杏X到其樂無窮,在人們不斷尋求探索更多的開心和樂趣下,游戲的到來給了追逐快樂的人,和現(xiàn)代人滿意的成功后,在巨大的壓力之下是一種很好的放松工具。當(dāng)今的世界,科技在不斷地發(fā)展,尤其是微電子技術(shù)方面,計算機軟件技術(shù)和其應(yīng)用技術(shù)的發(fā)展,將人們的生活變得多姿多彩,不在單調(diào)無趣。單片作為微型計算機大家族中不可或缺的一員,微型計算機以其良好的穩(wěn)定性,獨特的構(gòu)造,較低的成本在嵌入式領(lǐng)域中得到了廣泛應(yīng)用。我希望可以通過這些年來所學(xué)的知識將它剖析出來,使它立體的呈現(xiàn)在面前,真正意義上的了解它的實質(zhì),明白它的精髓所在。在編程方面,能力不強的我,更應(yīng)該努力地借助這次機會,通過研究,從實踐中提升自己的編程能力。故而,我選定了這個比較有意思的課題。1.2 單片機發(fā)展?fàn)顩r單片微型計算機,簡稱單片機(MCU)。它是在一塊半導(dǎo)體硅片上集成了振蕩器電路、中央處理單元、隨機存取存儲器、只讀存儲器、可編程定時器/計數(shù)器、并/ 串行I/O接口等,有的還包含了A/D轉(zhuǎn)換器??傃灾粋€巴掌大小的單片機,具有一臺計算機的所有屬性,直接相當(dāng)于一臺微型計算機。由于使用單片機時其通常在測控系統(tǒng)的核心部分并嵌入其中。所以,單片機也被稱作為嵌入式控制器EMCU (Embedded MicroController Unit)。單片機擁有集成度高、體積小、重量輕、處理功能強、電源簡單、低功耗、可靠性高、價格低廉、運算速度快、易擴展、易于使用、抗干擾能力強等特點。因此,在工業(yè)控制、通信系統(tǒng)等涉及到的一些領(lǐng)域,基本是到處都可以見到單片機的蹤影,其技術(shù)的開發(fā)和高水平的應(yīng)用已逐漸變成一個國家工業(yè)化成就取得高低的關(guān)鍵。早在 1974 年,世界上第一塊單片機被美國的仙童公司研究生產(chǎn)出來,歷經(jīng)短短數(shù)幾十年的光陰,單片機便與日俱增,成批地涌現(xiàn)出來。截至現(xiàn)在,4 位、8 位、16 位單片機都已經(jīng)被研究出現(xiàn)了,甚至 32 位的超大規(guī)模集成電路單的片機也已經(jīng)問世了,其性能也2在不斷的升高,不斷被改善。在國內(nèi)的單片機,起步雖然比較晚,但其潛力已經(jīng)受到越來越多人的關(guān)注,特別是在工業(yè)控制、自動化儀器儀表、計算機系統(tǒng)接口、智能化外設(shè)等應(yīng)用領(lǐng)域發(fā)展較為快速。單片機的應(yīng)用,對于產(chǎn)品的升級,還有機電一體化都有重要的意義。在工業(yè)控制中的應(yīng)用也十分廣泛,例如,用單片機可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng),各種報警系統(tǒng),工廠流水線的智能化管芯片理與計算機聯(lián)網(wǎng)構(gòu)成的二級控制系統(tǒng)等。單片機在醫(yī)用設(shè)備中的用途亦相當(dāng)廣泛,例如醫(yī)用呼吸機,各種分析儀,監(jiān)護儀,超聲診斷設(shè)備及病床呼叫系統(tǒng)等等。在通信行業(yè),這種應(yīng)用顯得更加廣泛,手機從最初的只能實現(xiàn)基本通話,沒有其他任何功能,到現(xiàn)在任何一部手機都擁有各種強大的功能,含有各種不同的應(yīng)用,單片機的功效被發(fā)揮的淋漓盡致??梢杂檬謾C來聽音樂,玩游戲,攝影等等,而手機游戲上貪吃蛇游戲就可以利用單片機 來實現(xiàn)。即使最新型 MCS-51 單片機各種基本的內(nèi)核核心擴張和持續(xù)改進,但是 51 系列的單片機的應(yīng)用依舊是我們國家的主流模式。縱觀幾十年的單片機發(fā)展歷程,它的未來將向高性能,高速度,低電壓,低價格和閃存的方向發(fā)展。我們可以預(yù)見的是,單片機的未來將變得更加強大、集成度更高、可靠性更高、功耗更低、使用更方便,總之,它的未來是無可限量的。1.3 LED 發(fā)展?fàn)顩rLED,也就是發(fā)光二極管的英文縮寫,是一種固態(tài)的,能夠直接地把電轉(zhuǎn)變成光的半導(dǎo)體電子元件。這種電子元件最早出現(xiàn)在 1962 年,剛開始的時候只能發(fā)出低光度的紅光,之后慢慢地發(fā)展出其他的單色光,到現(xiàn)在,能發(fā)出的光已經(jīng)遍及可見光、紅外線還有紫外線,光度也得到了較大地提高。而其用途從最開始的作為指示燈、顯示板等,到現(xiàn)在被廣泛地應(yīng)用于顯示器、電視機采光裝飾和照明等。它由含鎵(Ga)、砷(As)、磷(P)、氮 (N )等的化合物制成。半導(dǎo)體晶片由兩部分組成,一部分是 P 型半導(dǎo)體,在它里面空穴占主導(dǎo)地位,另一端是 N 型半導(dǎo)體, 在這邊主要是電子。 但這兩種半導(dǎo)體連接起來的時候, 它們之間就形成一個“ P-N”結(jié)。當(dāng)電流通過導(dǎo)線作用于這個晶片的時候,電子就會被推向 P 區(qū),在 P 區(qū)里 電子跟空穴復(fù)合,然后就會以光子的形式發(fā)出能量,這就是 LED 發(fā)光的原理。 半導(dǎo)體照明具有綠色環(huán)保的特點,使用壽命長,效率高,節(jié)能,抗惡劣環(huán)境,結(jié)構(gòu)簡單 ,體積小,重量輕,響應(yīng)速度快, 工作電壓低,安全性好的特點。因此,LED 成為白熾燈、日光燈和節(jié)能燈后的第四代照明電光源,同時也被稱為 21 世紀(jì)綠色光源。由于 LED 具有單向?qū)щ娦?,因此它只能往一個方向?qū)ǎ@種現(xiàn)象被稱為正向偏置,也叫正向偏壓。LED 的優(yōu)點是:節(jié)能、壽命長、防水、不易破損、低功耗、開關(guān)具有高速度、微型、高可靠性、光束集中等。它的不足是:顯色性較差、需要專門的驅(qū)動電路、起始的成本較高等,因此,傳統(tǒng)的照明也相對存在一些不足。近年來白光 LED 的發(fā)光效率有了顯著提高。31.4 設(shè)計特點以下是課程設(shè)計的主要特點:1.功能定義,顧名思義是很重要的,尤其是對于讀程序的人來說,它顯得更為重要,在不斷地修改和完善該程序的過程中,也能清楚地明白程序中各個模塊的所起到的作用,從而大大地提高了程序的可讀性。2.主要從 main()函數(shù)的功能入手。Main()函數(shù)的主要功能是啟動 C 源程序編譯,主要從 main()函數(shù)開始讀函數(shù),可以將其他功能的函數(shù)理解的更加透徹。3.在源程序列表的第一幀,來分析程序所要達(dá)到的功能,選擇合適的數(shù)據(jù)結(jié)構(gòu),然后在模塊化程序,根據(jù)模塊的功能更加簡單合理地編寫函數(shù)。4.我也學(xué)到了很多的庫函數(shù)的作用,如很多對字符串進行處理的函數(shù),還有一些基本的功能我都有了一定的理解。5.它是獨立于特定的 C 語言教科書,重點是C 語言的基本特征,以“不變“應(yīng)“萬變“,C 語言覆蓋的重要基礎(chǔ)知識的實際運用,我們需要熟練地掌握 C 語言。6.根據(jù)實際出發(fā),本設(shè)計可以覆蓋所學(xué)的知識點,而且它比較能夠滿足工程的實際需求。再者,本次設(shè)計能夠激發(fā)我們學(xué)習(xí)的熱情,調(diào)動學(xué)習(xí)的積極性,可以根據(jù)實際編程的要求,提升實際分析問題的能力和編程能力,而且還可以使我們逐步養(yǎng)成良好的編程習(xí)慣。7.提供綜合實踐能力的的課程設(shè)計,以進一步鍛煉學(xué)生。同時,讓學(xué)生完成實驗的過程中,可以鍛煉相互合作的精神,取長補短,培養(yǎng)團隊意識。8.通過觀察網(wǎng)絡(luò)實例,循序漸進地幫助學(xué)生完成畢業(yè)設(shè)計。本次課程設(shè)計將要求、算法還有源程序單獨分開,給學(xué)生營造獨立思考問題的條件。在足夠理解要求和算法的前提下,充分了解學(xué)生的要求和算法,再設(shè)計自己的應(yīng)用。同時,我也獲得了很多寶貴的經(jīng)驗:1) 在設(shè)計之前,要確保對所設(shè)計的主題和內(nèi)容有一個系統(tǒng)的認(rèn)識,了解設(shè)計的主題和內(nèi)容包含哪些資源。2) 對于設(shè)計程序而言,在采用什么編程語言這方面并不是特別重要,核心在于思路要清晰和軟件流程圖要完整。所以,第一步是要搞清楚設(shè)計原理與思路,然后再畫出軟件流程圖,按這樣的步驟,設(shè)計起來就比較方便快捷了。2 系統(tǒng)總體設(shè)計2.1 設(shè)計要求作為最為經(jīng)典和最具有代表性的休閑小游戲之一的貪吃蛇,其玩法準(zhǔn)則是:玩家想要控制蛇移動的方向,必須熟練地掌握上、下、左、右四個方向鍵,在一個個的小方格上吃掉出現(xiàn)的食物。蛇每吃完一次食物后,蛇身變相應(yīng)地增長一節(jié),一節(jié)即為一個單位距離,蛇在游動時,碰到蛇身或者是屏幕框,都表示該游戲結(jié)束。42.2 系統(tǒng)設(shè)計方案2.2.1 硬件設(shè)計系統(tǒng)采用的硬件設(shè)備主要包括51系列單片機,8*8點陣屏等。本次課程設(shè)計單片機選擇的是由飛利浦公司生產(chǎn)的低功耗高性能的CMOS型8位單片機。之所以選擇它,是因為它擁有內(nèi)置的一次性可編程只讀存儲器的64K 字節(jié)的隨機存取數(shù)據(jù)存儲器(RAM)和1K 字節(jié)的隨機存取數(shù)據(jù)存儲器(RAM),它能夠滿足游戲?qū)Υ鎯臻g的要求。8*8點陣屏選擇的是ARK-SZ411288K,它能夠直接與CPU相連接。2.2.2 軟件設(shè)計軟件方面主要為匯編語言、C 語言、嵌入式操作系統(tǒng)。采用 C 語言編寫的程序能夠很容易地在不同類型的計算機之間進行移植 [1]。在以后的發(fā)展中,各類型號的單片機種類會進一步增加,而開發(fā)工具和過程會逐步趨向于統(tǒng)一,軟件和硬件差別會更加難以區(qū)分 [2]。本設(shè)計使用 uVision3 進行程序軟件編譯。只要看一下編譯后生成的匯編代碼,就能夠體會到 Keil C51 生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解 [3]。用 uVision3 軟件編寫程序時,由于 uVision3 一般只能修改語法上的錯誤,不好檢查算法上的問題,而且如果直接下到單片機里,會因為電路板的限制而使得調(diào)試不方便,所以,在這里,本設(shè)計選擇使用 Proteus 軟件進行電路的仿真。它運行與 Windows 操作系統(tǒng)上,可以繪制電路原理圖,仿真、分析各種模擬器件和集成電路,支持主流單片機系統(tǒng)和多種外圍芯片的仿真,提供軟件調(diào)試功能,支持第三方的軟件編譯和調(diào)試環(huán)境 [4]。3 系統(tǒng)硬件設(shè)計3.1 8*8LED 點陣的原理說明ARK-SZ411288K 是本次課程設(shè)計所選用的點陣顯示模塊。它是一個 8*8 的點陣顯示模塊,總共由 64 個發(fā)光二極管組成,且每個發(fā)光二極管都處于行線和列線的交點上。當(dāng)相對應(yīng)的某一列置 1 電平,某一行置 0 電平,則位置所對應(yīng)的二極管就變亮。值得一說的是,ARK-SZ411288K 能夠與 CPU 直接連接,再根據(jù)其引腳說明,將其各個引腳與相對應(yīng)的 I/O 口相連。 3.2 LED 陣列驅(qū)動電路至少需要 10~20mA 的電流才能正向地點亮一顆 LED,如果通過的電流不足夠大,那么 LED 所發(fā)出的光就比較暗。而無論是 89C51 單片機的 I/O 口,或是 TTL、CMOS 的輸出,高輸出電流并不是很高,才不過 1~2 毫安,故而,很難直接地對 LED 高態(tài)驅(qū)動。5在這種時候,我們就需要增加額外的輔助驅(qū)動電路,本次課程設(shè)計選用的是 74HC595,采用 74HC595 芯片來驅(qū)動 LED 可以有以下幾個優(yōu)點:速度快,功耗小,LED 的數(shù)量隨意。既能夠控制 LED 的共陰極顯示器,也可以控制 LED 的共陽極顯示器,同時,還可以通過軟件來控制 LED 的亮度,并且在需要的時候,能夠關(guān)斷顯示,從而降低功耗,還能夠隨時喚醒顯示。采用 74HC595 設(shè)計的電路,軟硬件設(shè)計都相對比較簡單,而且功耗較低,驅(qū)動能力較強,所占用的 I/O 口線較少,成本較低,是一種應(yīng)用十分靈活的設(shè)計方案。系統(tǒng)采用的硬件設(shè)備主要包括51系列單片機,8*8點陣屏等。51系列單片機采用了飛利浦(PHILIPS )公司生產(chǎn)的型號為 P87C51RD2的低功耗高性能的CMOS型8位單片機。選擇它是因為,它內(nèi)置了 64K bytes的OTP只讀程序存儲器(RAM)和1K bytes的隨機存取數(shù)據(jù)存儲器( RAM),能滿足游戲?qū)Υ鎯臻g的要求。另外配備了32個可編程的I/O端口,3個16位定時器 /計數(shù)器,一個7中斷源4優(yōu)先級嵌套中斷結(jié)構(gòu),一個全雙工串行通信口,片振蕩器及時鐘電路 [5]74HC595 里含有串/并出移位寄存器和三態(tài)輸出鎖存器。寄存器和鎖存器有著各自的時鐘輸入(SCLK 和 SLCK),它們有效電平都是上升沿。當(dāng) SCLK 由低電平跳向高電平時,串行輸入數(shù)據(jù)(SDA)移入寄存器;當(dāng) SLCK 由低電平跳變?yōu)楦唠娖綍r,鎖存器將寄存器的數(shù)據(jù)置入。清除端(CLR) 的低電平只對寄存器復(fù)位 (QS 為低電平),而對鎖存器無影響。當(dāng)輸出允許控制(EN)為高電平時, 并行輸出(Q0 ~Q7) 為高阻態(tài),而串行輸出(QS)不受影響。74HC595 最多需要 5 根控制線,即 SDA、SCLK、SLCK 、CLR 和 EN。其中,CLR 能夠直接接到高電平,并且用軟件可以實現(xiàn)寄存器的清零;若是不需要用軟件改變亮度,則 EN 可以直接接到低電平,使用硬件來改變亮度。將余的三根線與單片機的 I/O口相連,能夠控制 LED。數(shù)據(jù) SDA 口送入 74HC595,在每個 SCLK 的上升沿,SDA 口上的數(shù)據(jù)移入寄存器,在 SCLK 的第 9 個上升沿,數(shù)據(jù)開始從 QS 移出。如果把第二個 74HC595 的 SDA 和第一個 74HC595 的 QS 連接,數(shù)據(jù)移動到第二個 74HC595 中,按照此方法,逐次接下去,能夠接任意多個。所有的數(shù)據(jù)發(fā)送完畢后,給 SLCK 一個上升沿,將寄存器中的數(shù)據(jù)送入鎖存器中。如果 EN 為低電平,數(shù)據(jù)即從并口 Q0~Q7 輸出,把 Q0~Q7 與 LED 的 8段相接,LED 就可以實現(xiàn)顯示了。要想軟件改變 LED 的亮度,只需改變 EN 的占空比就行了 [6]。其中,點陣的亮度可以使用改變輸入電壓來改變 [7]。4 系統(tǒng)軟件設(shè)計4.1 系統(tǒng)主要模塊介紹貪吃蛇操作過程中有多種狀態(tài),采用宏定義,使各種狀態(tài)一目了然,思路清晰。同時再編寫代碼時,采用匈牙利命名規(guī)則命名宏,變量,函數(shù)名,方便閱讀修改 [8]。64.1.1 主函數(shù)模塊作為程序運行時縮影一般的存在,主函數(shù)是一個無限在循環(huán)的程序。它所需要完成的是對一系列硬件軟件的初始化,并且利用定時中斷來控制游戲的時鐘,還要調(diào)用其他模塊以完成按鍵的處理和蛇的運動。4.1.2 按鍵模塊按鍵模塊包括兩個部分:按鍵檢測模塊和按鍵處理模塊。按鍵檢測模塊初始化按鍵對應(yīng)的管腳,利用查詢方式檢測按鍵對應(yīng)的變量值改變。按鍵處理模塊針對不同狀態(tài)下,對按鍵做出不同的處理。4.1.3 蛇運動控制模塊該模塊負(fù)責(zé)控制蛇的運動和狀態(tài),包括在剛開始游戲時對蛇進行初始化,蛇運動時對蛇移動的處理,蛇吃掉出現(xiàn)的食物后的處理。4.2 主程序工作流程系統(tǒng)中的應(yīng)用軟件是根據(jù)系統(tǒng)功能要求設(shè)計的。按軟件的功能來分,可分為執(zhí)行軟件和監(jiān)控軟件。執(zhí)行軟件可以完成各種實質(zhì)性的功能,如測量、計算、顯示。打印、輸出、控制等;監(jiān)控軟件是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關(guān)系,在系統(tǒng)軟件中充當(dāng)組織調(diào)度角色。在軟件設(shè)計上,通常要考慮如下幾個方面問題:1.根據(jù)軟件的功能要求,將系統(tǒng)軟件分為幾個相對獨立的部分。整體結(jié)構(gòu)設(shè)計合理,明確,軟件開發(fā)簡單,還有合理的工作流程。2.每個功能程序要實現(xiàn)模塊化、子程序化。不僅方便調(diào)試,連接,也能方便移植和修改。3.編寫應(yīng)用軟件之前,要先繪制出程序流程圖。4.要合理分配系統(tǒng)資源。C 語言是一種結(jié)構(gòu)化的高級語言,其優(yōu)點是可讀性好,移植容易 [9],是普遍使用的一種計算機語言。具體的實施步驟為:1.明確控制要求,繪制電路原理圖。2.參考相關(guān)文獻(xiàn),檢查電路圖是否正確。3.根據(jù)電路原理圖焊接電路板,嘗試制作貪吃蛇模型。4.分析操作流程,繪制程序流程圖。5.編寫程序代碼,不斷改善。6.運用已學(xué)軟件,對程序進行初步調(diào)試。7.配合貪吃蛇硬件部分,并努力完善其功能,以達(dá)到設(shè)計要求。主程序工作流程如圖 1 所示:7L E D 初始化開始定時器初始化程序主體部分有中斷發(fā)生嗎 ? 調(diào)用中斷服務(wù)程序蛇是否碰壁或舌頭是否跟蛇身相碰游戲結(jié)束NNYY圖 1 貪吃蛇流程圖系統(tǒng)上電后,首先初始化 LED,然后初始化定時器,同時啟動定時器,再然后執(zhí)行程序主體邏輯,程序主體邏輯經(jīng)過一遍執(zhí)行后,立即檢查有無中斷發(fā)生。該游戲的中斷源有兩個,一個是定時器中斷驅(qū)動蛇自動向前,另一個是用戶通過控制按鍵來控制貪吃蛇移動的中斷,二者中任意一個中斷的發(fā)生都能夠使蛇的當(dāng)前狀態(tài)發(fā)生改變。如果沒有中斷產(chǎn)生,主程序則繼續(xù)判斷蛇身是否相撞或者蛇頭是否碰到主屏幕;只要滿足以上所說任意條件,則表示結(jié)束游戲,不然游戲繼續(xù)執(zhí)行主體循環(huán)。該程序的入口地址是 Main()函數(shù),從執(zhí)行程序的功能開始,將各個模塊串聯(lián)起來,以實現(xiàn)游戲的各種功能。首先完成軟件硬件的初始化任務(wù)然后進入一個循環(huán),反復(fù)檢測有無按鍵、處理按鍵、處理蛇運動、處理時鐘節(jié)拍這四件事情 [10]。84.3 游戲設(shè)計思想按設(shè)計要求可以得出,游戲的核心是解決 LED 顯示屏的顯示和蛇身的運動處理的問題。將貪吃蛇的每一節(jié)蛇身大小定義為一個單位矩陣,食物大小與一節(jié)蛇身大小相同,也是一個單位矩陣。當(dāng)蛇開始運動時,需要解決以下幾個問題:1.蛇身的運動處理。用戶每按下一個鍵,蛇身都將開始進行柔體運動。所謂的柔體運動,就是指蛇的運動并不與整條蛇的運動方向一致,而是指在每個時鐘到來時,由蛇頭帶動每一個點陣的方向向下一個點陣傳播,然后自己向新的方向運動一步。運動之后,下一個點陣就得到了上一個點陣的方向,然后按照上一個方向運動同樣的一步。因此,它能夠立即填補上一點的位置,如此類推。在實際設(shè)計蛇運動的時候,我們需要把貪吃蛇蛇尾的那個點陣給去掉,然后在蛇頭的新方向上放一個點陣。所以,一個函數(shù)的定義是用來更新一個點的坐標(biāo),只要確定蛇頭或蛇尾的坐標(biāo)還有其運動的方向,我們就可以調(diào)用此函數(shù)來更新蛇頭或蛇尾的坐標(biāo)。與此同時,調(diào)用有關(guān)的顯示函數(shù)來達(dá)到對蛇運動處理的效果。2.在吃到食物后對蛇的處理。蛇頭和食物坐標(biāo)相同時,則表示貪吃蛇吃到食物。如果吃到了食物,那么就在蛇頭的位置加上一個單位點陣,同時需要立即再更新下一個食物的坐標(biāo)。3.隨機放置新的食物。貪吃蛇吃掉食物后,我們通過更新食物的坐標(biāo)來產(chǎn)生新的食物。在放置食物時,我們需要調(diào)用一個判斷函數(shù)來判斷產(chǎn)生的新食物的坐標(biāo)與蛇身是否重疊,如果重疊了,那么則需要重新放置,然后再重新判斷,直到產(chǎn)生的新的食物和蛇身坐標(biāo)不相互重疊為止。4.死亡處理。蛇在運動時,如果蛇頭碰到顯示屏邊框或是蛇身,那就表示游戲結(jié)束了。4.4 LED 點陣初始化初始化 LED 點陣,就是把點陣內(nèi)所含有的全部信息清除,讓其沒有任何信息,內(nèi)部變空,然后在事先所指定的位置處顯示蛇的初始位置和食物的初始位置。初始化程序如下:void Init(){for (i = 3; i #define uchar unsigned char#define SNAKE 20 //最大長度#define TIME 50 //顯示延時時間#define SPEED 40 //速度控制//#define keyenable 1sbit keyenable=P3^6; //方向使能/*sbit keyx=P0^1; //左右sbit keyy=P0^2; //上下 *///sbit up=P0^0;sbit up=P3^1; //downsbit down=P3^3;sbit right=P3^4;sbit left=P3^2;uchar x[SNAKE+1];uchar y[SNAKE+1]; uchar time,n,i,e; //延時時間,當(dāng)前蛇長,通用循環(huán)變量,當(dāng)前速度char addx,addy; //位移偏移量/********************延時程序*********************/void delay(char MS){char us,usn;while(MS!=0){usn = 0;while(usn!=0){us=0xff;while (us!=0){us--;};usn--;}MS--;}}/*******************************************判斷碰撞*******************************************/bit knock(){bit k;k=0;if(x[1]7||y[1]7)k=1; //撞墻for(i=2;i1;i--){x[i]=x[i-1];y[i]=y[i-1];} //x[n-1]=x[2];y[n-1]=y[2];x[1]=x[2]+addx;y[1]=y[2]+addy; //移動}}}
收藏
編號:596319
類型:共享資源
大?。?span id="ievbyqtbdd" class="font-tahoma">9.63MB
格式:ZIP
上傳時間:2019-07-01
20
積分
- 關(guān) 鍵 詞:
-
電氣設(shè)計
自動化
論文
貪吃
游戲
設(shè)計
- 資源描述:
-
【電氣設(shè)計自動化論文】貪吃蛇游戲的設(shè)計,電氣設(shè)計,自動化,論文,貪吃,游戲,設(shè)計
展開閱讀全文
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請勿作他用。