前言
贪吃蛇相信大家小时候都玩过,那么你有没有想过有一天你也能自己编程实现它呢?今天我就在这里教大家用C语言,通过自顶向下逐步求精的方法,实现一个简易的贪吃蛇。
准备工作
(首先心里要有点X数)既然是简易的,那么没有高大上的画面,我们实现的一定是字符版。为了方便我们之后的思考,我们先把最基础的几个参数和初始参数定下来。
#include<stdio.h>
#include<conio.h>
#define SNAKE_MAX_LENGTH 20
#define SNAKE_HEAD 'H'
#define SNAKE_BODY 'X'
#define BLANK_CELL ' '
#define WALL_CELL '*'
#define SNAKE_FOOD '$'
#define stay 'S'
char map[12][12] =
{ "************",
"*XXXXH *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"* *",
"************"
};
int snakeX[SNAKE_MAX_LENGTH] = { 5,4,3,2,1 };
int snakeY[SNAKE_MAX_LENGTH] = { 1,1,1,1,1 };
int snake_length = 5;
对没错,那个二元字符组就是游戏界面,第二行那一条就是我们的蛇了。
一条会动、会死的蛇
秉着由简入繁的原则,我们先来实现最基本的功能,就是一条能够接受我们命令(WASD)动起来,而且撞到墙或者自己会死的蛇。让我们先敲下伪代码。
输出字符矩阵
WHILE not 游戏结束 DO
ch=输入的字符
move(ch);
输出字符矩阵
END WHILE
输出 Game Over!!!
然后按照伪代码敲下main函数,以及我们秉着“自顶向下、逐步求精”的原则自己写的move函数以及判断死亡的函数。这里用到了两个小技巧,一个是getch()这个函数,可以让程序不需要每次输入后再敲个回车;另一个是p这个值(其实就是布尔值)来帮助记录蛇的死活。
void print(char map[12][12]) {