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

英文手表网站教人做饮料的网站

英文手表网站,教人做饮料的网站,广告公司网站设计策划,做网站前台后台是怎么连接的目录 思路 框架​编辑 读取操作 数据操作 绘制画面 游戏的数据结构 用二维数组来模拟棋盘格 赢的情况 平局情况 Code 代码细节部分 #xff08;1#xff09;初始化棋盘格 #xff08;2#xff09; 初始化棋子类型​编辑 事件处理部分 落子 框架内代码的完善 数据处…目录 思路 框架​编辑 读取操作 数据操作 绘制画面 游戏的数据结构 用二维数组来模拟棋盘格 赢的情况 平局情况 Code 代码细节部分 1初始化棋盘格 2 初始化棋子类型​编辑 事件处理部分  落子 框架内代码的完善 数据处理框架代码的完善 检查是否赢了 函数 绘制图形框架代码的完善 绘制棋盘网格函数 绘制棋子 函数 绘制提示信息  函数 DBUG 优化 代码托管 三子棋/Test.cpp · 孙鹏宇/孙鹏宇的第一个仓库 - 码云 - 开源中国 (gitee.com) 思路 我们遵循先框架后思路得的思路 框架 首先是读取操作: 读取操作 读取鼠标单击之后的信息 接下来是数据操作: 数据操作 我们只需要对游戏胜负进行判断 胜的清空:一条线三颗棋子都一样 平的情况:棋格全部填满还未分出胜负。 游戏结束时使用弹出告诉玩家游戏结果,然后退出主循环。 绘制画面 我们使用line函数绘制一个3*3的棋盘格: x玩家时使用line函数对角线画两个线轮到O玩家落子时时使用cirlce函数画个圆: 游戏的数据结构 用二维数组来模拟棋盘格 棋盘内容为字符串初始化为‘- 赢的情况 我们对赢得情况进行穷举: 一共有八种 平局情况 如果9个网格均被棋子填满却没有获胜的一方那么就是平局 Code 写代码同样遵循先框架再细节的原则: 我们先把上面的内容转化为代码 框架: #includeeasyx.h #includeiostream using namespace std;//处理数据// //检测玩家是否赢了 bool Checkwin(char str) {} //检测是否平局 bool Checkavg(char str) {}//绘制图像 // //绘制棋盘格 void DrawBorad() {} //绘制棋子 void DrawPiece() {} //绘制提示信息 void DrawTipText() {} int main() {initgraph(60,600);//绘制窗口bool flag true;//退出主循环的标识列ExMessage msg;//存储消息BeginBatchDraw();//渲染缓冲区//主循环while (flag){//读取操作while(peekmessage(msg))//读取消息{//读取到的细节如何处理稍息再说}cleardevice();//清屏//重新绘图DrawBorad();DrawPiece();DrawTipText();FlushBatchDraw();//刷新缓冲区}EndBatchDraw();//刷新缓冲区return 0; } 代码细节部分 如果 x玩家赢了我们可以用MessageBox()函数弹出了一个框显示x玩家赢了: 代码如下: 同样的O玩家获胜的情况和平局的情况也写一下: 设置两个全局 1初始化棋盘格 2 初始化棋子类型 事件处理部分  用msg来表示鼠标的位置: 怎么把鼠标的位置映射到数组下标呢我们绘制的棋盘格的大小为600x600分成三等份之后每个格子的大小为200x200 所以我们求横坐标可以有这样一个公式:代码为: 落子 1首先判断是否可以落子 (2)  落完子之后要切换下次落子的棋子类型 框架内代码的完善 把之前只写了框架没写实现的函数补全: 数据处理框架代码的完善 检查是否赢了 函数 按照我们之前列的八种赢的情况写 Checkavg()函数 用两个for循环来遍历棋盘格中每一个元素如果还有空格没有落子就返回false代表没有平局最后如果没有返回false说明平局了返回true: 绘制图形框架代码的完善 绘制棋盘网格函数 棋盘格的网格其实就是四条线: 我们可以通过图形绘制相关函数-line函数来绘制: 首先棋盘格总大小是600x600每个小格子是200x200: 绘制棋子 函数 1绘制棋子首先用二维数组遍历一下棋盘如果要落的棋子是O那就在棋格中间画圆。 2棋盘中心的求法一个小格子长宽200x200中心坐标为左上角坐标100 3画圆的方法 4当棋子为x时就按小格子对角线画两条线 5对角线点求法:如下图6画对角线的方法: 7如果不是O或者那就什么都不用做。 8代码: 绘制提示信息  函数 适用settextcolor函数将提示文本设高亮: outtextxy()函数用来在窗口指定位置输出提示信息 code: DBUG 这样三子棋基本功能就做好了但是有bug 1闪退 2闪退过程中可以看见我们画的棋盘发现棋盘网格线条错位 原因 1绘制棋盘时手误 2闪退的原因是我们在判断是否平局用的else没设条件此刻没输值就直接平局了只要不是O‘x’就直接平局了这显示不是我们要的我们想要的是棋盘满了还没赢才平局因此我们应该引用checkagv函数。 修改 修改完之后运行 发现有两个错误 1鼠标左键不用点击就可以落子 2落子位置和我们鼠标落点位置不配置 鼠标左键不用点击就可以落子的原因 应该选择ExMessage的WM_LBUTTONDOWN表实列我选成第一个了: 落子位置不配置的原因: 1切换棋子类型应该包含在可以落子的前提下如果不能落子也就没必要切换棋子类型了: 修改之后 (2) 二维数组是按照横纵坐标系的 但是我们的窗口确是纵横坐标系: 错误 修改: 交互功能正常但是渲染功能有问题最后一颗棋子不会显示: 原因: 我们把重新绘图放在判断胜负的后面当玩家赢了的时候会执行flagfale此时会执行重新绘图。 当再次循环时flag因为false所以退出循环。也就是绘图只执行了一次一闪而过。 我们把绘图放到胜负判断之前,这样即便是不再进入循环也是最后一次落子的下一次绘图不会显示而最后一次落子的绘图会显示在当前窗口。 正常运行: 优化 当我们的程序跑起来之后查看任务管理器发现我们的程序消耗内存空间特别大; 这是因为计算机在执行while循环时特别快我们编写的主循环在顷刻间已经被执行了成千上万次。 因此为了不避免的销毁我们可以使用sleep函数使循环休眠几毫秒。 我们可以在主循环开头写一个开始数获取GetTickCount(),主循环结束位置写一个结尾数获取GetTickCount()函数。  通过计算 二者落差  可以得到  该主循环实际运行所需要的 毫秒数简称实需数。 如果我们想在60帧率下刷新那么就让1000/601616为我们的期望值。 如果   实需数   期望值,说明不用休眠。 否则实需数-期望值 休眠数。 代码托管 三子棋/Test.cpp · 孙鹏宇/孙鹏宇的第一个仓库 - 码云 - 开源中国 (gitee.com)
http://www.hkea.cn/news/14344193/

