4669|10

282

帖子

2

TA的资源

一粒金砂(高级)

楼主
 

【GD32E231 DIY大赛】贪吃蛇小游戏 [复制链接]

 
本帖最后由 hehung 于 2019-5-25 15:37 编辑

花了2个周末,终于调试完了。这是第一次在单片机上尝试写一个小游戏,效果还行,只不过我是用的屏幕有点太小了,看得眼睛疼,玩起来费劲。
1.【作品介绍】    该作品主要完成了贪吃蛇小游戏,和以前在非智能机上外的那种是差不多的,主要功能就是可以调节速度,控制贪吃蛇尽可能多吃点小食物。在复位之后首先会显示EEWorld的图片,之后显示兆易创新的图标,最后显示我自己的logo。之后就进入到游戏中了。在游戏的主界面提供了 开始游戏 和 速度调节 这两个选项,在速度调节中有1-9这九种速度供选择,数字越大,速度越大。整个作品设计只用了三个按键(GD32E231板子上面的一个KEY1和我的stm32板子上面的2个KEY2,KEY3),在游戏中,KEY1可以用来暂停游戏,KEY2和KEY3用来控制贪吃蛇方向,KEY2控制蛇顺时针方向转动,KEY3控制蛇你是正方向转动。下面会详细介绍。


    看这个原理图是不是太简单了,溜了


2.【使用器件】
    游戏中使用了LED和OLED,以及3个按键
    连接:
          LED1 -- 板载LED1
          KEY1 -- 板载KEY(wake-up key)
          KEY2 -- 外接按键,PA4
          KEY3 -- 外接按键,PA5
          OLED -- IIC操作,(SCL--PB10,SDA--PB11)
          蜂鸣器 -- 本来打算使用的,程序中有驱动,但是最后想着还是取消了,听着有点吵,也没有必要。

3.【软件功能介绍】
    软件使用了定时器2,使用定时器2来获取2ms的定时任务,之后我的程序都是运行在这个2ms的任务中的,任务分为了2ms任务,50ms任务,500ms任务,1s任务(没用到)。

    2ms任务 --》 用来检测按键是否按下,并进行消抖(在程序中没有延时,都是使用这种小系统来实现的,所以不会造成按下按键之后导致其他功能不能使用的情况);
                        设置随机函数的种子(C语言的随机函数必须要种子数,随机数种子没2ms会变化一次,这样可以做到充分的随机数的产生),随机数是用来产生贪吃蛇的小食物用的。
         

     50ms任务 --》 用来控制贪吃蛇的移动,1-9这几种等级的移动速度都是在这个里面做的。
                           还用来控制OLED的显示,集中显示界面都在这里面完成。
     


    500ms任务 --》 用来控制LED1闪烁,表明程序运行正常,其实没什么实际用处()。
   


    KEY1的作用:
           1.暂停和开始游戏,游戏进入的时候总是暂停,需要短按来开始。
           2.主界面的选项切换,按下之后切选选项

              3.长按1-2秒选择选中选项,如上图,长按2秒以内大于短按时间的话会进入游戏。
              4.退出到主界面。当按下时间大于2秒的之后会退出到主界面。

    KEY2 的作用:
           1.在游戏中顺时针方向控制蛇的移动
           2.在速度调节界面,使速度减小
    KEY3 的作用:
           1.在游戏中逆时针方向控制蛇的移动
           2.在速度调节界面,使速度增大



    LED的作用:
           LED1就是用来500ms闪烁一次的,没有其他用处了。

4.【游戏介绍】
    游戏启动:游戏启动的时候会显示eeworld,兆易创新和我自己的游戏logo,如下图

   




    菜单选择:菜单分为【开始游戏】和【速度调节】两个选项
                  开始游戏  中可以正式开始贪吃蛇游戏。
                  速度调节界面可以调节速度的大小。
               

     游戏:
            在游戏中,食物的位置会随机出现,使用了C语言的随机函数,当然随机函数需要有一个变化的种子才能真的实现随机。所以在2ms的定时任务中有一个随机数种子会变量,在实物被吃掉的时候装载这个随机数可以实现随机产生食物。
     游戏特色:
           游戏中,贪吃蛇只有撞到自己的身体再会结束游戏,没有设置撞到墙结束游戏,因为OLED的屏幕太小,这样的设定会经常撞墙,导致可玩性大大降低(主要是我菜),当蛇运动超过屏幕尺寸之后会从屏幕的另一边出现。



