贪吃蛇游戏开发文档最终
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
贪吃蛇游戏开发文档
本文档为稻草人于暑假开发C语言版本之链表学习的贪吃蛇游戏文档!
一:游戏分为两个大模块:
一:界面开发(UI):
1:菜单界面;
2:游戏界面;
3:积分板块;
二:游戏开发:
1:界面的控制;
2 : 成长的规则;(1300升中级,2500升高级)
3:碰撞检测
//本游戏采用全局使用键盘控制,以及使用了多线程,所以使用了WINDOWS API函数,//运行系统:Windos/7/8/10/XP
二:本项目所用到的头文件:
1:库头文件:
#include
#include
#include
#include
2:自写头文件:
#include"tools.h"
#include"Snake.h"
三:头文件介绍:
Snake.h头文件为:游戏的核心文件,里面包含了游戏界面的绘制函数,游戏的成长机制,游戏的碰撞检测等。
Snake.h;
typedef struct Snaked{
int x;
int y;
//蛇身体的坐标
char Content[3];
Snaked *pNext;//指向下一个结构体
Snaked *pHead;//指向上一个结构体
}Snakedd;//定义蛇身体的结构体
void GameWord(void);//绘制游戏界面
void ConsoleControl(void);//控制台显示格式控制
void MenuControl(void);//菜单控制中心
Snakedd *ProduceSnake(int iCnt); //产生蛇的身体,iCnt代表的是蛇的身体有几节。
void PrintList(Snakedd *pHead);//打印出链表(蛇身)
void DeleteList(Snakedd *pHead);//销毁链表
void RandomCoordinate();//产生一个随机坐标,并且打印出食物
//多线程函数:
DWORD WINAPI MobileSnake(LPVOID lpChandle); //移动蛇(未实现)DWORD WINAPI KeyboardControl(LPVOID lpChandle);//键盘控制。DWORD WINAPI LostGameTime(LPVOID lpChandle);//已经用去的时间
//后续函数占位:
Tools.h头文件为:辅助头文件,它里面包含了对控制台的一些控制
Tools.h:
void HideCursor(bool Switch);//光标显示与隐藏函数;true;显示光
标;false:隐藏光标
void gotoxy(int x,int y);
void Block(int x,int y,int Wide,int Hight);//绘制方框函数 x,y代表方框起始的左上角坐标;Wide:输出方框的长; Hight:输出方框的高
int Menu(char* MenuTxt[],int Lenght,int Wide,int Hight,int x,int y);//菜单选项绘制; MenuTxt:代表要绘制出的菜单选项; Lenght:代表选项的总项目数;x,y代表方框起始的左上角坐标;Wide:输出方框的长; Hight:输出方框的高;返回值;-1 代表左键 ;其他值代表右键
四:函数的实现:
Tools.h头文件:
**********************第一次完成函数:*************************** ***********************void HideCursor(bool Switch);************* void HideCursor(bool Switch)
{
int iCnt=0;
if(Switch==true)
iCnt=1;
else
iCnt=0;
CONSOLE_CURSOR_INFO cursor_info = {1, iCnt};
SetConsoleCursorInfo(
GetStdHandle(STD_OUTPUT_HANDLE),
&cursor_info);
}
*********************************END******************************
***********************void gotoxy(int x,int y)******************* void gotoxy(int x,int y)
{
COORD xy;//光标的位置
HANDLE hHand;//句柄变量
hHand=GetStdHandle(STD_OUTPUT_HANDLE);//获取输出的句柄
xy.X=x;
xy.Y=y;
SetConsoleCursorPosition(hHand,xy);//设置控制台光标的位置
}
*********************************END******************************
**********void Block(int x,int y,int Wide,int Hight)************** void Block(int x,int y,int Wide,int Hight) {
int i=0;//上边框
gotoxy(x,y);
printf("┏");
for(i=0;i { printf("━"); } printf("┓"); //下边框 gotoxy(x,y+Hight-1); printf("┗");