• 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

貪吃蛇大作戰(zhàn),基于Basys3和FPGA設(shè)計(jì)的貪吃蛇小游戲設(shè)計(jì)資料

2017/07/26
46
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

程序源代碼.rar

共1個(gè)文件

現(xiàn)在小孩子玩的最多的玩具就是手機(jī)了,不禁感慨,我們小時(shí)候都是咋過來的,有個(gè)游戲機(jī),可以玩?zhèn)€貪吃蛇、俄羅斯方塊就不錯(cuò)了??梢宰约涸O(shè)計(jì)個(gè)貪吃蛇游戲玩玩,重溫童年的經(jīng)典,也讓現(xiàn)在小孩子知道,珍惜當(dāng)下美好的生活。

功能實(shí)現(xiàn)說明:
此游戲較為簡(jiǎn)單,沒有設(shè)置多余障礙物,只設(shè)置了四周的墻壁,貪食蛇所吃的蘋果隨機(jī)刷新,當(dāng)蛇裝上墻壁或者自己的身體,游戲結(jié)束。
此游戲使用五個(gè)按鍵,利用Basys3上的按鈕,四個(gè)方向鍵,一個(gè)重新開始游戲按鈕,一個(gè)操作開關(guān)。使用7位數(shù)碼管進(jìn)行計(jì)分,每吃到一個(gè)蘋果分?jǐn)?shù)+1。使用VGA顯示游戲界面。
DIY動(dòng)手指南:
Step1:材料準(zhǔn)備
硬件
Basys3開發(fā)板
VGA連接線及VGA顯示器一臺(tái)
軟件平臺(tái):Vivado2016.4
Step2:系統(tǒng)框架

系統(tǒng)主要由6部分組成,分別是按鍵輸入模塊、控制模塊、數(shù)據(jù)路徑模塊、隨機(jī)生成 模塊、VGA顯示模塊和數(shù)碼管顯示模塊。
Step3:程序設(shè)計(jì)

上圖是本程序的RTL級(jí)視圖。
下面我們對(duì)于各個(gè)模塊進(jìn)行分析。
1.鍵盤掃描
我們一共設(shè)置了五個(gè)按鍵,分別執(zhí)行up,down,left,right,restart這五個(gè)功能。
以u(píng)p_key_press為例,介紹消抖的算法。
在每個(gè)時(shí)鐘高電平時(shí)并行執(zhí)行以下兩條語(yǔ)句
up_key_press<=0;
up_key_last<=0;
當(dāng)有按鍵按下時(shí),每100ms(cnt=5_0000) last=up,last輸出比up滯后一個(gè)周期,若up_key_last==0&&up==1,則說明按鍵按下,press輸出置1。
2.控制模塊


當(dāng)打開開始開關(guān)并按下任意一個(gè)方向鍵時(shí),游戲開始,當(dāng)游戲結(jié)束時(shí)閃爍5下,重新開始游戲。
3.數(shù)據(jù)路徑模塊

cube_x,cube_y表示一整條蛇身體各節(jié)的格坐標(biāo)。is_exist有16位,即蛇體最長(zhǎng)為16*1格,每一位對(duì)應(yīng)一個(gè)格,1為該格顯示,0則不顯示(圖中虛框)。每吃下一個(gè)蘋果蛇長(zhǎng)度增加1,相應(yīng)exist位置變?yōu)?。
蛇每次移動(dòng),對(duì)應(yīng)的cube[x] = cube[x+1],即后一位的身子會(huì)移動(dòng)到前一位的位置,蛇頭根據(jù)按下的按鈕來判斷是撞到了墻,還是撞到了身子,還是移動(dòng)到了下一個(gè)位置。
當(dāng)蛇頭和蘋果重合時(shí),生成一個(gè)增加身長(zhǎng)的信號(hào),并在計(jì)數(shù)器上+1。
4.隨機(jī)生成模塊
采用偽隨機(jī)數(shù)的產(chǎn)生方法,比較笨拙。
每個(gè)時(shí)鐘周期random_num都在變,而我們吃下蘋果的時(shí)刻卻因走法、按鍵的時(shí)間等有所不同,所以不同時(shí)刻吃下蘋果后下一個(gè)蘋果出現(xiàn)的地方近似隨機(jī)~
5.VGA顯示模塊
使用640*480分辨率,需要分頻為25MHz的時(shí)鐘信號(hào)。
6.數(shù)碼管顯示模塊
當(dāng)有增長(zhǎng)身長(zhǎng)信號(hào)產(chǎn)生時(shí),分?jǐn)?shù)也對(duì)應(yīng)增加,數(shù)碼管動(dòng)態(tài)掃描顯示分?jǐn)?shù)。
Step4:演示

  • 程序源代碼.rar
    下載
    描述:源程序代碼

相關(guān)推薦