继会吃的蛇之后我又写了会自动寻路的智障蛇
void AIMove() {
int CanMove[4] = {1,1,1,1};//判断哪个方向能走
if(map[AIsnake.y[0]][AIsnake.x[0]+1] != blank_char && map[AIsnake.y[0]][AIsnake.x[0]+1] != snake_food) CanMove[3] = 0;//right
if(map[AIsnake.y[0]][AIsnake.x[0]-1] != blank_char && map[AIsnake.y[0]][AIsnake.x[0]-1] != snake_food) CanMove[1] = 0;//left
if(map[AIsnake.y[0]-1][AIsnake.x[0]] != blank_char && map[AIsnake.y[0]-1][AIsnake.x[0]] != snake_food) CanMove[0] = 0;//up
if(map[AIsnake.y[0]+1][AIsnake.x[0]] != blank_char && map[AIsnake.y[0]+1][AIsnake.x[0]] != snake_food) CanMove[2] = 0;//down
if(food.x<=AIsnake.x[0] && food.y<AIsnake.y[0]) AIconstruct=0;
if(food.x<AIsnake.x[0] && food.y>=AIsnake.y[0]) AIconstruct=1;
if(food.x>=AIsnake.x[0] && food.y>AIsnake.y[0]) AIconstruct=2;
if(food.x>AIsnake.x[0] && food.y<=AIsnake.y[0]) AIconstruct=3;
/*判断食物在哪个方位*/
while(!CanMove[AIconstruct]) AIconstruct = AIconstruct % 4 + 1;//最终确定走的方向
/*后面的部分与人工控制的蛇相同*/
map[AIsnake.y[AIsnake.lenth-1]][AIsnake.x[AIsnake.lenth-1]] = blank_char;
map[AIsnake.y[0]][AIsnake.x[0]] = AIsnake_body;
int i = 0;
for( i=AIsnake.lenth-1; i; i-- ) {
AIsnake.x[i] = AIsnake.x[i-1];
AIsnake.y[i] = AIsnake.y[i-1];
}
switch(AIconstruct) {
case 0: AIsnake.y[0]--; break;
case 1: AIsnake.x[0]--; break;
case 2: AIsnake.y[0]++; break;
case 3: AIsnake.x[0]++; break;
}
if(map[AIsnake.y[0]][AIsnake.x[0]] != blank_char && map[AIsnake.y[0]][AIsnake.x[0]] != snake_food ) {
GameWin();
}
if(map[AIsnake.y[0]][AIsnake.x[0]] == snake_food ) {
map[AIsnake.y[0]][AIsnake.x[0]] = AIsnake_head;
HaveFood = 0;
AIsnake.lenth++;
}
else map[AIsnake.y[0]][AIsnake.x[0]] = AIsnake_head;
}
这样的蛇还是可以自己走一会儿的(虽然写的真的不好)Orz·~·