c语言贪吃蛇代码及解析
c语言贪吃蛇代码及解析
以下是一个使用C语言编写的简单贪吃蛇游戏,包括初始化游戏界面、绘制蛇和食物、移动蛇和检测碰撞等功能。
```c
#include <stdio.h>
#include <conio.h>
#include <windows.h>
// 定义常量
const int width = 20;
const int height = 20;
const int max_length = 5;
const int block_size = 20;
const char direction[] = "RDLU";
const int food_x = 10;
const int food_y = 10;
const int snake_speed = 100;
// 定义结构体,存储蛇的身体坐标和方向
struct Snake {
int x, y;
int length;
char direction;
};
// 定义结构体,存储食物的位置和状态(是否被吃掉)
struct Food {
int x, y;
};
// 定义全局变量,存储蛇和食物的信息
struct Snake snake;
struct Food food;
int score;
// 初始化游戏界面和蛇的状态(位置和长度)
void init() {
// 初始化窗口大小和标题栏
SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), width * block_size, height * block_size);
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &buffer_info);
SetConsoleWindowInfo(GetStdHandle(STD_OUTPUT_HANDLE), TRUE, NULL, NULL, buffer_info.dwMaximumWindowSize);
printf("Snake Game!
");
fflush(stdout);
// 初始化蛇的位置和长度为3个方块,方向为左移符('L')
snake.x = height / 2;
snake.y = height / 2;
snake.length = 3;
snake.direction = 'L';
// 随机生成一个食物的位置和状态(是否被吃掉)
srand((unsigned)time(NULL));
food.x = (rand() % (width * block_size)) + food_x;
food.y = (rand() % (height * block_size)) + food_y;
}
// 在屏幕上绘制蛇和食物的图像
void draw() {
RECT rect;
int i;
// 根据蛇的位置和方向计算出每个方块的坐标和颜色值(RGB)
i = snake.length;
int colorR = (snake.direction & 'R') == 'R'?155:155-(snake.length-i)*20;
int colorG = (snake.direction & 'G') == 'G'?180:180-(snake.length-i)*20;
int colorB = (snake.direction & 'B') == 'B'?25:25-(snake.length-i)*20;
int colorD = (snake.direction & 'D') == 'D'?0:0-(snake.length-i)*20;
int colorE = (snake.direction & 'E') == 'E'?7:7-(snake.length-i)*20;
int colorF = (snake.direction & 'F') == 'F'?145:145-(snake.length-i)*20;
int colorY = (snake.direction & 'Y') == 'Y'?11:11-(snake.length-i)*20;
int colorX = (snake.direction & 'X') == 'X'?191:191-(snake.length-i)*20;
int colorN = (snake.direction & 'N') == 'N'?165:165-(snake.length-i)*20;
int colorM = (snake.direction & 'M') == 'M'?135:135-(snake.length-i)*20;
版权声明
本文仅代表作者观点,不代表看看头条立场。
本文系作者授权看看头条发表,未经许可,不得转载。
