贪吃蛇避免食物与身体重合的算法哪里错了,求助!!!

Fighter168 2012-10-23 12:06:30

void foodset(struct Food* food,struct Snake* snake)
{

int i, boolfood=1;
srand((unsigned )time(NULL));
food->x=rand()%201;
food->y=rand()%201;
while(1)
{
boolfood=1;
while(food->x%15!=0)(food->x)++; //必须被15整除才可,否则蛇吃不到
while(food->y%15!=0)(food->y)++;

for( i=0;i<snake->node;++i) //食物不能与蛇身重合
if(food->x==snake->x[i] && food->y==snake->y[i]) //此算法有问题,当重合时会出现死机!!!!!
{
boolfood=0;
break;
}



if(boolfood)
{
break;

}
}

}


请问哪有问题,我用api写的,为什么重合就会死机有没有跟好的解决算法
...全文
576 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fighter168 2013-04-16
  • 打赏
  • 举报
回复
引用 4 楼 hai296 的回复:
这个是因为假如你的食物和蛇在一起的时候,那样你的boolfood就为0了,而if语句中的break只是跳出了for循环,没有跳出while循环。而后面那个if语句中的break却不会执行了,那样就跳不出while循环了。
很抱歉,现在才结贴,以后我不会烦这样的错误了
Fighter168 2013-04-16
  • 打赏
  • 举报
回复
引用 2 楼 schlafenhamster 的回复:
for( i=0;i<snake->node;++i) //食物不能与蛇身重合 i++ if((food->x==snake->x[i]) && (food->y==snake->y[i]))
很抱歉,现在才结贴,以后我不会烦这样的错误了
傻X 2012-12-20
  • 打赏
  • 举报
回复
引用 5 楼 fighterandknight 的回复:
解决的方法总比问题多,谢谢啦~
谢啥,结贴,结贴率好低
Fighter168 2012-12-20
  • 打赏
  • 举报
回复
解决的方法总比问题多,谢谢啦~
xhb296 2012-10-23
  • 打赏
  • 举报
回复
这个是因为假如你的食物和蛇在一起的时候,那样你的boolfood就为0了,而if语句中的break只是跳出了for循环,没有跳出while循环。而后面那个if语句中的break却不会执行了,那样就跳不出while循环了。
liangqingchao 2012-10-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
for( i=0;i<snake->node;++i) //食物不能与蛇身重合 i++
if((food->x==snake->x[i]) && (food->y==snake->y[i]))
[/Quote]

同意!!
schlafenhamster 2012-10-23
  • 打赏
  • 举报
回复
for( i=0;i<snake->node;++i) //食物不能与蛇身重合 i++
if((food->x==snake->x[i]) && (food->y==snake->y[i]))
菜头叔 2012-10-23
  • 打赏
  • 举报
回复
你可以使用数组,把身体的坐标点存放到数组内(vector) 判断头的坐标在数组中有大于1的话 就是与身体相撞

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