请用c语言写一个贪吃蛇
时间: 2023-09-06 11:11:01 浏览: 94
用c语言编写的贪吃蛇
好的,以下是一个简单的贪吃蛇游戏的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define WIDTH 20 // 游戏区域宽度
#define HEIGHT 20 // 游戏区域高度
int snake[WIDTH*HEIGHT][2]; // 存储蛇身的坐标
int food[2]; // 存储食物的坐标
int len = 3; // 初始蛇身长度
int dir = 'd'; // 初始移动方向
int score = 0; // 得分
int initSnake() // 初始化蛇身
{
int i, j;
for(i=0; i<len; i++) {
snake[i][0] = WIDTH/2+i;
snake[i][1] = HEIGHT/2;
}
return 0;
}
int initFood() // 初始化食物
{
srand((unsigned)time(NULL));
food[0] = rand()%WIDTH;
food[1] = rand()%HEIGHT;
return 0;
}
int draw() // 绘制游戏界面
{
int i, j;
system("cls");
printf("Score: %d\n", score);
for(i=0; i<HEIGHT; i++) {
for(j=0; j<WIDTH; j++) {
if(j==0 || j==WIDTH-1 || i==0 || i==HEIGHT-1) {
printf("#");
}
else if(i==snake[0][1] && j==snake[0][0]) {
printf("@");
}
else if(i==food[1] && j==food[0]) {
printf("*");
}
else {
int flag = 0;
int k;
for(k=1; k<len; k++) {
if(i==snake[k][1] && j==snake[k][0]) {
printf("o");
flag = 1;
break;
}
}
if(!flag) {
printf(" ");
}
}
}
printf("\n");
}
return 0;
}
int move() // 移动蛇身
{
int i;
int tail[2];
tail[0] = snake[len-1][0];
tail[1] = snake[len-1][1];
for(i=len-1; i>0; i--) {
snake[i][0] = snake[i-1][0];
snake[i][1] = snake[i-1][1];
}
switch(dir) {
case 'w':
snake[0][1] -= 1;
break;
case 's':
snake[0][1] += 1;
break;
case 'a':
snake[0][0] -= 1;
break;
case 'd':
snake[0][0] += 1;
break;
default:
break;
}
if(snake[0][0]==food[0] && snake[0][1]==food[1]) {
len++;
score++;
initFood();
}
else if(snake[0][0]<=0 || snake[0][0]>=WIDTH-1 || snake[0][1]<=0 || snake[0][1]>=HEIGHT-1) {
return -1; // 撞墙,游戏结束
}
else {
for(i=1; i<len; i++) {
if(snake[i][0]==snake[0][0] && snake[i][1]==snake[0][1]) {
return -1; // 撞自己,游戏结束
}
}
}
return 0;
}
int main()
{
initSnake();
initFood();
draw();
while(1) {
if(kbhit()) {
dir = getch();
}
if(move() == -1) {
printf("Game Over!\n");
break;
}
draw();
Sleep(100);
}
return 0;
}
```
这个贪吃蛇游戏可以在Windows下编译运行,需要在命令行窗口中输入以下命令进行编译:
```
gcc snake.c -o snake
```
然后输入以下命令运行游戏:
```
snake
```
阅读全文