本文共 1982 字,大约阅读时间需要 6 分钟。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/*
游戏实现:
先将界面画出来,并初始化蛇和食物
每个坐标都有类型,里面是食物、蛇体、或墙体还是背景
在蛇体的坐标内有蛇头的方向,这样蛇尾才能根据蛇头的方向移动
蛇移动是把蛇头前方的坐标改成蛇头,删掉蛇尾,将蛇尾前面的坐标改成蛇尾
*/
#include
#include
#include
#include
#define MAXH 15
#define MAXW MAXH //有bug!长宽必须一样!
#define UP '2'
#define DOWN '8'
#define LEFT '4'
#define RIGHT '6'
#define SNAKELEN 3 //蛇初始长度
#define N 3 //难度
struct {
char type;
char * ch;
}
charwall = {1, "*"}, //墙体
charbg = {2, "*"}, //背景
charfood = {3, "♂"}, //食物
charsnake = {4, "♀"}; //蛇体
struct xy {
int x;
int y;
}headxy, tailxy; //记录蛇头和蛇尾的坐标
char atlasmap [MAXH] [MAXW]; //地图所有的坐标
char direction [MAXH] [MAXW]; //里面存放蛇尾转弯方向
int score; //分数
int main (void); //声明主函数,死了要调用
void drawmap (void); //创建地图
void createfood (void); //随机坐标生成食物
void createsnake (void); //创建蛇
void loading (void); //伪加载
void init (void); //初始化
void die (void); //死亡
void move (char key); //蛇移动
char nextkey (char key, char inpkey); //判断输入的方向是否符合要求
void drawmap (void) //创建地图
{
int x, y;
for (y = 0; y < MAXH; y++)
{
for (x = 0; x < MAXW; x++)
{
if (x == 0 || y == 0 || x == MAXW - 1 || y == MAXH - 1) //周围一圈是墙体
{
printf ("%s", charwall.ch);
atlasmap [y][x] = charwall.type;
}
else //创建背景
{
atlasmap [y][x] = charbg.type;
printf ("%s", charbg.ch);
}
}
printf ("\n");
}
}
void createfood (void) //随机坐标生成食物
{
int x, y;
srand (time(0));
do
{
x = rand () % (MAXW - 2) + 1;
y = rand () % (MAXH - 2) + 1;
}while (atlasmap[x][y] != charbg.type); //如果该坐标内不是背景,则重新生成
gotoxy (x+1, y+1);
printf ("%s" , charfood.ch);
atlasmap [x][y] = charfood.type; //将该坐标存放为食物类型
}
void createsnake (void) //创建蛇
{
int x_centre, y_centre;
int len;
x_centre = MAXW / 2 + SNAKELEN / 2;
y_centre = MAXH / 2;
for (len = 1; len <= SNAKELEN; len++)
{
gotoxy (x_centre - len + 1, y_centre + 1);
printf ("%s", charsnake.ch);
//判断蛇头和蛇尾
if (len == 1)//蛇头坐标
{
headxy.x = x_centre;
headxy.y = y_centre + 1;
}
else if (len == SNAKELEN) //蛇尾坐标
{
tailxy.x = x_centre - len + 1;
tailxy.y = y_centre + 1;
}
atlasmap[x_centre - len][y_centre] = charsnake.type; //坐标类型改
转载地址:https://blog.csdn.net/weixin_34237700/article/details/117210383 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!