贪吃蛇的C语言实现(包含详细解释)
参考文章
https://blog.youkuaiyun.com/qq_40953281/article/details/79315254
关于贪吃蛇C语言的要求介绍
题目描述
设计一个类似贪吃蛇的游戏,并用C语言编写程序实现,该程序的功能参照贪吃蛇游戏,主要功能包括:
(1)蛇移动区域的设定,移动控制键的设置。
(2)食物的出现位置的随机性。
(3)蛇移动路径的自然性,蛇每遇到(吃)一个食物,蛇身会长长,直至布满整个移动区域。
(4)蛇头冲出设定的移动区域和蛇身体即为“失败”。
2.题目要求
(1)按照分析、设计、编码、调试和测试过程完成应用程序;
(2)学习并使用流程图等工具,并在撰写报告中使用;
(3)边框、食物、蛇头、蛇身的构成、蛇头的初始位置、蛇身的长度等信息可以自行安排。
程序预览
完整代码(包含部分测试代码已注释)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <Windows.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>
#include <algorithm>
#include <windows.h>
using namespace std;
#define up 'w'
#define down 's'
#define left 'a'
#define right 'd'
#define stop 'p'
char name[21]= {"user"}; //系统默认名称为user
typedef struct
{
char num[21];
char Name[21];
char garde[21];
} guys;//排行榜内容
guys noob[11];//排行榜中前十名的数据和当前玩家的数据
guys nownoob;//当前用户的信息
typedef struct
{
int num;
char Name[21];
int garde;
} midguy;//中间储存
typedef struct Snakes
{
int x;
int y;
struct Snakes *next;
} snake;//蛇坐标
snake *head,*tail;
struct Food
{
int x;
int y;
} food;//食物坐标
int score = 0;//分数
char click = 1;//是否按下键
int speed;//控制蛇的速度
void gotoxy(int x, int y)
{
COORD pos;
HANDLE handle;
pos.X = x;
pos.Y = y;
handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(handle, pos);
}//控制光标位置
void print(int x, int y)
{
gotoxy(x, y);
printf("■");
}//打印数据
void clearprint(int x, int y)
{
gotoxy(x, y);
printf(" ");
}//使用覆盖的方式删除
void creatfood()
{
srand((unsigned)time(NULL));//设置随机数
loop:
food.y = rand() % (25) + 1;
food.x = rand() % (54 - 1) + 2;
if (food.x % 2 != 0)
{
food.x++;
}
snake *bodys = head;
while (1) //遍历排除蛇身重复
{
if (bodys->next == NULL)
break;
if (food.x == bodys->x&&food.y == bodys->y)
{
goto loop;
}//如果食物生成在蛇的身上就重新生成一个食物。
bodys = bodys->next;
}
gotoxy(food.x, food.y);
printf("★");
}
int welcome()
{
printf("**************************************************************************************************************\n");
printf("**************************************************************************************************************\n");
printf(" 贪吃蛇\n");
printf("**************************************************************************************************************\n");
printf("**************************************************************************************************************\n");
printf("**************************************************************************************************************\n");
printf("**************************************************************************************************************\n");
printf(" 作者:计机国际张伟\n");
printf(" 学号: 201825110118\n");
printf("**************************************************************************************************************\n");
printf("**************************************************************************************************************\n");
printf("**************************************