用C语言实现贪吃蛇小游戏,内附代码。

杨数Tos

共 3933字,需浏览 8分钟

 ·

2023-10-12 18:28

大家好,我是贤弟!
一、贪吃蛇游戏规则
贪吃蛇是一款经典的游戏,其规则如下:

1. 游戏开始时,蛇的长度为1个单位,头部为一个小方块。
2. 蛇的移动速度较快,玩家需要通过控制蛇的方向键来移动蛇的头部,使其吃到食物。
3. 当蛇的头部碰到边界或自己的身体时,游戏结束。
4. 每当蛇吃到一块食物时,蛇的长度会增加一个单位。
5. 食物的位置随机生成,玩家需要控制蛇的头部移动到食物位置,才能吃到食物。
6. 游戏的目标是让蛇吃到尽可能多的食物,使其长度增长,同时避免蛇碰到边界或自己的身体。

以上就是贪吃蛇的游戏规则。

二、以下是一个简单的贪吃蛇小游戏的C语言代码示例:
```c#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <windows.h>

#define MAP_WIDTH 30#define MAP_HEIGHT 20

int map[MAP_HEIGHT][MAP_WIDTH];int snake_x, snake_y, food_x, food_y, score;

void init_map() { int i, j; for (i = 0; i < MAP_HEIGHT; i++) { for (j = 0; j < MAP_WIDTH; j++) { if (i == 0 || i == MAP_HEIGHT - 1 || j == 0 || j == MAP_WIDTH - 1) { map[i][j] = -1; } else { map[i][j] = 0; } } } snake_x = MAP_WIDTH / 2; snake_y = MAP_HEIGHT / 2; map[snake_y][snake_x] = 1; food_x = rand() % (MAP_WIDTH - 2) + 1; food_y = rand() % (MAP_HEIGHT - 2) + 1; map[food_y][food_x] = 2; score = 0;}

void draw_map() { int i, j; system("cls"); for (i = 0; i < MAP_HEIGHT; i++) { for (j = 0; j < MAP_WIDTH; j++) { switch (map[i][j]) { case -1: printf("#"); break; case 0: printf(" "); break; case 1: printf("O"); break; case 2: printf("*"); break; } } printf("\n"); } printf("Score: %d\n", score);}

void update_snake() { int dx = 0, dy = 0; if (_kbhit()) { switch (_getch()) { case 'w': case 'W': dy = -1; break; case 'a': case 'A': dx = -1; break; case 's': case 'S': dy = 1; break; case 'd': case 'D': dx = 1; break; } } int new_x = snake_x + dx; int new_y = snake_y + dy; if (map[new_y][new_x] == -1 || map[new_y][new_x] == 1) { printf("Game over!\n"); exit(0); } if (map[new_y][new_x] == 2) { score++; food_x = rand() % (MAP_WIDTH - 2) + 1; food_y = rand() % (MAP_HEIGHT - 2) + 1; map[food_y][food_x] = 2; } else { int tail_x, tail_y; for (tail_y = 0; tail_y < MAP_HEIGHT; tail_y++) { for (tail_x = 0; tail_x < MAP_WIDTH; tail_x++) { if (map[tail_y][tail_x] == 1) { map[tail_y][tail_x] = 0; break; } } if (tail_x < MAP_WIDTH) { break; } } } snake_x = new_x; snake_y = new_y; map[snake_y][snake_x] = 1;}

int main() { init_map(); while (1) { draw_map(); update_snake(); Sleep(200); } return 0;}```

注意:这个示例代码使用了Windows API中的一些函数,所以只能在Windows操作系统上运行。如果需要在其他操作系统上运行,需要使用相应的API函数或者图形库。


浏览 60
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报