C语言:大一贪吃蛇工程实践的记录

写在之前:

本次工程实践的选题为贪吃蛇,利用C语言编码实现贪吃蛇小游戏的写法很多,多数会引用windows.h这个头文件,之后会用链表来写,但是本人的链表很菜以至于下学期的数据结构有点难搞。我决定下载easyx引用graphics.h头文件来实现,个人认为此头文件好处在于有很多功能直接调用函数就可以实现,缺点也在于需要记忆函数名及用法,之后再运用。

展示:

以下为展示个人的代码实现及代码细节之处:

本系统由一个主函数、十个子函数和两种结构体以及4种头文件、若干全局变量、一个枚举类型组成,其中包含一个宏定义。十个子函数分别是welcome();
GameInit(); snakemove(); othersnakemove(); GameDraw(); keyControl(); EatFood(); GameOver1(); GameOver2(); ColorSnake(int i);主函数调用各个子函数实现系统功能。4种头文件分别是stdio.h 、conio.h、 stdlib.h、 graphics.h
编码子函数功能时调用头文件所含函数,简便快捷。两种结构体分别是对蛇和食物的定义。全局变量使整个代码均可引用,枚举类型是对操作蛇的方向的列举,宏定义了蛇的最大节数。

  1. 代码展示:
#include
#include
#include
#include//需要装一个easyx的库函数。
/*设计的知识点:结构体、循环、函数、easyx、数组。*/
//界面设置,创建窗口,图形窗口,此处就需要easyx的库函数。
#define SNAKE_NUM 50//蛇的最大节数
enum DIR {
   UP,DOWN,LEFT,RIGHT};
const int col = 35;
int sign=1;
int a;
int score=0;
//蛇自动变色的全局变量
unsigned int color = RED;
int colorSelect = 0;
//蛇的结构
struct Snake
{
   
	int size;//蛇的节数
	int dir;//蛇的方向
	int speed;//移动速度
	POINT coor[SNAKE_NUM];//坐标coor[]这个数组是用来存储蛇的节数,便于在坐标上整体表示,POINT是坐标表示的声明。
}snake; 
//食物的结构
struct Food
{
   
	int x;
	int y;
	int r;//具体大小
	bool  flag;//判断是否被吃
	DWORD color;//食物颜色
}food;
void welcome()
{
   
	char name[200];
	
	printf("/************************************************************/\n");
	printf("\tWELCOME TO THE GAME OF RETRO SNAKE\t\n");
    printf("\t请在英文输入法中操作,wasd 上下左右键 控制\t\n");
    printf("/************************************************************/\n");
    printf("\tPLEASE ENTER YOUR NAME:\t");
    scanf("%s", &name);
	printf("请选择难度:\n\t 1.普通(注:最大节数为500,大于会自行退出)\t\n\t2.困难(节数限制)\t\n");
    printf("\n\t请输入选择的序号:\n\t");
	scanf("%d",&a);
}
//数据初始化
void GameInit()
{
   
	//init 初始化 graph 图形窗口  
	initgraph(640,480);
	//初始化蛇
	snake.size=3;
	snake.speed=10;
	snake.dir = RIGHT;
	for (int i = 0; i < snake.size; i++)
	{
   
		snake.coor[i].x = 40-10*i;//由于POINT的声明坐标需要x,y表示。
		snake.coor[0].y = 10;
	}
	outtextxy(2 * snake.size * col + 50, 300, "作者:游宇鹏");//运用的文字输出函数,来自头文件graphics.h
	outtextxy(2 * snake.size * col + 50, 350, "创建时间:2020-6-26");
	//初始化食物 需要rand()随机函数
	food.x = rand() % 640;
	food.y = rand() % 480;
	food.color = RGB(rand() % 256, rand() % 256, rand() % 256);//食物颜色一直在变
	food.r = rand() % 10+5;
	food.flag = true;
}
void ColorSnake(int i)//蛇可以变成五颜六色
{
   
	switch (i)
	{
   
	case 0:
		color = RE

你可能感兴趣的:(初学分享,c语言,贪吃蛇,工程实践)