貪食蛇遊戲設計

2023-01-26 04:36:04 字數 5231 閱讀 1811

《電路設計與**》結課**

——基於8*8點陣貪吃蛇遊戲的設計

學院:資訊工程學院

專業:電腦科學與技術

班級:計算機18-4班

姓名:徐昇陽

學號:5011214402

指導老師:孟洪兵

8*8點陣貪吃蛇遊戲

8*8點陣貪吃蛇遊戲基於at89c51微控制器與8*8點陣的貪吃蛇遊戲機開發。本設計利用微控制器把乙個計算機系統做在一塊大規模的積體電路晶元上,實現資訊採集與處理。利用採用8*8共陽綠色點陣顯示屏,通過燈珠相連成串來顯示貪食蛇的遊戲畫面。

通過keilc51軟體程式設計,利用c語言程式編寫貪食蛇執行的程式,實現貪食蛇上移,下移,左移,右移,動態流動顯示。貪食蛇在點陣屏中用微控制器p0口和p2口驅動led點陣晶元塊,實現燈珠的顯示,以此用來達到貪食蛇移動的效果。led點陣屏由發光二極體組成,以燈珠亮滅來顯示程式的運**況。

關鍵詞:微控制器 8*8點陣程式設計驅動

一引言 1

二製作貪食蛇的基本理論知識 1

2.1.硬體設計 1

2.1.1 8*8led點陣的原理說明 2

2.1.2 8**點陣的功能說明 2

2.1.3微控制器工作原理說明 3

2.1.4 led點陣驅動電路 3

2.2程式設計說明 4

2.2.1主程式工作流程 4

2.2.2 點陣led初始化 5

2.2.3貪吃蛇的移動 5

2.2.4豆子的隨機出現 5

三貪吃蛇的除錯及** 5

3.1貪吃蛇的除錯 5

3.2**注意事項 6

四設計總結 6

參考文獻 7

附錄a 8

附錄b 9

貪吃蛇是一款經典的小遊戲。玩家使用方向鍵操控一條長長的蛇不斷吞下豆子,同時蛇身隨著吞下的豆子不斷變長,當蛇頭撞到蛇身或障壁時遊戲結束。貪吃蛇最初為人們所知的是諾基亞手機附帶的乙個小遊戲,它伴隨著諾基亞手機走向世界。

玩「貪食蛇遊戲」,難度最大的不是蛇長得很長的時候,而是開始。那個時候蛇身很短,看上去難度不大,卻最容易死掉,因為把玩一條小短蛇讓人容易走神,失去耐心。由於難度小,你會不知不覺加快調整方向的速度,其實是在遊走自如的時候蛇身加長了,你卻沒有意識到危險,在你最得意洋洋的一刻突然死亡。

貪食蛇是乙個悲劇性的遊戲。許多電子遊戲都是打通關打到底,遊戲操作者以勝利而告終。而貪食蛇的結局卻是死亡。

不管你玩得多麼純熟,手藝多麼高超,你最終聽到的都是小蛇那一聲慘叫。當手機上的小蛇越長越長,積分越來越高的時候,死亡也就越來越近。那時候忙的不是為了吃豆子長身體,而是為了避免撞牆。

led顯示屏經歷了從單色,雙色**顯示屏到現在的全彩***顯示屏的發展過程,自20世紀八十年代開始,led顯示屏的應用領域已經遍布交通、電信、教育、**、廣告宣傳等各方面。將proteus與微控制器技術結合起來,可以很好的做乙個貪食蛇模型,從而實現兒時的乙個小夢想。微控制器技術與proteus的結合,可以為現代社會創造很多模型,並且去在現實中實現,可以達到減少實驗成本,造福人類社會

二製作貪食蛇的基本理論知識

2.1.硬體設計

2.1.1 8*8led點陣的原理說明

本設計採用的點陣顯示模組是其原理結構圖如圖1所示。顯示模組是8*8點陣的顯示模組,從圖1中可以看出,8*8點陣共需要64個發光二極體組成,且每個發光二極體是放置在行線和列線的交叉點上,發光二極體的核心部分是由p型半導體和n型半導體組成的晶元,在p型半導體和n型半導體之間有乙個過渡層,稱為p-n結。在某些半導體材料的pn結中,注入的少數載流子與多數載流子復合時會把多餘的能量以光的形式釋放出來,從而把電能直接轉換為光能。

pn結加反向電壓,少數載流子難以注入,故不發光。這種利用注入式電致發光原理製作的二極體叫發光二極體,通稱led可與cpu直接連線,根據引腳說明,將其各個引腳與相應的i/o口連線。在proteus 8.

