dede手机网站模板,电子产品网站建设策划,云南建设投资控股集团有限公司网站,企业形象vi设计案例分析在贪吃蛇小游戏的实现#xff08;1#xff09;中#xff0c;我们学习了win32 相关的一些知识#xff0c;本篇文章#xff0c;博主将带领大家从0开始实现贪吃蛇小游戏#xff01; 贪吃蛇游戏设计与分析
本地化
locale.h实现本地化#xff0c;该头文件提供的函数…在贪吃蛇小游戏的实现1中我们学习了win32 相关的一些知识本篇文章博主将带领大家从0开始实现贪吃蛇小游戏 贪吃蛇游戏设计与分析
本地化
locale.h实现本地化该头文件提供的函数用于控制C标准库中对于不同的地区会产生不一样行为的部分如数字量的格式货币量的格式字符集以及日期和时间的表示形式类项通过修改地区程序可以改变它的行为来适应世界的不同区域但地区的改变可能会影响库的许多部分其中有一部分使我们不希望改变的。所以C语言支持针对不同的类项进行修改下面的一个宏指定一个类项
LC_COLLATE影响字符串比较函数LC_CTYPE影响字符处理函数LC_MONETARY影响货币格式LC_TIME影响时间格式LC_NUMERIC影响printf的数字格式LC_ALL针对所有类项的修改 setlocale函数char * setlocale (int category,const char* locale);其中第一个参数可以是前面说明的类项中的一个第二个参数有两种取值“C”和“ ”。“C”代表正常模式“ ”代表本地模式。
在任意程序执行开始时都会隐藏调用
setlocale(LC_ALL,C);
当程序运行起来后想改变地区就要调用setlocale函数切换到本地模式
setlocale(LC_ALL, );
宽字符的打印
宽字符的字面量必须加上前缀L否则C语言会把字面量当做窄字符类型来处理。前缀L加在单引号前面表示宽字符宽字符的打印用wprintf对应wprintf的占位符为%lc在双引号前面表示宽字符对应wprintf的占位符为%ls
#include stdio.h
#include locale.h
int main()
{setlocale(LC_ALL, );wchar_t ch1 L新;wchar_t ch2 L年;wchar_t ch3 L快;wchar_t ch4 L乐;wprintf(L%lc\n,ch1);wprintf(L%lc\n,ch2);wprintf(L%lc\n,ch3);wprintf(L%lc\n,ch4);return 0;
}
元素设计
地图坐标实现一个27行58列的棋盘再围绕地图画出墙。 蛇身和食物初始化状态假设蛇的长度是5蛇身的每个节点为〇在固定的一个坐标处比如24,5 处开始出现蛇连续5个节点。注意蛇的每个节点的x坐标必须是2的倍数否则可能会出现蛇的一个节点有一半出现在墙体内另一半出现在墙体外的情况。关于食物就是在墙体内随机生成一个坐标x坐标必须是2的倍数坐标不能和蛇的身体重合然后打印❤数据结构设计
蛇节点结构在游戏运行过程中蛇每次吃一个食物身体就会变长一节如果我们使用链表存储蛇的信息那么蛇的每一节其实就是链表的每个节点。每个节点只需要记录好地图上的坐标就行。蛇节点结构如下 typedef struct SnakeNode
{int x;int y;struct SnakeNode* next;
}SnakeNode,*pSnakeNode; 要管理整条贪吃蛇需要再封装一个snake结构来维护整条贪吃蛇 typedef struct Snake
{pSnakeNode _pSnake;//维护整条蛇的指针pSnakeNode _pFood;//维护食物的指针enum DIRECTION _Dir;//蛇头方向enum GAME_STATUS _Status;//游戏状态int _Score;//当前获得分数int _foodWeight;//默认每个食物十分int _sleepTime;//每走一步的休眠时间
}Snake,*pSnake; 枚举蛇的运动方向 enum DIRECTION
{UP 1,DOWN,LEFT,RIGHT
}; 枚举运动状态 //枚举游戏状态
enum GAME_STATUS
{OK,//正常运行KILL_BY_WALL,//撞墙KILL_BY_SELF,//咬到自己END_NORMAL//正常结束
};游戏流程设计
在下一节中我们将根据游戏流程的设计进行具体代码的实现~今天是博主复工的第一天相信不少小伙伴也都以及回到工作学习的岗位上了新年新气象大家一起加油冲呀