相关文章:

  • 网站建设赚钱么秀屿网站建设
  • html简单网站成品免费合肥市建设工程造价信息网
  • 如何在百度开个网站网建公司转型
  • 做的物流网站cms企业网站源码
  • 众筹网站功能本地升级wordpress
  • 网站开发服务费会计分录怎么用源码搭建网站
  • 做问卷网站大宗商品交易平台
  • 做网站要学的代码做装修广告网站好
  • 琼筑网站是哪家做的设计网站轮廓模板
  • 可以做音基题的音乐网站游戏推广怎么快速拉人
  • 武隆网站建设爱做奈官方网站
  • 不写代码门户网站建设南宁网站建设官网
  • 黄冈网站建设wordpress小型门户
  • 电子商务网站建设 第二版重庆手机网站制作费用
  • 网站开发毕设文档品牌网站建设要选磐石网络
  • 网站内容很少如何做seo淘宝推广工具
  • 网站建站销售怎么做权重提升
  • 中国建设招标网是私人网站吗九江网站建设网站制作
  • 自己创办网站wordpress 会话过期
  • 口碑好网站建设定制ui网站界面设计模板
  • 英语培训东莞网站建设中信建设有限责任公司 人力资源部
  • 安庆建设网站高碑店住房和城乡建设局网站
  • 专业手机网站建设多少钱网站图标的制作h1优化代码
  • 网站建设调研通知电脑网站和手机网站怎么做相同路径
  • 个人做网站简单的网站设计多少钱
  • 设计公司做网站有用吗网站制作最新技术
  • 老的网站为什么要改版新网站邢台市政建设集团网站
  • 海南智能网站建设报价学院网站建设 需求分析
  • 太原网站建设公司5858wordpress 支持vr吗
  • 网络推广培训有哪些课程枫林seo工具