OpenEdv-开源电子网

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

最近基于原子ministm32开发板写了一个贪吃蛇的游戏,基本功能实现了,但还不是很完美,那位哥们能帮忙修改一下呢?

[复制链接]

19

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2012-2-20
在线时间
0 小时
发表于 2012-4-24 21:22:00 | 显示全部楼层 |阅读模式

附近如下:

游戏.zip

1.72 MB, 下载次数: 2218

追求卓越,超越自己!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-4-25 00:50:24 | 显示全部楼层
回复【楼主位】林中独步2:
---------------------------------
什么叫不完美?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2012-2-20
在线时间
0 小时
 楼主| 发表于 2012-4-26 12:46:41 | 显示全部楼层
下进去看看就知道哪儿不完美了,就是那个随机数有点问题?
追求卓越,超越自己!
回复 支持 反对

使用道具 举报

20

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
171
金钱
171
注册时间
2011-11-6
在线时间
0 小时
发表于 2012-4-26 13:01:19 | 显示全部楼层
回复【楼主位】林中独步2:
---------------------------------
牛牛牛~
原子哥,求交往~(*^__^*) 
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-4-26 14:09:59 | 显示全部楼层
回复【3楼】林中独步2:
---------------------------------
随机数很好改进吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2012-3-30
在线时间
0 小时
发表于 2012-4-27 16:56:38 | 显示全部楼层
那游戏的用什么键控制蛇的运动方向的
回复 支持 反对

使用道具 举报

19

主题

47

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2012-2-20
在线时间
0 小时
 楼主| 发表于 2012-5-5 16:56:27 | 显示全部楼层
自带的红外遥控器控制方向的
追求卓越,超越自己!
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2012-7-19
在线时间
0 小时
发表于 2012-8-6 14:53:03 | 显示全部楼层

修改一:
void changeskdir(void)   //判断移动方向
{
    key=Remote_Process();
   switch(key)
   {
    case 168:
     if (snake.dir != up) { while(!(key == 168));   snake.dir = down;}  
    break;
**********************省略*************************
}
说明:遥控(以前买的一个)用起来感觉比较的生硬,反应慢,家里的电视遥控也如此,这是不是红外传递的缺陷?

 修改二

void setfoodcrd(void) //设置食物坐标
{  
 
 food.crd.x =20+ rand() % (240/20) *20;
 food.crd.y = 20+rand() % (320/20) *20;
 if(food.crd.x>220 )food.crd.x = 200;
 if(food.crd.y>300)food.crd.y = 300;
 GUI_SetColor(GUI_YELLOW);
 GUI_FillCircle(food.crd.x, food.crd.y,10);
 food.flag = 1;
}

说明:防止“食物”出界和只出现半圆的情况。

修改三:

srand((unsigned)GUI_GetTime());

 while(1)
 {
  if (!food.flag)
   { 
    
    setfoodcrd();
   }
 //这里原来的两句放到画食物那个函数里了
   snakemove();
  delay_ms(500);
  t0 = 30;
  while( --t0 )
  {
   
   changeskdir();
  }
   
   judgesef(); 
   gameover();
 }

说明:如果只用rand的话,产生的是重复的假随机种子,增加srand((unsigned)GUI_GetTime());这句效果会更好一点
while循环是为了给遥控足够的操作时间(大致可以认为整个程序遥控模块要处于最高级),这能改善楼主运行出现"蛇身"
拐弯出现跳变(不连贯)的现象。


声明:程序完全基于楼主源程序,改动的只是小部分。

回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2012-7-19
在线时间
0 小时
发表于 2012-8-6 15:24:56 | 显示全部楼层
void gameover(void)


******************省略****************************
    for( i=2;i<snake.node;++i)  //咬尾
    {
          if((snake.crd[0].x == snake.crd.x) &&(snake.crd[0].y == snake.crd.y))
           {
              GUI_Clear();
              GUI_SetColor(GUI_WHITE);
              GUI_DispStringAt("GAME OVER",60,90);
               while( 1 );
          }
    }

}

说明:增加一段咬尾检测
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-6 15:47:08 | 显示全部楼层
回复【9楼】joy321:
---------------------------------
顶...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-8-6 15:47:15 | 显示全部楼层
能上个效果图么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

43

主题

278

帖子

1

精华

高级会员

Rank: 4

积分
621
金钱
621
注册时间
2013-12-27
在线时间
0 小时
发表于 2014-9-20 19:11:16 | 显示全部楼层
对这种帖子表示无语。
水的比较多。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-1 13:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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