野火电子论坛

 找回密码
 注册

扫一扫,访问微社区

查看: 2987|回复: 76

[经验\资料分享] 【分享】史上最经典的STM32版贪食蛇!!!纯手打,0移植

  [复制链接]
发表于 2018-7-1 16:30:31 | 显示全部楼层 |阅读模式
本帖最后由 如花 于 2018-7-15 22:51 编辑

折腾了几个晚上,今天终于把贪食蛇这个游戏全部做出来了。
F429开发板配5寸屏的直接下载就可以立即开玩,其它型号也只需稍微改下LTDC显示的接口、触摸屏的接口、SDRAM接口、LED灯接口,很快也能进入游戏。



最最重要的一点,这个游戏所有代码都是纯手打!纯手打!纯手打!从头到尾100%的原创,没有移植任何外部代码(库函数除外)。
游戏思路和实现逻辑完全都是自己想出来的,所有外设驱动也是自己写的,包括触摸屏的驱动也是自己写的,没有移植linux的驱动。
就连游戏的按键效果都是自己用PS做出来的(素材库里面保留了psd源文件)

跟其它为数不多的stm32版本贪食蛇不一样,这个版本做成了全触屏的贪食蛇,百分百的虚拟按键。
需要的仅仅是一个单片机加一块触摸屏,无需任何外设,就可以随时随地畅玩了!


随着游戏的进行,蛇和食物还会不停变换各种颜色,绝对是一场视觉的盛宴。
另外还不得不提的是一流的按键设计,超快的响应速度、超炫的动画效果。不但有上下左右按键,还新增两个加减速按键。
游戏途中随时改变速度,最高速度可达999,体验1秒撞墙的快感,想要多快就有多快。
总之,游戏体验到底如何,要亲自试一下才知道。


游戏结束后,无需复位单片机,只需轻触屏幕的任意一个按键,就又可以重新开始游戏了!
对于习惯右手控制方向的玩家来说,只要将屏幕倒过来玩就解决了。不过要注意加减速按键是相反的。


图1.jpg           图2.jpg       


    图3.png       
图4.png

本程序还附带了一个不为人知的隐藏功能,简单来说就是可以在游戏界面随心涂鸦。
具体使用方法请看试玩视频最后两分钟。


下面是我自己试玩的视频,刚好还是玩得最高分的一次。
如果稍微留意一下,就会发现,所有按键都带了动画效果,看起来高大上有木有



如果以上视频无法播放,请移步以下链接:
http://v.youku.com/v_show/id_XMz ... yXzEwMDAwMV8wMV8wMQ


下面是游戏源代码,100%原创,完全新手向,再加上有非常详细的注释,不怕看不懂。
回复就可以下载畅玩了~~~


游客,如果您要查看本帖隐藏内容请回复


最后还想说一下,硬件I2C确实挺好用的,这个游戏的触摸屏用的就是硬件I2C,到目前为止都没有遇到任何bug,
估计是ST在固件库中作了修复。
看来以后都可以放心用了!

----------------------------------------分割线------------------------------------------------------------------



刚才把豪华版贪食蛇随手改了一下,就成了无边界版贪食蛇。
无边界版去掉四周的墙,大大降低了游戏难度,操作起来更轻松休闲一点。
相信无边界的设定能带来更流畅的游戏体验,没有撞墙风险,可以尽情提升速度,感受速度爆表的畅快


以下是无边界版的一段演示视频及程序代码:
一不小心玩了个最高分,真不知说什么好



如果以上视频无法播放,请移步以下链接:
http://v.youku.com/v_show/id_XMzcyMzQxNTk3Mg==.html?tpa=dW5pb25faWQ9MTAzMjUyXzEwMDAwMV8wMV8wMQ


下面是无边界版贪食蛇的源代码,随时随地下载畅玩

游客,如果您要查看本帖隐藏内容请回复




回复

使用道具 举报

发表于 2018-7-1 16:57:18 来自手机 | 显示全部楼层
赞,谢谢分享
回复 支持 反对

