RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于FPGA的貪吃蛇游戲設計

友晶FPGA ? 來源:友晶FPGA ? 2023-12-18 16:14 ? 次閱讀

Terasic

基于FPGA的貪吃蛇游戲設計之食物(蘋果)產(chǎn)生

DE10-Standard/DE1-SoC/DE2-115

食物產(chǎn)生模塊完成的任務是:每次初始化就給定一個食物坐標比如(24,10),然后蛇運動的過程中用蛇頭坐標跟食物坐標對比是否重合來判斷是否吃掉了食物,如果相同食物就被吃掉,然后由隨機數(shù)產(chǎn)生新的食物坐標。

單元劃分

蛇要吃掉的食物大小為16*16個像素(蛇頭大小也是16*16, 蛇身每一節(jié)大小也是16*16)。

顯示器分辨率是640*480,假設16*16算作一個單元,那么640*480可以看作是40*30個單元的一個長方形。這些單元的坐標范圍是[39:0],[29:0];去掉墻壁厚度(墻壁占用一個單元的厚度),食物可產(chǎn)生的坐標范圍為:[38:1],[28:1]。

02d982b4-9d7d-11ee-8b88-92fbcf53809c.png

代碼設計

1產(chǎn)生分數(shù)累加信號

當蛇頭坐標和食物坐標相同時,表示蛇吃掉一個食物,就將 add_cube 信號置1,然后產(chǎn)生新的食物坐標,當新的食物坐標產(chǎn)生以后,在時鐘的下一節(jié)拍下add_cube信號又被置0,等待下次坐標再次相同:

02e5ff76-9d7d-11ee-8b88-92fbcf53809c.png

2產(chǎn)生隨機數(shù)

這里用加法產(chǎn)生隨機數(shù)。

random_num寄存器沒有初始化,所以它的初始值是不確定的,然后隨著每次吃食物的時間不確定性,random_num+999就是一個非常具有隨機數(shù)特征的數(shù)。

0302d5ba-9d7d-11ee-8b88-92fbcf53809c.png

每當蛇吃掉一個食物,就要同時產(chǎn)生一個新的食物,游戲中采用隨機數(shù)高六位為食物x的坐標,低五位為食物y坐標。

生成食物坐標的代碼如下:

03069ae2-9d7d-11ee-8b88-92fbcf53809c.png0311985c-9d7d-11ee-8b88-92fbcf53809c.png

如果 apple_x滿足條件 random num[10:5]> 38(代表食物x坐標與顯示器最右邊邊框重合),那apple_x值就取 random num[10:5]- 25,如果apple_x不滿足條件random num[10:5]> 38,就看apple_x滿不滿足 random_num[10:5]==0(代表食物x坐標與顯示器最左邊邊框重合),如果apple_x滿足random_num[10:5]==0,apple_x就取1,否則apple_x就取random_num[10:5]。

apple_y 同理。

3完整代碼

apple_generate.v的完整代碼如下:

//食物(蘋果)產(chǎn)生控制模塊
//初始化給定一個食物坐標,輸入蛇頭坐標跟食物坐標對比來判斷是否吃掉食物,如果被吃掉,就產(chǎn)生新的蘋果坐標
module apple_generate(
 input clk, //時鐘25MHz
 input rst_n,//系統(tǒng)復位
 
 input [5:0]head_x,//蛇的頭部x軸坐標
 input [5:0]head_y,//蛇的頭部y軸坐標
 
 output reg [5:0]apple_x,//蘋果的x軸坐標
 output reg [4:0]apple_y,//蘋果的y軸坐標


 output reg add_cube//蛇吃掉一個蘋果標志
);


 reg [31:0]clk_cnt;
 reg [10:0]random_num;//寄存器沒有初始化
 
 always@(posedge clk)
  random_num <= random_num + 999; ?//用加法產(chǎn)生隨機數(shù) ?
 ? ?//隨機數(shù)高六位為食物x的坐標,低五位為蘋果Y坐標
 ?
 ?always@(posedge clk or negedge rst_n) begin
 ? ?if(!rst_n) begin
 ? ? ?clk_cnt <= 0;
 ? ? ?apple_x <= 24;
 ? ? ?apple_y <= 10;
 ? ? ?add_cube <= 0;
 ? ?end
 ? ?else begin
 ? ? ?if(apple_x == head_x && apple_y == head_y) begin//當蛇頭坐標和蘋果坐標一樣時,表示蛇吃掉一個蘋果
 ? ? ? ?add_cube <= 1;
 ? ? ? ?apple_x <= (random_num[10:5] > 38) ? (random_num[10:5] - 25) : (random_num[10:5] == 0) ? 1 : random_num[10:5];
    apple_y <= (random_num[4:0] > 28) ? (random_num[4:0] - 3) : (random_num[4:0] == 0) ? 1:random_num[4:0];
   end  //判斷隨機數(shù)是否超出頻幕坐標范圍 將隨機數(shù)轉換為下個蘋果的X Y坐標
    
    //如果 apple_x滿足條件 random num[10:5] > 38,那apple_x值就取 random num[10:5] - 25
    //如果apple_x不滿足條件random num[10:5] > 38,就看apple_x滿不滿足 random_num[10:5] == 0,
    //如果apple_x滿足random_num[10:5] == 0,apple_x就取1, 否則apple_x就取random_num[10:5]
    //random num[10:5] > 38是蘋果x坐標到顯示器最右邊(邊框)
    //random_num[10:5] == 0是蘋果x坐標到顯示器最左邊(邊框)
    //apple_y 同理
   else
    add_cube <= 0;
 ? ? ?end
 ? ?end
