思考:可以困死,因为我们判断距离的时候是不会考虑障碍物的,也许蛇头走的方向确实距离食物短,但是吃食物的程序会让蛇头遇到障碍物返回,进入死循环
概述:遍历寻找蛇头的位置,从头到尾依次寻找食物,找到一个食物之后,调用whereGoNext()判断四个方向哪一个距离食物最近,走一步,更新蛇头的位置,重复直到全部食物都被吃掉。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<math.h>
#include<windows.h>//linux使用unistd.h
#define SNAKE_MAX_LENGTH 20
#define SNAKE_HEAD 'H'
#define SNAKE_BODY 'X'
#define BLANK_CELL ' '
#define SNAKE_FOOD '$'
#define WALL_CELL '*'
//void snakeMove(int,int);
//void put_money(void);
int snakeX[SNAKE_MAX_LENGTH]={
5,4,3,2,1};//蛇头是第一个,方便加身体长度
int snakeY[SNAKE_MAX_LENGTH]={
1,1,1,1,1};
int snakeLength=5;
char map[12][13]=//卧槽,字符结尾还有\0
{
"************",
"*XXXXH $ *",
"* *",
"* $ *",
"* *",
"* *",
"* $ *",
"* *",
"* *",
"* $ *",
"* *",
"************"
};
void output()
{
int i;
for(i=0;i<12;i++)
{
printf("%s\n",map[i]);
}
}

该博客探讨了智能贪吃蛇的设计,指出在判断距离食物时未考虑障碍物可能导致的死循环问题。算法概述为遍历找蛇头,判断四个方向中哪个离食物最近并前进,直至所有食物被吃完。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