使用道具 举报

发表于 2018-7-1 18:35:57 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

发表于 2018-7-1 20:15:55 | 显示全部楼层
6666666666666666666666
回复 支持 反对

使用道具 举报

发表于 2018-7-1 20:48:59 | 显示全部楼层
    STM32 的最高境界?
回复 支持 反对

使用道具 举报

发表于 2018-7-1 21:32:49 来自手机 | 显示全部楼层
cool
回复

使用道具 举报

发表于 2018-7-1 22:25:02 | 显示全部楼层
谢谢分享
回复

使用道具 举报

发表于 2018-7-1 22:42:49 | 显示全部楼层
赞,谢谢分享!
回复 支持 反对

使用道具 举报

发表于 2018-7-2 09:40:36 | 显示全部楼层
大赞,谢谢分享!
回复 支持 反对

使用道具 举报

发表于 2018-7-2 14:54:54 | 显示全部楼层
酷啊,来瞧瞧。
回复 支持 反对

使用道具 举报

发表于 2018-7-3 15:05:38 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

发表于 2018-7-4 12:39:36 | 显示全部楼层
:victory::victory::victory::victory::victory::victory::victory::victory::victory::victory::victory:
回复 支持 反对

使用道具 举报

发表于 2018-7-4 14:18:01 | 显示全部楼层
下来玩玩。
回复

使用道具 举报

发表于 2018-7-5 16:11:24 | 显示全部楼层
谢谢分享!!
回复

使用道具 举报

发表于 2018-7-5 17:10:47 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

发表于 2018-7-5 18:08:08 | 显示全部楼层
   数据结构:链表最强实践
回复 支持 反对

使用道具 举报

发表于 2018-7-5 19:28:53 | 显示全部楼层
感谢分享感谢分享
回复 支持 反对

使用道具 举报

发表于 2018-7-9 21:30:43 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2018-7-10 08:15:52 | 显示全部楼层
RE: (分享)史上最经典的STM32版贪食蛇!!!纯手打,0移植 [修改]
回复 支持 反对

使用道具 举报

发表于 2018-7-11 20:38:08 | 显示全部楼层
最后还想说一下,硬件I2C确实挺好用的,这个游戏的触摸屏用的就是硬件I2C,到目前为止都没有遇到任何bug,
估计是ST在固件库中作了修复。
看来以后都可以放心用了!
回复 支持 反对

使用道具 举报

发表于 2018-7-12 13:24:25 | 显示全部楼层
谢楼主分享~~
回复 支持 反对

使用道具 举报

发表于 2018-7-12 14:45:08 | 显示全部楼层
赞一下。。。。。。
回复

使用道具 举报

发表于 2018-7-13 00:01:48 | 显示全部楼层
回复就可以下载畅玩了~~~
回复 支持 反对

使用道具 举报

发表于 2018-7-14 21:36:01 | 显示全部楼层
不错不错,赞一个
回复 支持 反对

使用道具 举报

发表于 2018-7-14 23:17:09 | 显示全部楼层
XIEXIEDALAO
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-16 22:51:05 | 显示全部楼层
前两天在原帖1楼后面又加了一点内容,是关于新出的贪食蛇无边界版,也同样发布了一个视频和一个可以下载的程序源码,感兴趣的可以去看看
特别是听过视频的bgm后都觉得很值!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-16 22:51:51 | 显示全部楼层
zhaoyi821103 发表于 2018-7-5 18:08
数据结构:链表最强实践

没那么难啦
回复 支持 反对

使用道具 举报

发表于 2018-7-26 16:10:48 | 显示全部楼层
谢谢分享!!!!!!!!
回复

使用道具 举报

发表于 2018-7-30 10:05:55 | 显示全部楼层
太强了,学习一下
回复 支持 反对

使用道具 举报

发表于 2018-8-16 15:29:31 | 显示全部楼层
试试试试,感觉挺好玩的样子
回复 支持 反对

使用道具 举报

发表于 2018-8-17 01:44:13 | 显示全部楼层
66666666666
回复 支持 反对

