|
修改一:
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循环是为了给遥控足够的操作时间(大致可以认为整个程序遥控模块要处于最高级),这能改善楼主运行出现"蛇身"
拐弯出现跳变(不连贯)的现象。
声明:程序完全基于楼主源程序,改动的只是小部分。
|