贪吃蛇:
一、实现的功能:按上下左右建可以移动,但是这个实验里:
(1)只有一条蛇,
(2)蛇每次只能吃一个食物,
(3)游戏界面只有边界部分有墙
(4)结束条件:a、撞墙(蛇越界);b、蛇幢到自己
(5)得分辅助、速度
(6)字符界面
二、明确需求:
三、MVC
model:(自顶向下分析):蛇、食物、墙 、
可以将其看成一个坐标轴:
1、通过线性表可以表示蛇的前进(用链表表示一个蛇)
假设坐标为:(5,1),(6,1),(7,1)
蛇头前进一步:
(5,1),(6,1),(7,1),(8,1)
蛇尾缩一步:
(6,1),(7,1),(8,1)
2、view:
3、controller:
四、实现的具体功能:
//一个周期内要做的事情:1、蛇要前进(没有吃到食物):添加蛇头节点,删除尾节点
//2、判断是否结束:a、撞墙;b、撞到自己
//3、蛇吃到食物(蛇要增长):添加头节点;重新生成食物;加分(加到多少分的时候速度增加)
//4、方向键来决定蛇的前进方向:用户按下按键,调用函数,
GetAsyncKeyState()函数的用法
#define _CRT_SECURE_NO_WARNINGS 1
# include<windows.h>
# include<stdio.h>
int main()
{
//
while (1){
SHORT r = GetAsyncKeyState(VK_UP);
//可以异步的获取到有没有按上键,按下为0值,不按为非0值
printf("%\n", r);
sleep(300);
}
return 0;
}
SetConsoleCursorPosition的使用:
查阅网站:msdn setconsolecursorposition
BOOL WINAPI SetConsoleCursorPosition(
_In_ HANDLE hConsoleOutput,//HANDLE找句柄:改变光标的位置此时指的是改变标准输出上光标的位置(windows上统一使用的东西)
_In_ COORD dwCursorPosition//);
#define _CRT_SECURE_NO_WARNINGS 1
# include<windows.h>
# include<stdio.h>
int main()
{
HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coord;
for (int i = 0; i < 6; i++){
coord.X = i * 2;
coord.Y = i;
SetConsoleCursorPosition(hStdout, coord);
printf("%02d", i);
}
return 0;
}