0中8*8的點陣總共有四種顏色,分別為matrix-8*8-green,matrix-8*8-blue,matrix-8*8-orang,matrix-8*8-red紅色的為上列選下行選;其它顏色的為上行選下列選。而所有的點陣都是高電平選中列,低電平選中行。也就是說如果某乙個點所處的行訊號為低,列訊號為高,則該點被點亮,這個結論是我們程式設計的基礎。

圖1 8*8led點陣的原理圖

2.1.2 8*8點陣功能說明

點陣模組的功能就是,通過與之連線的微控制器最小系統傳輸的程式命令顯示相應的漢字、字母以及符號。由於是8*8點陣屏設計,需要埠16個,可採用靜態顯示模式,用p0口和p2口驅動led點陣晶元塊,通過keilc51軟體程式設計,即可實現漢字的顯示,並可上移,下移,左移,右移,動態流動顯示,以此用來達到貪食蛇移動的效果。 led點陣屏通過led(發光二極體)組成,以燈珠亮滅來顯示程式的運**況,是模組化的顯示元件,本設計採用8*8共陽綠色點陣顯示屏,通過燈珠相連成串來顯示貪食蛇的遊戲畫面。

點陣led一般採用掃瞄式顯示,實際運用分為三種方式:

(1)點掃瞄;

(2)行掃瞄;

(3) 列掃瞄。

若使用第一種方式,其掃瞄頻率必須大於16×64=1024hz,週期小於1ms即可。若使用第二和第三種方式,則頻率必須大於16×8=128hz,週期小於7.8ms即可符合視覺暫留要求。

此外一次驅動一列或一行(8顆led)時需外加驅動電路提高電流,否則led亮度會不足。

2.1.3 微控制器工作原理說明

(1)能夠通過at89c51對8*8點陣led的顯示進行控制。要求完成主程式的設計及對應的子程式,綜合運用微控制器和電子電路相關知識,實現本次設計。

(2)利用微控制器i/o口或以擴充套件鎖存器的方式控制點陣顯示。將微控制器能夠以串列埠的方式與8*8點陣屏進行連線,通過點陣屏平台來對要顯示的遊戲內容進行輸入轉碼設計不同的顯示方式等操作。

(3)要求在目測條件下led顯示屏各點亮度均勻、充足,顯示遊戲內容應穩定、清晰無花屏亂碼現象。

2.1.4 led點陣驅動電路

整個電路的供電由usb電源提供,利用我們的電腦主機usb介面可以輸出+5v電壓,方便我們在實驗室除錯。正向點亮一顆led,至少也得10~20毫安,若電流不夠大,則led不夠亮。而我選的是at89c51的輸入/輸出口,無論是是ttl、cmos的輸出端,其高態輸出電流都可以很高,很容易滿足led,因此,可以直接高態驅動led。

這時候就不需要額外的驅動電路,本設計採用的at89c51對8*8點陣led的顯示進行控制:速度較快,功耗較小,led的數目多少隨意,既可以控制共陰極的led顯示器,也可以控制共陽極的led顯示器,可以軟體控制led的亮度,還可以在必要的時候關斷顯示 (資料保留),以減小功耗,並可隨時喚醒顯示。用它設計的電路,不僅軟硬體設計簡單,而且功耗低,驅動能力強,占用的i/o口線較少,是一種造價低廉,應用靈活的設計方案。

2.2.程式設計

2.2.1主程式工作流程

主程式工作流程如圖3所示,系統上電後首先對led進行初始化,接著對微控制器中定時器初始化,並啟動定時器,接著執行程式主體邏輯,程式主體邏輯執行一遍後檢查是否有中斷發生。中斷源有兩個,乙個是驅動貪吃蛇自動前行的定時中斷,另乙個是使用者控制貪吃蛇移動方向的鍵盤中斷,任意中斷的到來都將改變貪吃蛇的當前狀態。若當前沒有中斷發生,主程式繼續判斷蛇頭是否碰壁或頭尾相撞,若是,結束遊戲,否則繼續執行程式主體迴圈。

圖3 主程式工作流程

2.2.2 led點陣初始化

對點陣初始化,先把點陣所有的資訊清空,讓其不顯示任何資訊,再在指定的位置顯示蛇所處的最初位置和第乙個豆子的位置。初始化程式如下:

voidinit()

2.2.3 貪吃蛇的移動

當蛇沒有吃到任何豆子時,每次步進蛇頭的將要到的下乙個led燈點亮,而蛇尾那個led燈會滅掉,程式設計時只要將蛇尾那點位置的值傳給蛇頭下乙個位置的值,再改變蛇尾的值即可。而蛇頭下乙個位置根據蛇頭和偏移量來確定,每次上下左右按鍵決定了蛇步進的偏移量,只要將蛇頭的位置加上偏移量的值即得到新的蛇頭位置。當蛇頭碰到四周的牆壁或者碰到自己的身體,小蛇就立即斃命並結束遊戲。

