c++贪吃蛇撞墙代码
时间: 2023-12-10 11:33:01 浏览: 159
c++ 贪吃蛇 代码
4星 · 用户满意度95%
以下是C++贪吃蛇撞墙代码的实现:
引用中的p_wall()函数可以用来绘制墙壁,可以在主函数中调用该函数来绘制墙壁。在move()函数中,可以通过判断蛇头的位置是否超出边界来判断是否撞墙,如果超出边界则游戏结束。
具体实现代码如下:
```
const int COLS = 30; // 游戏区域列数
const int ROWS = 20; // 游戏区域行数
const char WALL = '#'; // 墙壁字符
const char S_HEAD = '@'; // 蛇头字符
const char S_BODY = '*'; // 蛇身字符
void p_wall() // 绘制墙壁
{
for (int i = 0; i < COLS + 2; i++)
{
cout << WALL;
}
cout << endl;
for (int i = 0; i < ROWS; i++)
{
cout << WALL;
for (int j = 0; j < COLS; j++)
{
cout << ' ';
}
cout << WALL << endl;
}
for (int i = 0; i < COLS + 2; i++)
{
cout << WALL;
}
cout << endl;
}
bool isPosInSnake(int x, int y, int snake[COLS * ROWS][2], int len) // 判断坐标是否在蛇身上
{
for (int i = 0; i < len; i++)
{
if (snake[i][0] == x && snake[i][1] == y)
{
return true;
}
}
return false;
}
void p_snake(int snake[COLS * ROWS][2], int len) // 绘制蛇
{
for (int i = 0; i < len; i++)
{
if (i == 0) // 绘制蛇头
{
locate(snake[i][0], snake[i][1]);
cout << S_HEAD;
}
else // 绘制蛇身
{
locate(snake[i][0], snake[i][1]);
cout << S_BODY;
}
}
}
void p_food(int x, int y) // 绘制食物
{
locate(x, y);
cout << '$';
}
int move(int snake[COLS * ROWS][2], char ch, int len) // 移动蛇
{
int dx = 0, dy = 0;
switch (ch)
{
case 'w': // 上
dy = -1;
break;
case 's': // 下
dy = 1;
break;
case 'a': // 左
dx = -1;
break;
case 'd': // 右
dx = 1;
break;
}
int hx = snake[0][0] + dx;
int hy = snake[0][1] + dy;
if (hx < 1 || hx > COLS || hy < 1 || hy > ROWS || isPosInSnake(hx, hy, snake, len)) // 判断是否撞墙或撞到自己
{
return -1; // 游戏结束
}
for (int i = len - 1; i > 0; i--) // 移动蛇身
{
snake[i][0] = snake[i - 1][0];
snake[i][1] = snake[i - 1][1];
}
snake[0][0] = hx;
snake[0][1] = hy;
return 0; // 游戏继续
}
int main()
{
int snake[COLS * ROWS][2]; // 蛇身坐标数组
int len = 3; // 蛇身长度
snake[0][0] = COLS / 2; // 蛇头初始位置
snake[0][1] = ROWS / 2;
snake[1][0] = snake[0][0] - 1; // 蛇身初始位置
snake[1][1] = snake[0][1];
snake[2][0] = snake[1][0] - 1;
snake[2][1] = snake[1][1];
char ch = 'd'; // 蛇头初始方向
p_wall(); // 绘制墙壁
p_snake(snake, len); // 绘制蛇
while (true)
{
if (_kbhit()) // 检测键盘输入
{
ch = _getch();
}
int ret = move(snake, ch, len); // 移动蛇
if (ret == -1) // 游戏结束
{
break;
}
Sleep(100); // 延时
}
return 0;
}
--相关问题--:
阅读全文