endmodule

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1629

    文章

    21729

    瀏覽量

    602977
  • 寄存器
    +關注

    關注

    31

    文章

    5336

    瀏覽量

    120230
  • 游戲
    +關注

    關注

    2

    文章

    742

    瀏覽量

    26312

原文標題:基于FPGA的貪吃蛇游戲設計(七)——食物(蘋果)的產(chǎn)生

文章出處:【微信號:友晶FPGA,微信公眾號:友晶FPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    貪吃蛇游戲

    編的簡單的貪吃蛇游戲
    發(fā)表于 05-05 16:40

    [熱]基于FPGA貪吃蛇游戲

    本帖最后由 eehome 于 2013-1-5 09:59 編輯 基于FPGA貪吃蛇游戲,大家有興趣的下載來看看~~
    發(fā)表于 08-20 09:49

    FPGA VGA 貪吃蛇游戲

    FPGAVGA貪吃蛇游戲 資料
    發(fā)表于 04-22 20:08

    貪吃蛇游戲

    貪吃蛇游戲的下載
    發(fā)表于 03-04 18:24

    貪吃蛇游戲的電路實現(xiàn)

    最近論壇好冷清,在此發(fā)一貼暖暖身,回到正題,大家都玩過“貪吃蛇游戲,用代碼實現(xiàn)該游戲想必難不倒大神,在網(wǎng)上也有一大堆針對該游戲的代碼實現(xiàn),如果擺脫代碼,用硬件來實現(xiàn)“
    發(fā)表于 11-19 17:52

    貪吃蛇游戲

    Labview制作貪吃蛇游戲,值得學習研究
    發(fā)表于 09-07 21:39

    C語言寫個貪吃蛇游戲

    C語言寫個貪吃蛇游戲 貪吃蛇是個非常經(jīng)典的游戲,用C語言來實現(xiàn)也是一個好玩的事情。這個游戲我寫完后放在知乎,竟然點贊的人數(shù)超級多。我覺
    發(fā)表于 04-10 10:44

    FPGA DEMO】Lab 9:貪吃蛇游戲

    ` 本帖最后由 zhangyue510 于 2021-7-30 16:32 編輯 項目名稱:貪吃蛇游戲具體要求:在Perf-V實現(xiàn)貪吃蛇游戲的運行。系統(tǒng)設計:
    發(fā)表于 07-30 15:53

    基于stm32的貪吃蛇游戲的設計資料分享

    指南者開發(fā)板上,使其能在觸摸屏上顯示,并且添加了暫停/繼續(xù)的觸摸按鍵以及簡單的游戲結束顯示,大體再現(xiàn)了貪吃蛇這款小游戲。一、主要功能上圖是整個顯示屏的布局以及對應功能。游戲界面是240
    發(fā)表于 02-21 07:27

    貪吃蛇游戲設計貪吃蛇收尾基本完成

    電子發(fā)燒友網(wǎng)站提供《貪吃蛇游戲設計貪吃蛇收尾基本完成.rar》資料免費下載
    發(fā)表于 03-24 23:06 ?3次下載

    貪吃蛇游戲(verilog)

    用Verilog編寫的貪吃蛇游戲,從別人那里搞的,希望對大家學習有幫助。
    發(fā)表于 08-19 15:57 ?51次下載

    貪吃蛇游戲java源代碼

    貪吃蛇游戲java源代碼
    發(fā)表于 12-27 17:56 ?9次下載

    基于LabVIEW的貪吃蛇游戲源代碼

    基于LabVIEW的貪吃蛇游戲源代碼
    發(fā)表于 04-22 09:27 ?74次下載

    micro:bit貪吃蛇游戲開源分享

    電子發(fā)燒友網(wǎng)站提供《micro:bit貪吃蛇游戲開源分享.zip》資料免費下載
    發(fā)表于 06-13 10:58 ?5次下載
    micro:bit<b class='flag-5'>貪吃蛇</b><b class='flag-5'>游戲</b>開源分享

    基于51單片機的貪吃蛇游戲設計

    基于51單片機的貪吃蛇游戲設計(仿真+實物)
    發(fā)表于 01-02 09:38 ?3次下載
    RM新时代网站-首页