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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

算法的學(xué)習(xí)與貪吃蛇的實現(xiàn)框架

FPGA之家 ? 來源:FPGA之家 ? 作者:FPGA之家 ? 2022-09-05 15:07 ? 次閱讀

一. 簡介

將前面幾篇文章介紹的幾個小游戲整合在一起,加入了簡陋的數(shù)字時鐘和圖片顯示功能,合在一起作為一個小項目分享給大家,希望大家喜歡。只需要兩個外設(shè)即可實現(xiàn)----顯示屏和紅外控制模塊

二. 功能介紹

作為一個小項目來說,功能還是比較齊全的。 1. 上電開機后,會進行一段開機動畫的加載。 2. 然后是主界面的顯示,一共包括三個部分,時鐘、游戲和相冊。 3. 通過紅外按鍵進行選擇。 4. 時鐘 :一個簡單的時分秒的顯示(#^.^#)。 5. 游戲 :游戲下面又有一個界面顯示,用來選擇對應(yīng)的游戲,貪吃蛇,俄羅斯方塊和2048,都是一些常規(guī)的游戲。 6. 相冊:一個簡單的二值相冊(經(jīng)過邊緣檢測后的圖像)顯示,包括了我預(yù)先存儲的三張圖片。 7. 貪吃蛇:貪吃蛇部分有必要單獨拿出來說說,其中加入了算法部分,利用A*算法,可以自動尋找到食物的位置,并指導(dǎo)貪吃蛇的移動。算法的學(xué)習(xí)與貪吃蛇結(jié)合也是一個值得學(xué)習(xí)的點,同時也是一個難點。 以上就是本次小項目全部功能了。

三. 實現(xiàn)框架介紹

這次的設(shè)計為裸機程序,所以只能采用前后臺系統(tǒng)的方式來實現(xiàn)。

前臺為我們的應(yīng)用程序,后外為我們的中斷回調(diào)函數(shù),里面主要用來紅外模塊數(shù)據(jù)的接收,以及時間的產(chǎn)生(貪吃蛇的移動以及俄羅斯方塊的下落)。

前臺程序簡要介紹

以貪吃蛇部分為例,進入到貪吃蛇部分后,就是清屏將上一個部分的顯示清除掉,然后是貪吃蛇的初始化以及使能定時器4,用來記錄數(shù)據(jù),然后就是一個while循環(huán)了。根據(jù)不同的按鍵狀態(tài)調(diào)用不同的函數(shù)。退出這個部分也很簡單,修改當(dāng)前的狀態(tài),然后break就可以了。其他部分都是如此。

  else if(CurrMode == Snake)  //貪吃蛇游戲    {      LCDDMAFullOn(BackGround);      SnakeInit();      TIM_Cmd(TIM4,ENABLE);      while(1)      {        if(KEYState == KEYLEFT)          DirectionChange(MoveLeft);        else if(KEYState == KEYRIGHT)          DirectionChange(MoveRight);        else if(KEYState == KEYUP)          DirectionChange(MoveUp);        else if(KEYState == KEYDOWN)          DirectionChange(MoveDown);        else if(KEYState == KEYRETURN)        {          CurrIndex = 0;          SnakeDestory();          TIM_Cmd(TIM4,DISABLE);          CurrMode = Main;          break;        }      }    }

2. 后臺程序簡要介紹

本次主要用到了兩個后臺程序,一個是紅外數(shù)據(jù)的接收

void EXTI0_IRQHandler(void){  if(EXTI_GetITStatus(EXTI_Line0) != RESET)  {    uint8_t data;    data = InfraredDataRecv();    if(data == InfraredLeft)        KEYState = KEYLEFT;    else if(data == InfraredRight)        KEYState = KEYRIGHT;    else if(data == InfraredUp)        KEYState = KEYUP;    else if(data == InfraredDown)        KEYState = KEYDOWN;    else if(data == InfraredReturn)        KEYState = KEYRETURN;    delay_ms(10);    /*清除標(biāo)志位 */    EXTI_ClearITPendingBit(EXTI_Line0);  }}
另外一個是定時器中斷,其作用可以看注釋

void TIM4_IRQHandler(void){    if(TIM_GetITStatus(TIM4,TIM_IT_Update) == SET)   //判斷是否發(fā)生中斷    {
       if(CurrMode == Snake)SnakeGame();//蛇的移動        else if(CurrMode == Tetris)        {            TetrisFlag = 1;   //俄羅斯方塊下落標(biāo)志        }        else if(CurrMode == Clock)        {DClockFlag=1;//數(shù)字時鐘加一標(biāo)志        }       TIM_ClearITPendingBit(TIM4,TIM_IT_Update);    //清除中斷標(biāo)識    }}
審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 框架
    +關(guān)注

    關(guān)注

    0

    文章

    397

    瀏覽量

    17359
  • 程序
    +關(guān)注

    關(guān)注

    115

    文章

    3743

    瀏覽量

    80661
  • 數(shù)字時鐘
    +關(guān)注

    關(guān)注

    2

    文章

    149

    瀏覽量

    20286

原文標(biāo)題:STM32小項目分享

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    貪吃蛇

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

    貪吃蛇游戲

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

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

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

    貪吃蛇游戲

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

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

    的理解,編寫程序實現(xiàn)貪吃蛇的有效控制;(2)通過對51單片機硬件的學(xué)習(xí),學(xué)會運用面包板,獨立按鍵、點陣屏等,完成對完整電路的搭建過程;(3)通過對Proteus仿真軟件的學(xué)習(xí),
    發(fā)表于 07-16 06:48

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

    1.簡介本設(shè)計為一款貪吃蛇游戲,顯示器采用8*8點陣,主控制器采用51單片機,并通過按鍵實現(xiàn)對游戲的操作。2.貪吃蛇算法介紹吃游戲
    發(fā)表于 07-21 06:21

    【FPGA DEMO】Lab 9:貪吃蛇小游戲

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

    貪吃蛇游戲設(shè)計貪吃蛇收尾基本完成

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

    C語言教程之貪吃蛇游戲的問題

    C語言教程之貪吃蛇游戲的問題,很好的C語言資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-25 17:07 ?0次下載

    基于labview制作的貪吃蛇

    基于labview制作的貪吃蛇,適合新手學(xué)習(xí)和研究。
    發(fā)表于 05-09 14:36 ?35次下載

    貪吃蛇游戲(verilog)

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

    貪吃蛇(完美版)

    單片機貪吃蛇
    發(fā)表于 12-20 23:00 ?0次下載

    貪吃蛇開發(fā)

    貪吃蛇的軟硬件開發(fā)流程
    發(fā)表于 04-10 08:53 ?0次下載

    貪吃蛇游戲java源代碼

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

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

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