RM新时代网站-首页

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

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

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

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

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

一. 簡(jiǎn)介

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

二. 功能介紹

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

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

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

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

前臺(tái)程序簡(jiǎn)要介紹

以貪吃蛇部分為例,進(jìn)入到貪吃蛇部分后,就是清屏將上一個(gè)部分的顯示清除掉,然后是貪吃蛇的初始化以及使能定時(shí)器4,用來記錄數(shù)據(jù),然后就是一個(gè)while循環(huán)了。根據(jù)不同的按鍵狀態(tài)調(diào)用不同的函數(shù)。退出這個(gè)部分也很簡(jiǎn)單,修改當(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. 后臺(tái)程序簡(jiǎn)要介紹

本次主要用到了兩個(gè)后臺(tái)程序,一個(gè)是紅外數(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);  }}
另外一個(gè)是定時(shí)器中斷,其作用可以看注釋

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

    關(guān)注

    0

    文章

    403

    瀏覽量

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

    關(guān)注

    117

    文章

    3785

    瀏覽量

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

    關(guān)注

    2

    文章

    150

    瀏覽量

    20332

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    貪吃蛇

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

    貪吃蛇游戲

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

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

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

    貪吃蛇游戲

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

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

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

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

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

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

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

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

    電子發(fā)燒友網(wǎng)站提供《貪吃蛇游戲設(shè)計(jì)貪吃蛇收尾基本完成.rar》資料免費(fèi)下載
    發(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 ?36次下載

    貪吃蛇游戲(verilog)

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

    貪吃蛇(完美版)

    單片機(jī)貪吃蛇
    發(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次下載
    RM新时代网站-首页