社区导航

 

搜索
查看: 529|回复: 10

[GD32E231 作品提交] 【GD32E231 DIY大赛】贪吃蛇小游戏

[复制链接]

76

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-5-25 15:13 | 显示全部楼层 |阅读模式
本帖最后由 hehung 于 2019-5-25 15:37 编辑

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

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


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会变化一次,这样可以做到充分的随机数的产生),随机数是用来产生贪吃蛇的小食物用的。
          11.jpg

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

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


    KEY1的作用:
           1.暂停和开始游戏,游戏进入的时候总是暂停,需要短按来开始。
           2.主界面的选项切换,按下之后切选选项
6.jpg
              3.长按1-2秒选择选中选项,如上图,长按2秒以内大于短按时间的话会进入游戏。
              4.退出到主界面。当按下时间大于2秒的之后会退出到主界面。

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

9.jpg

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

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

    4.jpg
5.jpg
3.jpg


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

     游戏:
            在游戏中,食物的位置会随机出现,使用了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, 下载次数: 25)


回复

使用道具 举报

76

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-5-28 17:30 | 显示全部楼层
附上几张gif图:

开机:

介绍_20190528172429.gif

选项选择:

介绍_20190528172538.gif

速度选择:

介绍_20190528172627.gif


游戏ing:

游戏_20190528172824.gif


回复

使用道具 举报

23

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-6-5 14:47 | 显示全部楼层

大佬,学习了



回复

使用道具 举报

658

TA的帖子

94

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2019-6-11 14:10 | 显示全部楼层

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

点评

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

EEworld 有你有我


回复

使用道具 举报

76

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-6-12 11:47 | 显示全部楼层
lightxixi 发表于 2019-6-11 14:10 楼主,有时间把作品的word版本上传一下哈

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

点评

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


回复

使用道具 举报

658

TA的帖子

94

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2019-6-12 16:12 | 显示全部楼层
hehung 发表于 2019-6-12 11:47 什么意思?是上传一下写的这个贴子的word版本的吗?

是哒

在路上……

EEworld 有你有我


回复

使用道具 举报

76

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-6-17 10:28 | 显示全部楼层

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

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

点评

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


回复

使用道具 举报

658

TA的帖子

94

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2019-6-20 21:06 | 显示全部楼层
hehung 发表于 2019-6-17 10:28 按照管理员的要求,附上附件,和帖子内容差别不大。

给楼主手动点赞!

在路上……

EEworld 有你有我


回复

使用道具 举报

3643

TA的帖子

202

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2019-6-21 09:56 | 显示全部楼层

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



回复

使用道具 举报

3643

TA的帖子

202

TA的资源

管理员

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2019-6-21 09:57 | 显示全部楼层

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

点评

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


回复

使用道具 举报

76

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-6-24 09:55 | 显示全部楼层
nmg 发表于 2019-6-21 09:57 看你演示视频中有一块按键没听话,这个是什么原因

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



回复

使用道具 举报

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

关闭

站长推荐上一条 /5 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-9-16 01:00 , Processed in 0.310231 second(s), 18 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表