0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

算法的学习与贪吃蛇的实现框架

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-09-05 15:07 次阅读

一. 简介

将前面几篇文章介绍的几个小游戏整合在一起,加入了简陋的数字时钟和图片显示功能,合在一起作为一个小项目分享给大家,希望大家喜欢。只需要两个外设即可实现----显示屏和红外控制模块

二. 功能介绍

作为一个小项目来说,功能还是比较齐全的。 1. 上电开机后,会进行一段开机动画的加载。 2. 然后是主界面的显示,一共包括三个部分,时钟、游戏和相册。 3. 通过红外按键进行选择。 4. 时钟 :一个简单的时分秒的显示(#^.^#)。 5. 游戏 :游戏下面又有一个界面显示,用来选择对应的游戏,贪吃蛇,俄罗斯方块和2048,都是一些常规的游戏。 6. 相册:一个简单的二值相册(经过边缘检测后的图像)显示,包括了我预先存储的三张图片。 7. 贪吃蛇:贪吃蛇部分有必要单独拿出来说说,其中加入了算法部分,利用A*算法,可以自动寻找到食物的位置,并指导贪吃蛇的移动。算法的学习与贪吃蛇结合也是一个值得学习的点,同时也是一个难点。 以上就是本次小项目全部功能了。

三. 实现框架介绍

这次的设计为裸机程序,所以只能采用前后台系统的方式来实现。

前台为我们的应用程序,后外为我们的中断回调函数,里面主要用来红外模块数据的接收,以及时间的产生(贪吃蛇的移动以及俄罗斯方块的下落)。

前台程序简要介绍

以贪吃蛇部分为例,进入到贪吃蛇部分后,就是清屏将上一个部分的显示清除掉,然后是贪吃蛇的初始化以及使能定时器4,用来记录数据,然后就是一个while循环了。根据不同的按键状态调用不同的函数。退出这个部分也很简单,修改当前的状态,然后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. 后台程序简要介绍

本次主要用到了两个后台程序,一个是红外数据的接收

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);    /*清除标志位 */    EXTI_ClearITPendingBit(EXTI_Line0);  }}
另外一个是定时器中断,其作用可以看注释

void TIM4_IRQHandler(void){    if(TIM_GetITStatus(TIM4,TIM_IT_Update) == SET)   //判断是否发生中断    {
       if(CurrMode == Snake)SnakeGame();//蛇的移动        else if(CurrMode == Tetris)        {            TetrisFlag = 1;   //俄罗斯方块下落标志        }        else if(CurrMode == Clock)        {DClockFlag=1;//数字时钟加一标志        }       TIM_ClearITPendingBit(TIM4,TIM_IT_Update);    //清除中断标识    }}
审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 框架
    +关注

    关注

    0

    文章

    403

    浏览量

    17559
  • 程序
    +关注

    关注

    117

    文章

    3798

    浏览量

    81500
  • 数字时钟
    +关注

    关注

    2

    文章

    151

    浏览量

    20462

原文标题:STM32小项目分享

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    贪吃蛇

    新手参考资料制作的贪吃蛇游戏,有很多不足,撞自己身体实现不了,还有游戏结束的Game Over !实现不了,求大神指导
    发表于 04-11 13:30

    贪吃蛇游戏

    贪吃蛇游戏的下载
    发表于 03-04 18:24

    贪吃蛇游戏的电路实现

    最近论坛好冷清,在此发一贴暖暖身,回到正题,大家都玩过“贪吃蛇”游戏,用代码实现该游戏想必难不倒大神,在网上也有一大堆针对该游戏的代码实现,如果摆脱代码,用硬件来实现
    发表于 11-19 17:52

    贪吃蛇游戏

    Labview制作贪吃蛇游戏,值得学习研究
    发表于 09-07 21:39

    基于51单片机的贪吃蛇游戏设计 精选资料分享

    的理解,编写程序实现贪吃蛇的有效控制;(2)通过对51单片机硬件的学习,学会运用面包板,独立按键、点阵屏等,完成对完整电路的搭建过程;(3)通过对Proteus仿真软件的学习
    发表于 07-16 06:48

    基于51单片机的贪吃蛇游戏 精选资料分享

    1.简介本设计为一款贪吃蛇游戏,显示器采用8*8点阵,主控制器采用51单片机,并通过按键实现对游戏的操作。2.贪吃蛇算法介绍吃游戏
    发表于 07-21 06:21

    【FPGA DEMO】Lab 9:贪吃蛇小游戏

    ` 本帖最后由 zhangyue510 于 2021-7-30 16:32 编辑 项目名称:贪吃蛇小游戏具体要求:在Perf-V实现贪吃蛇小游戏的运行。系统设计:贪吃蛇是一款经典游
    发表于 07-30 15:53

    贪吃蛇游戏设计贪吃蛇收尾基本完成

    电子发烧友网站提供《贪吃蛇游戏设计贪吃蛇收尾基本完成.rar》资料免费下载
    发表于 03-24 23:06 4次下载

    C语言教程之贪吃蛇游戏的问题

    C语言教程之贪吃蛇游戏的问题,很好的C语言资料,快来学习吧。
    发表于 04-25 17:07 0次下载

    基于labview制作的贪吃蛇

    基于labview制作的贪吃蛇,适合新手学习和研究。
    发表于 05-09 14:36 36次下载

    贪吃蛇游戏(verilog)

    用Verilog编写的贪吃蛇小游戏,从别人那里搞的,希望对大家学习有帮助。
    发表于 08-19 15:57 51次下载

    贪吃蛇(完美版)

    单片机贪吃蛇
    发表于 12-20 23:00 0次下载

    贪吃蛇开发

    贪吃蛇的软硬件开发流程
    发表于 04-10 08:53 0次下载

    贪吃蛇游戏java源代码

    贪吃蛇游戏java源代码
    发表于 12-27 17:56 9次下载

    基于LabVIEW的贪吃蛇游戏源代码

    基于LabVIEW的贪吃蛇游戏源代码
    发表于 04-22 09:27 74次下载