使用道具 举报

发表于 2018-8-17 17:22:43 | 显示全部楼层
谢谢分享,大佬
回复 支持 反对

使用道具 举报

发表于 2018-8-17 17:45:11 | 显示全部楼层
大佬,您的程序在编译时出现的错误,我该怎么处理,报错的位置都提示:decclaration may appear after executable statement in block
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-8-17 21:34:22 | 显示全部楼层
年轻即_m661d 发表于 2018-8-17 17:45
大佬,您的程序在编译时出现的错误,我该怎么处理,报错的位置都提示:decclaration may appear after exec ...

是用Keil 5 打开的吗?
这是我在网上找的解决方法:


错误名称:declaration may not appear after executable statement in block.

变量声明不允许出现在语句之后,

int main(void)
{
PLLCON = 1; // 这个(以及下面若干行)就是所谓的“executable statement ”
......
uint8 sec; // 这就是“declaration ”

这种在语句之后声明变量的方式,c++里面是正常的,现在的很多c编译器也允许。
但是最早的c是不许这么写的,要求所有的局部变量必须在函数开头声明,用的keil编译器也是这样要求的。

两种方法来解决这个问题

方法一:修改为正确语句

int main(void)
{

uint8 sec;
PLLCON = 1; // 这个(以及下面若干行)就是所谓的“executable statement ”
......

方法二:设置keil

勾选C99 Mode

Set.jpg

回复 支持 反对

使用道具 举报

发表于 2018-8-18 09:33:20 | 显示全部楼层
谢谢大佬,问题解决了
回复 支持 反对

使用道具 举报

发表于 2018-8-20 18:40:27 | 显示全部楼层
666666666

回复

使用道具 举报

发表于 2018-8-20 20:23:49 | 显示全部楼层
6666  厉害了
回复 支持 反对

使用道具 举报

发表于 2018-8-23 11:28:42 | 显示全部楼层
不错,很强,我得好好写一下
回复 支持 反对

使用道具 举报

发表于 2018-8-24 14:21:54 | 显示全部楼层
只用C++在windows上写过贪吃蛇,嵌入式的还真没敢写,佩服。拿走了,谢谢!
回复 支持 反对

使用道具 举报

发表于 2018-8-27 19:45:41 | 显示全部楼层
[C] 纯文本查看 复制代码
赞赞赞
回复 支持 反对

使用道具 举报

发表于 2018-8-29 17:50:24 | 显示全部楼层
非常好  非常好非常好
回复 支持 反对

使用道具 举报

发表于 2018-8-29 21:37:48 | 显示全部楼层
666666666666666,
回复 支持 反对

使用道具 举报

发表于 2018-9-1 10:49:04 | 显示全部楼层
谢谢楼主分享
回复 支持 反对

使用道具 举报

发表于 2018-9-4 18:30:20 | 显示全部楼层
谢谢,分享,......
回复

使用道具 举报

发表于 2018-9-5 15:53:40 | 显示全部楼层
666666666666666666666666666666666
回复 支持 反对

使用道具 举报

发表于 2018-9-5 15:57:22 | 显示全部楼层
66666666666666666
回复 支持 反对

使用道具 举报

发表于 2018-9-5 19:22:45 | 显示全部楼层
学习了,看下LCD部分,谢谢!
回复 支持 反对

使用道具 举报

发表于 2018-9-16 21:53:47 | 显示全部楼层
谢谢分享.......................
回复

使用道具 举报

发表于 2018-9-19 13:55:12 | 显示全部楼层
挺有兴趣,最近要学习一下
回复 支持 反对

使用道具 举报

发表于 2018-9-25 20:18:35 | 显示全部楼层
膜拜大神 66666666666
回复 支持 反对

使用道具 举报

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

本版积分规则

野火电子公众号

手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号-2 大学生ARM嵌入式2群

GMT+8, 2018-11-16 07:44 , Processed in 0.121686 second(s), 34 queries , Gzip On.

野火电子论坛

© 2014-2016 www.firebbs.cn

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