2.2.4 豆子的隨機出現

豆子的出現是一種隨機行為,所以必須做乙個隨機數,而且豆子出現的位置不能與蛇的位置相同,也不能超出牆外,否則就要重置豆子。這裡使用程式中的定時計數器的低八位 tl0的數值,由於tl0不斷變化,不同的時間點數值不同,我這裡使用的是c語言裡的檔案庫,使用裡面的隨機函式srand(),先利用srand(tl0)獲得tl0的數值,再利用兩次rand()%8分別得到豆子出現的橫縱座標的位置。

3.1貪吃蛇的除錯

程式軟體編譯器使用uvision4。在用uvision4編寫微控制器程式時,因uvision4往往只能修改語法上的錯誤,對於演算法上的問題不好檢查,而直接下到微控制器裡又受電路板的限制而不方便除錯,因此這裡使用proteus進行電路**。該軟體具有模擬電路**、數位電路**、微控制器及其外圍電路組成的系統**、rs232動態**、i2c偵錯程式、spi偵錯程式、鍵盤和lcd系統**的功能,同時有各種虛擬儀器,如示波器、邏輯分析儀、訊號發生器等。

先在proteus上繪製硬體電路,電路設計完成後就可以進行**。先雙擊微控制器,把用uvision4編譯生成的hex檔案指定為**檔案,點選ok鍵即可進行**。當出現analyser errors時,表示電路有錯誤,列表中說明了具體的錯誤,必須要先排錯才可以進行**.

1.**前要檢查電路是否完整。

2.嚴禁在系統連錯的情況下**。

3.在除錯過程中發現有錯誤,應立即終止**,認真檢查電路找出原因,才可再次**。

4. 在除錯過程中如有發現時間變化引數很大,應認真找出原因,檢視電路設計是否合理。

雖然本設計主要使用了一塊8*8點陣led點陣和乙個at89c51微控制器,電路簡單,但是已經包涵了led顯示屏的電路基本原理及基本程式和微控制器的程式在實際中的應用,在設計的過程中應該使顯示穩定、清晰無串擾。本系統具有硬體少,結構簡單,容易實現,效能穩定可靠,成本低等特點。

在此次設計中通過查閱大量的相關資料,詳細了解了led的發光原理和led顯示屏的原理,明確了研究目標。深刻的了解微控制器在生活中的應用,微控制器的應用大到衛星、飛彈,小到洗衣機、微波爐,都有它們的蹤影。在自動控制領域很難找到沒有使用微控制器的。

通過這次結課設計,重新複習並進一步學習了at89c51微控制器;熟練掌握了word軟體的使用。進一步提高了自己在實際設計過程中研究問題、發現問題、解決問題的能力。但是從中也存在不足之處:

對知識的積累還不夠,有些問題自己不能夠獨立解決,對操作還要進一步熟練,只有這樣才能讓自己在不斷的學習中提高自己。通過這一學期的學習我學會了用proteus這個軟體設計設計電路圖,proteus和keil c51 編譯環境μvision4是本專業學生必學的兩個應用軟體,在以後的學習中會經常用到,對我以後學習打下了基礎。在結課設計過程中,我遇到了一些問題,在老師的幫助下,通過查詢資料和結合平時學到的知識,問題得到了解決,這是對我分析和解決問題的能力的一次有效檢驗,也是對我學習的很好的檢驗。

貪食蛇課程設計課題報告

目錄一 設計要求 2 二 設計的作用 目的 2 三.課題分析 2 1 貪吃蛇遊戲功能分析 2 2 遊戲介面分析 3 3 設計思路分析 3 四 設計的具體實現 3 1 系統組成模組結構及功能 3 1 函式定義 3 2 主函式main 4 3 畫介面函式drawk 5 4 遊戲具體過程函式gamepla...

關於貪食色遊戲的流程

關於遊戲的介紹 貪食蛇遊戲是一條不停游動的蛇不斷的捕食來達到自身的增長,但是若蛇碰到自身的身體或者碰到了任何障礙物,則遊戲結束。在該篇文章中,我並不討論遊戲的規則,而只是實現乙個游動的蛇。通過該實現來看關於物件導向的設計。尋找規律,建立物件模型 首先從物理的角度來分析蛇得運動規律。它是蠕動的,像水一...

貪吃蛇設計報告

摘要貪吃蛇遊戲作為一款簡單遊戲,是手機遊戲的代表,在十多年前風靡全世界,時至今日,貪吃蛇遊戲任然活躍的網路的各個角落。本次編寫的便是一款經典的貪吃蛇遊戲,任務確定為實現貪吃蛇遊戲過程。作為遊戲的組成,通過必要的圖形,文字介面來引導遊戲者參與到這款遊戲中,更有效的吸引遊戲者的興趣,為了拓展遊戲者對高分...