当前位置: 首页 > news >正文

如何做静态页网站临夏网站制作

如何做静态页网站,临夏网站制作,湖北科技职业学院,十大求职招聘app排行接上一篇文章介绍完需要使用到的WIN32API的相关知识#xff0c;本篇文章让我们来开始使用他们来创建我们的贪吃蛇欢迎界面以及游戏所需要的地图。 准备工作#xff1a; 为了后面我们构建贪吃蛇游戏所需要的各项函数便于观察#xff0c;同时便于我们的函数声明#xff0c;在…         接上一篇文章介绍完需要使用到的WIN32API的相关知识本篇文章让我们来开始使用他们来创建我们的贪吃蛇欢迎界面以及游戏所需要的地图。 准备工作 为了后面我们构建贪吃蛇游戏所需要的各项函数便于观察同时便于我们的函数声明在这里我们先创建三个文件分别为1.Snake.h,2.Snake.c,3.test.c。它们分别用来 1.用于函数的声明数值的定义自定义类型的定义以及头文件的引用。 2.函数功能的实现。 3.对Snake.c中的函数进行引用最终实现贪吃蛇游戏。 同时我们这里分装三个用于整合的函数GameStart(),GameRun(),GameEnd()分别为游戏的初始化游戏运行游戏的善后工作部分本篇我们来进行初始化工作 一欢迎与介绍界面的打印 如上图所示这便是我们要打印的第一部分欢迎界面下面是实现步骤 1.1界面大小的设置及本地环境的切换 首先我们要对界面大小进行设置这里我们设置长度为100宽度为30Windows控制台主机的长宽比约为2  1。 system(mode con cols100 lines30); 紧接着我们要对C进行本地化处理这里我们要介绍一个新函数setlocale,定义如下:   char* setlocale (int category, const char* locale); setlocale 函数用于修改当前地区可以针对⼀个类项修改也可以针对所有类项。 setlocale 的第⼀个参数可以是前面说明的类项中的一个那么每次只会影响⼀个类项如果第⼀个参 数是LC_ALL就会影响所有的类项。 C标准给第⼆个参数仅定义了2种可能取值C正常模式和 本地模式。 setlocale 的返回值是⼀个字符串指针表示已经设置好的格式。如果调⽤失败则返回空指针 NULL 。 setlocale() 可以⽤来查询当前地区这时第⼆个参数设为 NULL 就可以了。 setlocale(LC_ALL, );//切换到本地环境 切换完本地环境后我们需要进行宽字符的打印这时候我们就需要用到wprintf函数进行打印宽字符 wprintf(L%lc\n, LP); 宽字符打印必须加上前缀 L 否则C语言会把字面量当作窄字符类型处理。前缀 L 在单引号前 面表示宽字符宽字符的打印使⽤ wprintf 对应 wprintf() 的占位符为 %lc 在双引号前面表示宽字符串对应 wprintf() 的占位符为 %ls 。 1.2界面光标的隐藏及光标位置调整打印文字 首先让我们用上节学的知识来隐藏光标实现代码如下注意这里false需要用到头文件stdbool.h HANDLE houtput NULL;houtput GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO CursorInfo { 25,false };SetConsoleCursorInfo(houtput, CursorInfo); 接着让我们把输出光标移到控制台的中间位置这里我们直接创建一个函数以便于我们后面可以随时的移动光标 void Set_Pos(short a,short b) {HANDLE houtput NULL;houtput GetStdHandle(STD_OUTPUT_HANDLE);COORD pos { a,b };SetConsoleCursorPosition(houtput, pos); } 1.3打印欢迎界面 void Welcom_Menu() {Set_Pos(35, 10);wprintf(L欢迎来到贪吃蛇小游戏);Set_Pos(35, 20);system(pause);system(cls); } 1.4打印介绍界面 void Welcom_Menu() {Set_Pos(35, 10);wprintf(L欢迎来到贪吃蛇小游戏);Set_Pos(35, 20);system(pause);system(cls);Set_Pos(35, 10);wprintf(L按 ↑ ↓ ← →键操控贪吃蛇移动\n);Set_Pos(35, 11);wprintf(L按小键盘‘1’或‘2’键加速或减速\n);Set_Pos(35, 12);wprintf(LTips:加速吃食物有额外分数加成);Set_Pos(35, 20);system(pause);system(cls); } 二地图的创建 本篇文章设置的棋盘27⾏58列行和列可以根据自己的情况修改然后我们先定义墙体所需要用到的特殊字符‘□’ #define WALL L□ 接下来我们来打印地图结果如下 实现代码如下 void GameMap() {Set_Pos(0, 0);int i 0;for (; i 58; i 2){wprintf(L%lc, WALL);}Set_Pos(0, 26);for (i 0; i 58; i 2){wprintf(L%lc, WALL);}for (i 1; i 26; i){Set_Pos(0, i);wprintf(L%lc, WALL);}for (i 1; i 26; i){Set_Pos(56, i);wprintf(L%lc, WALL);} } 三贪吃蛇蛇身的初始化 3.1蛇身信息的信息维护 在之后的代码实现过程中如果我们的蛇身信息没有包装在一块而是零散的分开处理这样无疑会增大我们的工作量所以我们自定义一个蛇的结构体我的自定义结构如下 typedef struct SnakeNode {int x;int y;struct SnakeNode* next; }SnakeNode, * pSnakeNode; typedef struct Snake {pSnakeNode _pSnake;//维护整条蛇的指针pSnakeNode _pFood;//维护⻝物的指针enum DIRECTION _Dir;//蛇头的⽅向,默认是向右enum GAME_STATUS _Status;//游戏状态int _Socre;//游戏当前获得分数int _foodWeight;//默认每个⻝物10分int _SleepTime;//每⾛⼀步休眠时间 }Snake, * pSnake; 当然这里只是最基础的需要维护的蛇身信息的整理如果读者想要实现更多功能可以以此为基础去增添结构体的成员。但我们仔细看图发现状态和方向我们是可以列举出来的所以我们这里使用枚举常量来整合它们 enum DIRECTION {UP 1,DOWN,LEFT,RIGHT };enum GAME_STATUS {OK,//正常运⾏KILL_BY_WALL,//撞墙KILL_BY_SELF,//咬到⾃⼰END_NOMAL//正常结束 }; 我们这个游戏中目前只有一条蛇所以我们可以直接在最开始将维护蛇身的指针定义出来   Snake snake { 0 }; GameStart(snake); 3.2蛇身信息的初始化 由于控制台的长宽比近似为2 1所以我们使用宽字符打印蛇身这里我们使用头插法以链表的形式初始化一个长度为5的蛇身同时设置蛇的初始移动方向为右一个食物的得分为10总成绩初始化为0起始状态设置为正常运行状态’OK‘ void SnakeInit(pSnake ps) {pSnakeNode cur NULL;int i 0;for (i 0; i 5; i){cur (pSnakeNode)mallloc(sizeof(SnakeNode));if (cur NULL){perror(SnakeInit:malloc;cur());return;}cur-next NULL;cur-x POS_X 2 * i;cur-y POS_Y;if (ps-_pSnake NULL){ps-_pSnake cur;}else{cur-next ps-_pSnake;ps-_pSnake cur;}}cur ps-_pSnake;while (cur){Set_Pos(cur-x, cur-y);wprintf(L%lc, BODY);cur cur-next;}ps-_Dir RIGHT;ps-_foodWeight 10;ps-_SleepTime 300;ps-_Socre 0;ps-_Status OK; } 3.3食物位置的初始化 我们都知道在贪吃蛇的游戏过程中蛇每吃掉一个食物自身长度就会增加一格所以既然蛇身的维护我们使用链表那食物信息的维护我们也使用malloc来开辟空间储存信息。 除此之外食物的信息也要在随机位置生成不能生成在墙体外或墙体上不能与蛇身位置重叠同时需要确保x坐标为2的倍数因为我们用的是宽字符打印的蛇身以下为我的实现代码记得在GameStart函数的最前面设置srand使他的随机值随着时间的变化而变化 int x 0;int y 0;again:do{x rand()%53 2;y rand()%24 1;} while (x % 2 ! 0);pSnakeNode cur ps-_pSnake;while (cur){if (cur-x x cur-y y)goto again;cur cur-next;}pSnakeNode cur2 (pSnakeNode)malloc(sizeof(SnakeNode));if (cur2 NULL){perror(malloc():FoofInit:cur2:);return;}cur2-next NULL;cur2-x x;cur2-y y;Set_Pos(x, y);wprintf(L%lc, FOOD);ps-_pFood cur2;cur2 NULL; OK到这里我们的初始化工作就完成了接下来我们要让这条蛇动起来我们下篇文章见。
http://www.zqtcl.cn/news/359828/

