c语言贪吃蛇难度选择
时间: 2023-10-26 21:25:05 浏览: 154
在C语言编写的贪吃蛇游戏中,难度选择通常是通过控制蛇的移动速度来实现的。难度越高,蛇的移动速度就越快,反之亦然。具体的难度选择可以根据游戏开发者的设计和玩家的喜好来确定。例如,可以设定几个固定的难度级别,比如初级、中级和高级,每个级别对应不同的蛇的移动速度。玩家可以根据自己的能力和喜好选择适合的难度级别来挑战游戏。
相关问题
c语言贪吃蛇代码
以下是一个简单的 C 语言贪吃蛇代码:
```c
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define ROW 20 // 行数
#define COL 20 // 列数
#define UP 72 // 上方向键
#define LEFT 75 // 左方向键
#define RIGHT 77 // 右方向键
#define DOWN 80 // 下方向键
int score; // 得分
int speed; // 难度
int fx, fy; // 食物坐标
int headx, heady; // 蛇头坐标
int tailx, taily; // 蛇尾坐标
int bodyx[100], bodyy[100]; // 蛇身坐标
void init(); // 初始化
void draw(); // 画面
void createFood(); // 生成食物
void move(); // 移动
void gameOver(); // 游戏结束
int main()
{
init();
while (1)
{
draw();
move();
Sleep(speed);
}
return 0;
}
void init()
{
score = 0;
speed = 200;
srand((unsigned)time(NULL)); // 随机数种子
headx = rand() % (COL - 2) + 1;
heady = rand() % (ROW - 2) + 1;
tailx = headx - 2;
taily = heady;
createFood();
}
void draw()
{
system("cls"); // 清屏
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
if (i == 0 || i == ROW - 1 || j == 0 || j == COL - 1)
{
printf("#"); // 边框
}
else if (i == heady && j == headx)
{
printf("@"); // 蛇头
}
else if (i == fy && j == fx)
{
printf("$"); // 食物
}
else
{
int flag = 0;
for (int k = 0; k < score; k++)
{
if (i == bodyy[k] && j == bodyx[k])
{
printf("*"); // 蛇身
flag = 1;
break;
}
}
if (!flag)
{
printf(" ");
}
}
}
printf("\n");
}
printf("Score: %d\n", score);
}
void createFood()
{
do
{
fx = rand() % (COL - 2) + 1;
fy = rand() % (ROW - 2) + 1;
} while (fx == headx && fy == heady);
}
void move()
{
int ch;
if (_kbhit())
{
ch = _getch();
if (ch == 224)
{
ch = _getch();
}
switch (ch)
{
case UP:
if (heady - 1 != taily)
{
heady--;
}
else
{
gameOver();
}
break;
case DOWN:
if (heady + 1 != taily)
{
heady++;
}
else
{
gameOver();
}
break;
case LEFT:
if (headx - 1 != tailx)
{
headx--;
}
else
{
gameOver();
}
break;
case RIGHT:
if (headx + 1 != tailx)
{
headx++;
}
else
{
gameOver();
}
break;
}
}
if (headx == fx && heady == fy)
{
score++;
createFood();
}
bodyx[0] = tailx;
bodyy[0] = taily;
for (int i = 1; i < score; i++)
{
bodyx[i] = bodyx[i - 1];
bodyy[i] = bodyy[i - 1];
}
tailx = bodyx[score - 1];
taily = bodyy[score - 1];
}
void gameOver()
{
printf("Game Over!\n");
printf("Your Score: %d\n", score);
exit(0);
}
```
这个代码使用了 Windows.h 头文件里的 Sleep 和 kbhit 函数,所以只能在 Windows 系统上运行。如果要在 Linux 系统上运行,需要修改这两个函数。
C语言贪吃蛇代码
以下是一个简单的 C 语言贪吃蛇代码:
```c
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#define ROW 20 // 行数
#define COL 20 // 列数
#define UP 72 // 上方向键
#define LEFT 75 // 左方向键
#define RIGHT 77 // 右方向键
#define DOWN 80 // 下方向键
int score; // 得分
int speed; // 难度
int fx, fy; // 食物坐标
int headx, heady; // 蛇头坐标
int tailx, taily; // 蛇尾坐标
int bodyx[100], bodyy[100]; // 蛇身坐标
void init(); // 初始化
void draw(); // 画面
void createFood(); // 生成食物
void move(); // 移动
void gameOver(); // 游戏结束
int main()
{
init();
while (1)
{
draw();
move();
Sleep(speed);
}
return 0;
}
void init()
{
score = 0;
speed = 200;
srand((unsigned)time(NULL)); // 随机数种子
headx = rand() % (COL - 2) + 1;
heady = rand() % (ROW - 2) + 1;
tailx = headx - 2;
taily = heady;
createFood();
}
void draw()
{
system("cls"); // 清屏
for (int i = 0; i < ROW; i++)
{
for (int j = 0; j < COL; j++)
{
if (i == 0 || i == ROW - 1 || j == 0 || j == COL - 1)
{
printf("#"); // 边框
}
else if (i == heady && j == headx)
{
printf("@"); // 蛇头
}
else if (i == fy && j == fx)
{
printf("$"); // 食物
}
else
{
int flag = 0;
for (int k = 0; k < score; k++)
{
if (i == bodyy[k] && j == bodyx[k])
{
printf("*"); // 蛇身
flag = 1;
break;
}
}
if (!flag)
{
printf(" ");
}
}
}
printf("\n");
}
printf("Score: %d\n", score);
}
void createFood()
{
do
{
fx = rand() % (COL - 2) + 1;
fy = rand() % (ROW - 2) + 1;
} while (fx == headx && fy == heady);
}
void move()
{
int ch;
if (_kbhit())
{
ch = _getch();
if (ch == 224)
{
ch = _getch();
}
switch (ch)
{
case UP:
if (heady - 1 != taily)
{
heady--;
}
else
{
gameOver();
}
break;
case DOWN:
if (heady + 1 != taily)
{
heady++;
}
else
{
gameOver();
}
break;
case LEFT:
if (headx - 1 != tailx)
{
headx--;
}
else
{
gameOver();
}
break;
case RIGHT:
if (headx + 1 != tailx)
{
headx++;
}
else
{
gameOver();
}
break;
}
}
if (headx == fx && heady == fy)
{
score++;
createFood();
}
bodyx[0] = tailx;
bodyy[0] = taily;
for (int i = 1; i < score; i++)
{
bodyx[i] = bodyx[i - 1];
bodyy[i] = bodyy[i - 1];
}
tailx = bodyx[score - 1];
taily = bodyy[score - 1];
}
void gameOver()
{
printf("Game Over!\n");
printf("Your Score: %d\n", score);
exit(0);
}
```
这个代码使用了 Windows.h 头文件里的 Sleep 和 kbhit 函数,所以只能在 Windows 系统上运行。如果要在 Linux 系统上运行,需要修改这两个函数。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)