贪吃蛇
1.开发环境
(1)PC
(2)Microsoft Visual Studio2012
(3)Microsoft Word2016
2.设计思路
定义接口函数,分别代表蛇的各项功能
void Init_Snake();//初始化蛇
void Draw_Snake();//画蛇
void Move_Snake();//蛇的移动
void Key_Down();//按键设置
void Init_Food();//初始化食物
void DrawFood();//画食物
void EatFood();//吃食物
int DieSnake();//蛇挂掉的条件
void ShowGrade();//输出分数
void Key_Wait();//暂停
分别设计出每一个接口函数的内函数,再通过main函数结合起来,利用Easyx给设计好的贪吃蛇游戏加上图形化界面,丰富游戏者的游戏体验。
3.流程图与各端口函数间关系图
4.主要算法设计
(1)图片加载函数
//1,声明图片变量
IMAGE background1;//蛇身贴图
IMAGE background2;//蛇头贴图
IMAGE background3;//食物贴图
IMAGE background4;//右部分背景贴图
IMAGE background5;//墙贴图
//2,加载资源到变量:loadimage加载
void fun1()
{
loadimage(&background1 ,_T(“身体.bmp”));
}
void fun2()
{
loadimage(&background2 ,_T(“蛇头.bmp”));
}
void fun3()
{
loadimage(&background3 ,_T(“食物2.bmp”));
}
void fun4()
{
loadimage(&background4 ,_T(“background.bmp”));
}
void fun5()
{
loadimage(&background5 ,_T(“墙.bmp”));
}
(2)结构体定义与设计
typedef struct xy //xy别名->mypoint
{
int x;//横坐标
int y;//纵坐标
}mypoint;
//蛇的定义
struct Snake
{
int n;//蛇的节数
mypoint xy[300];//蛇的最大长度为两百节
char position;//定义蛇的方向
char speed;//速度
}snake;
//食物
struct Food
{
int existence;//判断食物是否存在
mypoint food_xy;// food的xy坐标
int food_grade;//吃掉食物的得分
}food;
//墙
struct Wall
{
mypoint Wall_xy;// Wall的xy坐标
}wall;
(3)枚举类型定义与设计
enum move_position{up = 80,down = 72,left = 75,right = 77,F1 = 112,F2 = 113};
5.运行界面示例
结束游戏
1.撞墙
玩家操作游戏时,贪吃蛇与图形化界面边界接触(蛇头与图形化界面边界墙重合),则游戏结束。系统会弹框提示游戏结束,计分系统停止运行。玩家可选择退出游戏或者再来一局。重新开始新游戏计分系统清零,并重新开始计分。
2.撞自己
玩家操作游戏时,贪吃蛇与图形化界面自身接触,则游戏结束。系统会弹框提示游戏结束并鼓励玩家继续努力,计分系统停止运行。玩家可选择退出游戏或者再来一局。重新开始新游戏计分系统清零,并重新开始计分。
3.通关
当玩家比较厉害时,当分数达到一定高度时,系统会自动“杀死”蛇。因为此时已经到达了游戏设定的最高分,言简意赅就是恭喜玩家已经成功通关,鉴于本人能力有限,在这就不做展示,还请玩家自行探究。
本游戏结构非常简单,容易上手,玩家只需要注意一下图形化界面右边的小提示就会轻而易举实现操作,祝各位玩家取得好成绩!
源码
/***********************************************************
Create date:2019.9.13
Designer by:MaL
Compiling environment:Microsoft Visual Studio2012
************************************************************/
#define _CRT_SECURE_NO_WARNINGS
#define _CRT_NON_CONFORMING_SWPRINTFS
#include<stdio.h>
#include<stdlib.h>
#include<graphics.h>
#include<conio.h>
#include<time.h>//随机函数种子#undef UNICODE
#undef _UNICODE
//1,声明图片变量
IMAGE background1;//蛇身贴图
IMAGE background2;//蛇头贴图
IMAGE background3;//食物贴图
IMAGE background4;//右部分背景贴图
IMAGE background5;//墙贴图
//2,加载资源到变量:loadimage加载
void fun1()
{
loadimage(&background1 ,_T("身体.bmp"));
}
void fun2()
{
loadimage(&background2 ,_T("蛇头.bmp"));
}
void fun3()
{
loadimage(&background3 ,_T("食物2.bmp"));
}
void fun4()
{
loadimage(&background4 ,_T("background.bmp"));
}
void fun5()
{
loadimage(&background5 ,_T("墙.bmp"));
}
//坐标
typedef struct xy //xy别名->mypoint
{
int x;//横坐标
int y;//纵坐标
}mypoint;
//蛇的定义
struct Snake
{
int n;//蛇的节数
mypoint xy[300];//蛇的最大长度为两百节
char position;//定义蛇的方向
char speed;//速度
}snake;
//食物
struct Food
{
int existence;//判断食物是否存在
mypoint food_xy;// food的xy坐标
int food_grade;//吃掉食物的得分
}food;
//墙
struct Wall
{
mypoint Wall_xy;// fWall的xy坐标
}wall;
//枚举出方向
enum move_position{
up = 80,down = 72,left = 75,right = 77,F1 = 112,F2 = 113};
/******************************************************************************************/
//接口函数定义
void Init_Snake();//初始化蛇
void Draw_Snake();//画蛇
void Move_Snake();//蛇的移动
void Key_Down();//按键设置
void Init_Food();//初始化食物
void DrawFood();//画食物
void EatFood(