移动网站备案,购物网站页面设计思路,user pro wordpress,电商公司名称怎么起名方法很简单#xff0c;打开页面#xff0c;复制#xff0c;粘贴
一.整体思维架构 我们根据游戏的开始#xff0c;运行#xff0c;结束#xff0c;将整个游戏划分成三个部分。在每个部分下面又划分出多个功能#xff0c;接下来我们就根据模块一一实现功能。
二.Gamesta…方法很简单打开页面复制粘贴
一.整体思维架构 我们根据游戏的开始运行结束将整个游戏划分成三个部分。在每个部分下面又划分出多个功能接下来我们就根据模块一一实现功能。
二.Gamestart
2.1设置窗口大小与窗口名字
由于游戏需要用到控制台窗口所以我们需要使用一些win32API的相关知识。
首先我们需要调整窗口大小这里用到了一个mode con的指令以及给title进行命名通过调用system来实现 在使用system之前要加上头文件 2.2隐藏屏幕光标
2.2.1 GetStdHandle
GetStdHandle是Windows ApI函数他用于从一个特定的标准设备标准输入标准输出标准错误中取得一个句柄用这个句柄可以操作设备。 我们通过一个houput指针来接收一份标准输出光标。
2.2.2 GetConsoleCursorInfo
GetConsoleCursorInfo是用来检索有关指定控制台屏幕缓冲区的光标大小和可见性信息。他的参数为一个bool类型。使用时需要一份handle指针以及一个相关结构体包含控制台光标信息。 2.2.3 CONSOLE_CURSOR_INFO
这是一个结构体能够获取有关控制台光标的信息。包括dwSize光标填充的字符单元格的百分比bVisinle游标的可见性。 这里我们将其置为false就可以隐藏光标。
2.2.4 SetConsoleCursorInfo
设置指定控制台屏幕缓冲区的光标大小和可见性。 我们将指针与检索信息传给其就能完成光标设置。
2.3 欢迎界面WelcomeToGame
在此之前我们需要制作一个坐标设置的函数。
COORD是Windows API中定义的一个结构体表示一个字符在控制台屏幕上的坐标。
由此我们可以制作一个定位函数 输入xy的坐标将光标定位到该处。
我们根据这个函数以及屏幕的大小适当调整位置打印相关信息。 这里我们运用到了pause 和cls使每打印完一次信息就清理屏幕打印下一句信息。
2.4创建地图CreatMap
首先我们定义一下墙体 为一个□这个字符号可以在输入法内找到。接着我们开始输入墙体从0.0开始在控制台内输入要用到wprintf输入则需要在类型前加上L。由于控制台的x坐标与y坐标大小不一样的原因x坐标相较于y坐标的每个单位要小所以我们的循环中x坐标处我们每两个一打印。 2.5创建蛇身InitSnake
2.5.1蛇身结点创建
这里我们用到一个结构体蛇身需要xy坐标以及下一个蛇身结点的地址。 2.5.2蛇的维护结构
一条蛇内要包含蛇头的指针维护蛇食物的指针蛇的初始方向蛇的状态得分情况蛇的大小每走一步需要休眠的时间。 我们用一个枚举结构体储存蛇的相关状态以及方向控制。 2.5.3初始化蛇身
传递一个蛇身结点初始化为cur。我们先初始化蛇身为5个结点通过for循环一次malloc出一块空间结点依次链接。将结点赋给_psnake。 之后我们需要将蛇身打印出来并且初始化数据。 2.6创建食物CreateFood
首先我们要保证食物要在地图内部其次食物不能与蛇身重复。
我们将食物坐标设置为⭐ 我们可以用xrand%532yrand%251使得坐标在地图内部while循环x%20使x坐标恒为2的倍数。 完成上述判断后给食物进行初始化 2.7总结Gamestart 三. GameRun
3.1右侧打印有效信息PrintHelpInfo 3.2 KEY_PRESS
这是一个宏用于检测按键状态若按键被按下则首位为1否则则为0 3.3主要设计思路
首先我们在右侧打印出游戏相应提示用KEY_PRESS判断按键来判断蛇的移动方向以及加速减速游戏暂停等等。我们用一个do while循环来操作蛇的每一步每走一步休眠一定时间直到游戏结束为止。 我们通过控制sleep和weight来实现加速和减速效果。
3.4 蛇的移动SnakeMove
蛇的移动首先要满足不能和原先方向相反移动。蛇头向前走蛇尾销毁结点。以及蛇的状态是吃食物撞墙自杀。
3.4.1上下左右移动
通过判断按键是否按下用Switch来进行循环判断注意x坐标每次移动2个单位。 3.4.2判断是否有食物
若下一个结点有食物就将食物与蛇结点相连接随后打印出整条蛇改变相应的分数最后销毁的食物空间创建一个新的食物。 若不是食物则创建一个新结点放在蛇头出并与蛇连接销毁最后一个蛇结点。 3.4.3撞墙或自杀 3.5总结GameRun 四. GameEnd
4.1主要思路
告知死亡原因并且释放所有结点。
4.2代码实现 五.完整代码
5.1 test.c 5.2 Snake.c 5.3 Snake.h