5.【视频链接】

    这个整个作品的显示
   https://www.bilibili.com/video/av53539154/

   这个是我自己玩的游戏的视频,不知道你们有没有兴趣看,主要是一只手拿手机拍,一只手控制贪吃蛇移动,导致很快就game over了。

   https://www.bilibili.com/video/av53539154/?p=2


6.【附件】
    最终附上程序代码,有兴趣的小伙伴可以在自己板子上试试哦。
贪吃蛇游戏--hehung.zip (697.55 KB, 下载次数: 46)


7.【后话】
    感谢举办方给予的这次比赛机会,以后有这样的比赛我还是会参加的。






此帖出自GD32 MCU论坛

最新回复

nmg
看你演示视频中有一块按键没听话,这个是什么原因   详情 回复 发表于 2019-6-21 09:57
点赞 关注(2)
 

回复
举报

282

帖子

2

TA的资源

一粒金砂(高级)

沙发
 
附上几张gif图:

开机:



选项选择:



速度选择:




游戏ing:


此帖出自GD32 MCU论坛
 
 
 

回复

98

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

大佬,学习了

此帖出自GD32 MCU论坛
 
 
 

回复

828

帖子

216

TA的资源

管理员

4
 

楼主,有时间把作品的word版本上传一下哈

此帖出自GD32 MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

什么意思?是上传一下写的这个贴子的word版本的吗?  详情 回复 发表于 2019-6-12 11:47
 
个人签名在路上……

EEworld 有你有我
 
 

回复

282

帖子

2

TA的资源

一粒金砂(高级)

5
 
lightxixi 发表于 2019-6-11 14:10 楼主,有时间把作品的word版本上传一下哈

什么意思?是上传一下写的这个贴子的word版本的吗?

此帖出自GD32 MCU论坛

点评

是哒  详情 回复 发表于 2019-6-12 16:12
 
 
 

回复

828

帖子

216

TA的资源

管理员

6
 
hehung 发表于 2019-6-12 11:47 什么意思?是上传一下写的这个贴子的word版本的吗?

是哒

此帖出自GD32 MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名在路上……

EEworld 有你有我
 
 

回复

282

帖子

2

TA的资源

一粒金砂(高级)

7
 

按照管理员的要求,附上附件,和帖子内容差别不大。

GD32E231_贪吃蛇小游戏.doc (251.05 KB, 下载次数: 12)

此帖出自GD32 MCU论坛

点评

给楼主手动点赞!  详情 回复 发表于 2019-6-20 21:06
 
 
 

回复

828

帖子

216

TA的资源

管理员

8
 
hehung 发表于 2019-6-17 10:28 按照管理员的要求,附上附件,和帖子内容差别不大。

给楼主手动点赞!

此帖出自GD32 MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名在路上……

EEworld 有你有我
 
 

回复

5263

帖子

239

TA的资源

管理员

9
 

贪吃蛇的那个logo有设计啊,感觉挺好玩的

此帖出自GD32 MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

5263

帖子

239

TA的资源

管理员

10
 

看你演示视频中有一块按键没听话,这个是什么原因

此帖出自GD32 MCU论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

因为有的功能是长按才有效,有些是短按才有效,在调节速度的界面,需要长安退出,这个时候如果按的时间短了是没有效果的,这些设计我有时也记不太清楚哪个地方该长按,哪该短按?。  详情 回复 发表于 2019-6-24 09:55
 
 
 

回复

282

帖子

2

TA的资源

一粒金砂(高级)

11
 
nmg 发表于 2019-6-21 09:57 看你演示视频中有一块按键没听话,这个是什么原因

因为有的功能是长按才有效,有些是短按才有效,在调节速度的界面,需要长安退出,这个时候如果按的时间短了是没有效果的,这些设计我有时也记不太清楚哪个地方该长按,哪该短按?

此帖出自GD32 MCU论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表