需要实现的功能:
- 地图绘制
- 控制蛇的运动
- 蛇吃食物
- 蛇撞墙死亡
- 计算得分
- 蛇身加减速
- 暂停游戏
Windows 这个多作业系统除了处理协调应用程序的执行、分配内存、管理资源外, 它同时也是一个服务中心,调用这个服务中心的各种服务(函数实现),可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序,所以便简称为API函数,WIN32 API也就是32位平台的应用程序编程接口。
平常我们运行起来的程序其实就是控制台程序
-
控制台窗口大小 :30行, 100 列 ,
mode con cols=100 lines=30
-
Display mode :
change the size of the command prompt screen buffer
mode con[:] [cols=<c>] [lines=<n>]
-
-
设置控制台窗口名字 :
title 贪吃蛇
-
pause
:suspend the processing of a batch program, displaying the prompt :
Press any key to continue ...
- If you press CTRL+C to stop a batch program, the following message appears,
Terminate batch job (Y/N)?
. If you press Y (for yes) in response to this message, the batch program ends and control returns to the operating system. - You can insert the pause command before a section of the batch file that you might not want to process. When pause suspends processing of the batch program, you can press CTRL+C and then press Y to stop the batch program.
- If you press CTRL+C to stop a batch program, the following message appears,
这些能在控制台窗口执行的命令, 也可以调用 c 语言函数 system
执行
int main()
{
system("mode con cols=100 lines=30");
system("title 贪吃蛇");
system("pause");
}
int fsetpos(FILE *stream, const fpos_t *pos)
sets the file position of the given stream to the given position
- stream : the pointer to a FILE object that identifies the stream
- pos : the pointer to a fpos_t object containing a position previously obtained with fgetpos
开始界面 ,
进行游戏 :初始化 , 游戏循环 :
{
根据输入按键的不同,做出不同反应
每经过一段时间,蛇进行移动
}
结束游戏
int main()
{
GameStart();
GameRun();
Gameend();
return 0 ;
}
void GameRun()
{
InitSnake();
CreateFood();
while(1)
{
Pos(64,10);
print("Score: %d", score);
if(GetAsyncKeyState(VK_UP)&&status!=D)stats = U;
else if(GetAsyncKeyState(VK_DOWN)&&status!=U)status = D
else if(GetAsyncKeyState(VK_LEFT)&&status!=R)status=L;
else if(GetAsyncKeyState(VK_RIGHT)&&status!=L)status=R;
}
}