<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

基于FPGA的貪吃蛇游戲設計

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

Terasic

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

DE10-Standard/DE1-SoC/DE2-115

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

單元劃分

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

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

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

代碼設計

1產生分數累加信號

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

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

2產生隨機數

這里用加法產生隨機數。

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

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

每當蛇吃掉一個食物,就要同時產生一個新的食物,游戲中采用隨機數高六位為食物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的完整代碼如下:

//食物(蘋果)產生控制模塊
//初始化給定一個食物坐標,輸入蛇頭坐標跟食物坐標對比來判斷是否吃掉食物,如果被吃掉,就產生新的蘋果坐標
module apple_generate(
 input clk, //時鐘25MHz
 input rst_n,//系統復位
 
 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; ?//用加法產生隨機數 ?
 ? ?//隨機數高六位為食物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  //判斷隨機數是否超出頻幕坐標范圍 將隨機數轉換為下個蘋果的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

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

    關注

    1608

    文章

    21367

    瀏覽量

    594510
  • 寄存器
    +關注

    關注

    30

    文章

    5163

    瀏覽量

    118113
  • 游戲
    +關注

    關注

    2

    文章

    700

    瀏覽量

    26064

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

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

收藏 人收藏

    評論

    相關推薦

    貪吃蛇游戲

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

    [熱]基于FPGA貪吃蛇游戲

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

    FPGA VGA 貪吃蛇游戲

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

    貪吃蛇

    新手參考資料制作的貪吃蛇游戲,有很多不足,撞自己身體實現不了,還有游戲結束的Game Over !實現不了,求大神指導
    發表于 04-11 13:30

    貪吃蛇游戲

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

    基于51單片機c語言的貪吃蛇游戲

    基于51單片機的C語言的貪吃蛇游戲仿真
    發表于 11-25 21:05

    貪吃蛇游戲的電路實現

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

    【教學基地】制作貪吃蛇游戲(底層支持部分)

    [tr=transparent]【教學基地006】制作貪吃蛇游戲(底層支持部分)大家尾部提供源文件下載,鍵盤上下左右控制移動,本節要點:1.貪吃蛇游戲繪制數組2.蛇頭移動3.制作
    發表于 05-16 13:11

    貪吃蛇游戲

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

    C語言寫個貪吃蛇游戲

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

    基于51單片機的貪吃蛇游戲設計 精選資料分享

    的理解,編寫程序實現對貪吃蛇的有效控制;(2)通過對51單片機硬件的學習,學會運用面包板,獨立按鍵、點陣屏等,完成對完整電路的搭建過程;(3)通過對Proteus仿真軟件的學習,實現基于STC89C52單片機的8*8點陣貪吃蛇的硬件電路仿真。二. 實驗介紹
    發表于 07-16 06:48

    FPGA DEMO】Lab 9:貪吃蛇游戲

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

    如何利用STM32制作貪吃蛇和推箱子游戲?

    如何利用STM32制作貪吃蛇和推箱子游戲?
    發表于 09-27 08:07

    怎么實現基于51單片機的貪吃蛇游戲的設計?

    怎么實現基于51單片機的貪吃蛇游戲的設計?
    發表于 11-04 07:07

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

    指南者開發板上,使其能在觸摸屏上顯示,并且添加了暫停/繼續的觸摸按鍵以及簡單的游戲結束顯示,大體再現了貪吃蛇這款小游戲。一、主要功能上圖是整個顯示屏的布局以及對應功能。游戲界面是240
    發表于 02-21 07:27
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>