相关文章:

  • 如何创建一个网站用来存放东西wordpress 可以干嘛
  • 做健身俱乐部网站的目的和意义商超网站
  • 网站点击排名phpcms安装
  • 鹧鸪哨网站1v1深度开发最吸引人的营销广告文案
  • 网站建设可以学吗如何修改wordpress的登录
  • 保定做网站的公司百度软件商店
  • 金华市金东区建设局网站wordpress好看的下载页面
  • 英文网站seo发展前景成都网站开发建设推广
  • p2p网贷网站建设方案制作网站专业公司吗
  • 益阳网站建设企业房地产市场最新动态
  • 关于公司网站改版通知jmr119色带
  • 城关区建设局网站珠海中英文网站建设
  • 长春哪家做网站便宜手机英语网站
  • 应城网站建设莱芜拉呱
  • 如何建立淘宝客网站HTML网站建设课程
  • 网站建设供需chrome不安全的网站设置
  • 网站dns修改中国楼市未来发展趋势
  • 网站超级链接怎么做帮别人发广告赚钱平台
  • 做网站可以赚钱么注册做网站的公司
  • 河南省建协网官方网站建网站卖阀门
  • 医院网站怎么制作重庆安全监督工程信息网
  • 饰品网站建设规划书搭建微信网站
  • 开发网站访问流量赚钱加盟网站需要怎么做
  • 装饰协会网站源码湖南省郴州市北湖区
  • 花都网站建设价格重庆市住房和城乡建设厅网站
  • 北京住总第一开发建设有限公司网站wordpress 网站访问认证页面
  • 网站制作的管理苏州百度推广服务中心
  • 厦门建行网站首页企业展厅建筑外观
  • 重庆定制型网站建设1000套网站源码
  • 阿里云网站建设服务费会计科目安平县建设局网站