字符游戏-智能蛇
1让蛇动起来
2放置奖励的食物
3实现自动寻找
1让蛇动起来
字符表示:
char BLANK_CHAR = ' ';char WALL_CHAR = '*';char SNAKE_HEAD_CHAR = 'H';char SNAKE_BODY_CHAR = 'X';char FOOD_CHAR = '$';
用 * 来围成墙体,用 $ 来表示食物,用 H 来表示蛇头,用 X 来表示蛇的身体。
绘出一个方形区域,这是蛇身活动的范围。
char map[12][13] = {"************","* *","* *","* *","* *","* *","* *","* *","* *","* *","* *","************",};
初始化变量:
int snakeHeadX = 1, snakeHeadY = 1;int snakeBodyX[100] = {0}, snakeBodyY[100] = {0};int snakeBodyLen = 0;int snakeTailIndex = -1;int willBeLonger = 0;int foodX = 0, foodY = 0;int gameRunning = 1;
编写一个让蛇动起来的函数:
void snakeMove(char control){map[snakeHeadX][snakeHeadY]= BLANK_CHAR;// record the previous snake head positionint prevSnakeHeadX= snakeHeadX;int prevSnakeHeadY= snakeHeadY;switch(control){case'w':snakeHeadX--;break;case'a':snakeHeadY--;break;case's':snakeHeadX++;break;case'd':snakeHeadY++;break;default:return;}if(map[snakeHeadX][snakeHeadY]!= BLANK_CHAR&&map[snakeHeadX][snakeHeadY]!= FOOD_CHAR){gameOver();}
就是说,当输入W时蛇会向上挪动一格,输入A时蛇会向左挪动一格,输入S时蛇会向下挪动一格,输入D时蛇会向右挪动一格。这样,我们就实现了对贪吃蛇行进方向的控制。2放置奖励的食物
因为每次放置食物的地方随机,程序里应当包含stdlib.h头文件。而为了不用每次都设置不同seed,我们可以给程序中添加time.h头文件。
注意,放置食物的地方不可以事蛇的身体,更不能是墙体。
下面是实现该功能的代码:
void spawnFood() {// Random food positionfoodX = rand() % 10 + 1;foodY = rand() % 10 + 1;while (map[foodX][foodY] != BLANK_CHAR) {foodX = rand() % 10 + 1;foodY = rand() % 10 + 1;}map[foodX][foodY] = FOOD_CHAR;}
3实现自动寻找
其实要设置变量表示食物位置,然后用蛇头位置计算出食物位置,然后蛇头判断食物位置方向能不能走,不能就换地方,具体代码如下:
以方向向右为例:
if (xdirection == 'D')
{
if (D == 1)
next = 'D';
else if (W == 1)
next = 'W';
else if (S == 1)
next = 'S';
else if (A == 1)
next = 'A';
else
{
system("cls");
printf("OH YOUR SNAKE IS TOO STUPID\nGAME OVER!!!\nPRESS ENTER TO QUIT\n");
getchar();
return 0;
}
}
991

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



