字符版本贪吃蛇游戏设计

相信大家对贪吃蛇这个游戏都非常熟悉

这就是大家平时所熟悉的贪吃蛇。
而今天在这里给大家简单介绍一下字符版本贪吃蛇游戏的设计,工具很简单,就是最普通的DEV C++。体现给我们的知识一个普通的黑色的控制台界面。
以下是一些初始的变量与操作的时候所用的函数。
char gamemap[20][40];//游戏地图大小 20*40
int score = 0;//当前分数 //记录蛇的结点
int x[800];//每个结点的行编号 int y[800];//每个结点的列编号
int len = 0;//蛇的长度 //记录水果信息
int fx = 0;//食物的横坐标
int fy = 0;//食物的纵坐标
int fcount = 0;//食物的数目
主要函数操作
void createfood();生成食物
void PrintgameMap(int x[],int y[]);画游戏地图
void move(int x[],int y[]);移动蛇
对于蛇来说,移动是非常重要的,没有移动的操作整个游戏就无法进行下去。而关于蛇的移动,代码如下

while (1) {
int cx[800]; int cy[800]; memcpy(cx, x, sizeof(int)*len); memcpy(cy, y, sizeof(int)*len);
if (s == ‘w’) { x[0]–; move = 1; if (x[0] <= 0) { printf(“Game over\n”); break; } }
else if (s == ‘s’) { x[0]++; move = 1; if (x[0] >= 19) { printf(“Game over\n”); break; } }
else if (s == ‘a’) { y[0] –; move = 1; if (y[0] <= 0) { printf(“Game over\n”); break; }
else if (s == ‘d’) { y[0]++; move = 1; if (y[0] >= 39) { printf(“Game over\n”); break; } }
int i; for (i = 1; i < len; i++) { x[i] = cx[i - 1]; y[i] = cy[i - 1]; }
for (i = 1; i < len; i++)/要是咬到了自己/ {
if (x[0] == x[i] && y[0] == y[i]) { beat = 1; }
else { beat = 0; }
}
if (1 == beat) { printf(“Game over\n”); break; }

上面这段代码用WASD控制蛇行走的方向,同时判定这条蛇现在的状态,如果撞到墙或者咬到自己,游戏就会结束。
控制蛇的行走和吃食物同样重要,代码如下。
void PrintgameMap(int x[], int y[]) { int snake = 0, food = 0; int i, j; /画游戏地图,并画出蛇的初始位置/ for (i = 0; i < 20; i++) {
for (j = 0; j < 40; j++) { if (i == 0 && j >= 1 && j <= 38)
{ gamemap[i][j] = ‘=’; }
else if (i == 19 && j >= 1 && j <= 38) { gamemap[i][j] = ‘=’; }
else if (j == 0 || j == 39) { gamemap[i][j] = ‘#’; }
else { gamemap[i][j] = ’ ‘; } /判断蛇是否在当前位置/ int k; for (k = 0; k < len; k++) {
if (i == x[k] && j == y[k]) { snake = 1; break; } else { snake = 0; } } { if (fcount&&fx == i&&fy == j) { food = 1; } else { food = 0; } } /若蛇在当前位置/
if (1 == snake) { printf(““); } else if (1 == food) { printf(“f”); } /若蛇不在当前位置 /else { printf(“%c”, gamemap[i][j]); } } printf(“\n”); } printf(“score:%d”, score); } /移动*/
void move(int x[], int y[]) {
上面这段代码的作用就是打印出来游戏地图,并且根据蛇吃到的食物来记录分数。此时,我们的字符贪吃蛇也大致上完成了。

猜你喜欢

转载自blog.csdn.net/dcy19991116/article/details/78906991