用C语言做一个贪吃蛇游戏
时间: 2023-09-17 18:06:26 浏览: 110
### 回答1:
好的,我可以为您提供一个简单的贪吃蛇游戏的 C 语言代码,如下所示:
```
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#define WIDTH 20
#define HEIGHT 20
int x, y, fruitX, fruitY, score, gameover;
int tailX[100], tailY[100];
int nTail;
enum eDirection { STOP = 0, LEFT, RIGHT, UP, DOWN };
enum eDirection dir;
void Setup()
{
gameover = 0;
dir = STOP;
x = WIDTH / 2;
y = HEIGHT / 2;
fruitX = rand() % WIDTH;
fruitY = rand() % HEIGHT;
score = 0;
}
void Draw()
{
system("cls");
for (int i = 0; i < WIDTH + 2; i++)
printf("#");
printf("\n");
for (int i = 0; i < HEIGHT; i++)
{
for (int j = 0; j < WIDTH; j++)
{
if (j == 0)
printf("#");
if (i == y && j == x)
printf("O");
else if (i == fruitY && j == fruitX)
printf("F");
else
{
int print = 0;
for (int k = 0; k < nTail; k++)
{
if (tailX[k] == j && tailY[k] == i)
{
printf("o");
print = 1;
}
}
if (!print)
printf(" ");
}
if (j == WIDTH - 1)
printf("#");
}
printf("\n");
}
for (int i = 0; i < WIDTH + 2; i++)
printf("#");
printf("\n");
printf("Score: %d\n", score);
}
void Input()
{
if (_kbhit())
{
switch (_getch())
{
case 'a':
dir = LEFT;
break;
case 'd':
dir = RIGHT;
break;
case 'w':
dir = UP;
break;
case 's':
dir = DOWN;
break;
case 'x':
gameover = 1;
break;
}
}
}
void Logic()
{
int prevX = tailX[0];
int prevY = tailY[0];
int prev2X, prev2Y;
tailX[0] = x;
tailY[0] = y;
for (int i = 1; i < nTail; i++)
{
prev2X = tailX[i];
prev2Y = tailY[i];
tailX[i] = prevX;
tailY[i] = prevY;
prevX = prev2X;
prevY = prev2Y;
}
switch (dir)
{
case LEFT:
x--;
break;
case RIGHT:
x++;
break;
case UP:
y--;
break;
case DOWN:
y++;
break;
default:
break;
}
if (x >= WIDTH) x = 0; else if (x < 0) x = WIDTH - 1;
if (y >= HEIGHT) y = 0; else if (y < 0) y = HEIGHT - 1;
for (int i = 0; i < nTail; i++)
if (tailX[i] == x && tailY[i] == y)
gameover = 1;
if (x == fruitX && y == fruitY)
{
score += 10;
fruitX = rand() % WIDTH;
fruitY = rand() % HEIGHT;
nTail++;
}
}
int main()
{
Setup();
while (!gameover)
{
Draw();
Input();
Logic();
Sleep(50);
}
return 0;
}
```
希望这个代码对您有所帮助!
### 回答2:
要用C语言来制作一个贪吃蛇游戏,需要掌握一些基本的C语言编程知识。以下是一个简单的步骤,供参考:
1. 创建游戏界面:首先,你需要创建一个窗口或控制台界面作为游戏的主要显示区域。你可以使用C语言提供的图形库或字符输出函数来实现。
2. 初始化贪吃蛇:在游戏开始时,你需要初始化一个包含贪吃蛇身体坐标的数组,并确定初始方向。可以使用二维数组或链表来存储并管理贪吃蛇的每一个身体部分。
3. 控制贪吃蛇移动:通过接收用户的方向输入,你需要实现一个函数或方法来控制贪吃蛇的移动。当贪吃蛇移动时,你需要更新贪吃蛇身体的坐标,并处理与食物、边界和自身相碰撞的情况。
4. 食物生成:你需要在游戏界面中随机生成食物。确保每次生成的食物位置不会与贪吃蛇的身体或边界重叠。
5. 游戏循环:设置一个游戏循环,通过不断刷新界面来让贪吃蛇和食物移动。在每个循环中,检查用户输入的方向,并更新贪吃蛇的位置和长度。同时,判断贪吃蛇是否与食物碰撞,如果是,则更新贪吃蛇的长度并重新生成食物。
6. 游戏结束条件:在游戏循环中,不断检测贪吃蛇是否与边界或自身相碰撞,如果是,则游戏结束。
7. 分数计算:你可以根据贪吃蛇吃掉的食物数量来计算得分,并在界面的某个位置显示。
通过以上步骤,你可以用C语言来实现一个简单的贪吃蛇游戏。可以根据自己的需求和编程能力来添加更多的功能,如难度选择、声音效果等,让游戏更加有趣。
### 回答3:
贪吃蛇游戏是一种经典的游戏,通过使用C语言,我们可以简单地实现这个游戏。
首先,我们需要定义蛇的结构。可以使用一个链表来表示蛇的身体,其中每个节点包含蛇的一个部分的坐标(x和y)。我们还需要定义一个变量来存储蛇的长度以及当前蛇的方向。
接下来,我们需要初始化蛇的位置和长度。我们可以将蛇的初始位置设置为屏幕中心,并设置长度为3。我们还需要生成一个食物的随机位置。
然后,我们可以进入游戏循环。在每个循环中,我们首先判断是否有按键输入,并根据输入来改变蛇的方向。然后,我们需要移动蛇的身体,即更新每个节点的坐标,从最后一个节点开始,将其坐标设置为前一个节点的坐标,直到达到蛇头。如果蛇的头部坐标与食物坐标相同,则蛇的长度增加,并重新生成一个食物。接下来,我们需要检查蛇是否碰撞到了边界或者自己的身体,如果是,则游戏结束。
最后,我们需要在每个循环中绘制蛇和食物。我们可以使用C语言提供的图形库,如graphics.h来实现图形绘制。可以使用循环遍历蛇的每个节点,绘制蛇的身体。然后,我们可以在食物的坐标处绘制食物。
通过上述步骤,我们就可以实现一个简单的贪吃蛇游戏。当玩家控制贪吃蛇吃到食物时,蛇的长度会增加,当蛇碰到边界或者自己的身体时,游戏结束。这个游戏可以通过运行C语言编写的代码来进行游玩。
阅读全文