OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9531|回复: 11

参考了别人的资料 自己也做了贪吃蛇的游戏(三个版本),mini板 V3.3的

[复制链接]

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2015-11-17
在线时间
30 小时
发表于 2016-8-1 16:34:05 | 显示全部楼层 |阅读模式
图片我就不放了     直接放程序了     http://www.openedv.com/forum.php ... =%CC%B0%B3%D4%C9%DF这里是我参考这个大神的版本改过来的   ,当然我这个里面还有一些BUG   也希望大家多多点评指正。MINI的IO口实在紧张,按键位置选得不是很好,但是没关系  各位可以修改一下,其他俩个是触屏版本和红外遥控的版本

MINI板STM32贪吃蛇.rar

15.8 MB, 下载次数: 2855

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2016-6-13
在线时间
65 小时
发表于 2016-11-13 14:40:15 | 显示全部楼层
感谢楼主分享 顶一个!
回复 支持 反对

使用道具 举报

17

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2016-6-13
在线时间
65 小时
发表于 2016-11-14 14:19:46 | 显示全部楼层
srand(calendar.sec);
food.X=8+rand()%(240/8)*8;
food.Y=8+rand()%(180/8)*8;
能解释下这个计算公式吗
回复 支持 反对

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3774
金钱
3774
注册时间
2015-4-26
在线时间
766 小时
发表于 2016-11-15 12:54:05 | 显示全部楼层
发条橙子玩电子 发表于 2016-11-14 14:19
srand(calendar.sec);
food.X=8+rand()%(240/8)*8;
food.Y=8+rand()%(180/8)*8;

貌似限制横轴不超过240,纵轴不超过180,话说为何不直接对240  180 取余,等待楼主回答
我有故事,你有酒吗
回复 支持 反对

使用道具 举报

17

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2016-6-13
在线时间
65 小时
发表于 2016-11-15 19:38:29 | 显示全部楼层
来俩不甜的 发表于 2016-11-15 12:54
貌似限制横轴不超过240,纵轴不超过180,话说为何不直接对240  180 取余,等待楼主回答

是啊 但感觉还是不懂 啊 为什么这样就能随机出现在限定的屏幕 虽然那时随机函数 但公式还是不理解
回复 支持 反对

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3774
金钱
3774
注册时间
2015-4-26
在线时间
766 小时
发表于 2016-11-16 11:37:07 | 显示全部楼层
发条橙子玩电子 发表于 2016-11-15 19:38
是啊 但感觉还是不懂 啊 为什么这样就能随机出现在限定的屏幕 虽然那时随机函数 但公式还是不理解

话说楼主用的是12864之类的点阵屏吗,代码没看。这屏是不是一次就写8个点。这样先除8再乘8就能解释的通了。楼主哪去了
我有故事,你有酒吗
回复 支持 反对

使用道具 举报

69

主题

978

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3774
金钱
3774
注册时间
2015-4-26
在线时间
766 小时
发表于 2016-11-16 11:38:07 | 显示全部楼层
发条橙子玩电子 发表于 2016-11-15 19:38
是啊 但感觉还是不懂 啊 为什么这样就能随机出现在限定的屏幕 虽然那时随机函数 但公式还是不理解

你把rand()随便换个数,自己算算就知道了。绝对不会超过240
我有故事,你有酒吗
回复 支持 反对

使用道具 举报

17

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2016-6-13
在线时间
65 小时
发表于 2016-11-16 20:02:42 | 显示全部楼层
恩恩 昨天看懂了 是从12到240的随机数吧 但还有一些代码不懂 希望楼主请教啊
回复 支持 反对

使用道具 举报

17

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2016-6-13
在线时间
65 小时
发表于 2016-11-16 20:34:50 | 显示全部楼层
来俩不甜的 发表于 2016-11-16 11:38
你把rand()随便换个数,自己算算就知道了。绝对不会超过240

                                               for(n=0;n<snake.Long;n++)
                                                {
                                                        if(food.X==snake.X[n]&&food.Y==snake.Y[n])
                                                                break;
                                                }
比如这一段 食物的位置跟蛇的第n节重合便推出循环 不是食物都跟蛇头先接触吗 总感觉理解不了这里的n 虽然前面说了用来判断食物是否与蛇重合
回复 支持 反对

使用道具 举报

17

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
348
金钱
348
注册时间
2016-6-13
在线时间
65 小时
发表于 2016-11-16 20:36:52 | 显示全部楼层
        //取得需要重新画的蛇的节数
                                for(i=snake.Long-1;i>0;i--)
                                {
                                        snake.X[i]=snake.X[i-1];
                                        snake.Y[i]=snake.Y[i-1];
                                }
这一段也不理解 蛇吃到食物不应该加一节吗 还是这一段代码是其他作用呢?
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
32
金钱
32
注册时间
2016-10-12
在线时间
2 小时
发表于 2016-11-20 11:36:50 | 显示全部楼层
谢谢楼主分享,
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2017-5-23
在线时间
0 小时
发表于 2017-5-23 15:56:24 | 显示全部楼层
按键的怎么不能用
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-20 21:43

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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