c语言贪吃蛇蛇头撞到边界显示“撞墙了”代码
时间: 2023-02-06 12:05:32 浏览: 325
在贪吃蛇游戏中,如果蛇头撞到了边界,你可以使用以下代码来显示“撞墙了”的提示:
```
if (蛇头的x坐标 == 0 || 蛇头的x坐标 == 地图的宽度 - 1 || 蛇头的y坐标 == 0 || 蛇头的y坐标 == 地图的高度 - 1)
{
printf("撞墙了!\n");
}
```
在这段代码中,我们通过检查蛇头的x坐标和y坐标是否等于0或地图的宽度或高度减1来判断蛇头是否撞到了边界。如果蛇头撞到了边界,那么就会执行printf函数来输出“撞墙了!”的提示。
希望这些信息对你有帮助!
相关问题
c语言贪吃蛇游戏代码
以下是一个简单的 C 语言贪吃蛇游戏代码示例:
```
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define ROW 20
#define COL 40
int score = 0; // 记录得分
int speed = 200; // 初始速度
char map[ROW][COL]; // 地图
int snake[ROW * COL][2]; // 蛇身,第一列为行,第二列为列
int len = 1; // 蛇身长度
int dir = 0; // 初始方向:向右
// 初始化地图
void initMap()
{
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
if (i == 0 || i == ROW - 1 || j == 0 || j == COL - 1) {
map[i][j] = '#'; // 边界
} else {
map[i][j] = ' '; // 空白区域
}
}
}
}
// 初始化蛇
void initSnake()
{
snake[0][0] = ROW / 2;
snake[0][1] = COL / 2;
map[snake[0][0]][snake[0][1]] = '*'; // 蛇头
}
// 生成食物
void genFood()
{
srand((unsigned)time(NULL)); // 随机数种子
int x, y;
do {
x = rand() % (ROW - 2) + 1;
y = rand() % (COL - 2) + 1;
} while (map[x][y] != ' ');
map[x][y] = '$'; // 食物
}
// 显示地图
void display()
{
system("cls"); // 清屏
int i, j;
for (i = 0; i < ROW; i++) {
for (j = 0; j < COL; j++) {
printf("%c", map[i][j]);
}
printf("\n");
}
printf("得分:%d\n", score);
}
// 判断是否撞墙或撞自己
int isOver()
{
if (map[snake[0][0]][snake[0][1]] == '#' || map[snake[0][0]][snake[0][1]] == '*') {
return 1;
}
int i;
for (i = 1; i < len; i++) {
if (snake[i][0] == snake[0][0] && snake[i][1] == snake[0][1]) {
return 1;
}
}
return 0;
}
// 移动蛇
void move()
{
int i;
for (i = len - 1; i > 0; i--) {
snake[i][0] = snake[i - 1][0];
snake[i][1] = snake[i - 1][1];
}
switch (dir) {
case 0: snake[0][1]++; break; // 右
case 1: snake[0][0]--; break; // 上
case 2: snake[0][1]--; break; // 左
case 3: snake[0][0]++; break; // 下
}
if (map[snake[0][0]][snake[0][1]] == '$') { // 吃到食物
score += 10;
len++;
genFood();
if (speed > 50) { // 加速
speed -= 10;
}
}
map[snake[1][0]][snake[1][1]] = ' '; // 清除蛇尾
map[snake[0][0]][snake[0][1]] = '*'; // 更新蛇头
}
// 监听方向键
void listenKey()
{
if (_kbhit()) { // 有键盘输入
char ch = _getch();
switch (ch) {
case 'a': dir = 2; break; // 左
case 'w': dir = 1; break; // 上
case 'd': dir = 0; break; // 右
case 's': dir = 3; break; // 下
}
}
}
int main()
{
initMap();
initSnake();
genFood();
display();
while (1) {
listenKey();
move();
display();
if (isOver()) {
printf("游戏结束!得分:%d\n", score);
break;
}
Sleep(speed); // 延时
}
return 0;
}
```
这只是一个简单的示例,可能有一些不足之处,可以根据自己的实际需求进行修改和完善。
c语言贪吃蛇游戏代码解释
以下是对上述 C 语言贪吃蛇游戏代码的解释:
1. 头文件
```
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
```
- `stdio.h`:标准输入输出库,包含输入输出函数的定义。
- `conio.h`:控制台输入输出库,包含一些控制台操作函数的定义。
- `stdlib.h`:标准库,包含一些常用函数的定义,如 `rand()` 和 `srand()`。
- `time.h`:时间库,包含时间相关函数的定义,如 `time()`。
- `windows.h`:Windows API 库,包含一些 Windows 平台特有的函数的定义,如 `Sleep()`。
2. 宏定义
```
#define ROW 20
#define COL 40
```
定义了地图的行数和列数。
3. 全局变量
```
int score = 0; // 记录得分
int speed = 200; // 初始速度
char map[ROW][COL]; // 地图
int snake[ROW * COL][2]; // 蛇身,第一列为行,第二列为列
int len = 1; // 蛇身长度
int dir = 0; // 初始方向:向右
```
- `score`:记录得分。
- `speed`:记录当前速度。
- `map`:记录地图,使用二维字符数组表示。'#' 表示墙,' ' 表示空白区域,'*' 表示蛇头,'$' 表示食物。
- `snake`:记录蛇身,使用二维整型数组表示。第一列为行,第二列为列。
- `len`:记录蛇身长度。
- `dir`:记录蛇头的方向,0 表示向右,1 表示向上,2 表示向左,3 表示向下。
4. 函数定义
- `initMap()`:初始化地图,将边界和空白区域用 '#' 和 ' ' 填充,分别表示墙和空白区域。
- `initSnake()`:初始化蛇,将蛇头放在地图的中央位置,并用 '*' 表示。
- `genFood()`:生成食物,随机生成一个位置,并将该位置用 '$' 表示。
- `display()`:显示地图和得分。
- `isOver()`:判断游戏是否结束,如果蛇头撞墙或者撞到自己的身体,则游戏结束。
- `move()`:移动蛇,根据当前方向移动蛇头,并更新蛇身。如果蛇头吃到食物,则得分加10,蛇身长度加1,生成新的食物,并加速。
- `listenKey()`:监听方向键,如果有键盘输入,则改变方向。
5. 主函数
- `main()`:初始化地图、蛇和食物,循环执行监听方向键、移动蛇和显示地图的操作,直到游戏结束。
阅读全文