这是一个用windows GDI做的一个小练习,目的是熟悉windows编程。
这是一个未完成品,完成度在60%以上,其中只完成了鼠标左键翻开,右键插旗,布雷和数字,自动翻空格子,重新开始(直接点击菜单任选一个),游戏失败等功能。主要功能中还有双键一起按下,游戏胜利效果,计时,鼠标按下并移动,暂停等功能未做。
游戏暂时发现二个BUG,当鼠标左键按下不放并且移动到其他格子的时候,最先鼠标指向的格子显示被挖开的痕迹,而在放开的位置的格子也将被挖开,这是由于GDI的绘制功能较弱引起的;还有一个就是当快速切换游戏在前台和后台的时候,偶尔会发现有闪烁,并能看见雷的影子,这是由于本人编写时候技术不成熟,编写思路上造成的。
游戏编写思路:
将游戏分为三层绘制:
最底层是背景层,绘制背景色和线框。
中间层布雷和数字。
最上面层绘制砖块。
好处:这样分布的好处就是鼠标在操作时,可以只对最上面层进行操作,而不用再全部进行操作。可以在一定程度上提高运行效率和绘制效率,降低闪烁效果。
缺点:当游戏快速的在前台和后台之间切换的时候,由于有绘制顺序,容易造成最高层绘制不及时而看见下面层面的东西,这也是造成BUG的重要原因。
逻辑部分:
首先定义一个结构体,其中用一个变量X来记录是否是雷,再用一个变量Y来记录雷的数量,用一个BOOL值来记录是否格子是否被按下,再用一些BOOL值来控制一些其他东西。当数组生成的时候,首先生成雷,然后编厉数组将有雷的格子的周围的Y+1,如果周围八格有X,那么不对X格子上的Y进行操作。生成好之后再绘制。
在绘制砖块的时候,考虑到砖块和旗帜在同一个层上,如果采用覆盖的方法,将旗帜绘制到第四层上面那么将在切换游戏窗口的时候造成更严重的绘制慢的情况。所以用一个BOOL值来控制是否绘砖或者绘旗帜,并将砖块和旗帜写在了同一层绘制上。
雷的绘制也利用同一个原理,当点到雷的时候,将编厉整个数组,将所有格子标记为已经点过,有雷的格子全部标记为翻开,被点的雷也由一个BOOL值来控制绘制成红色的雷。
操作时,只对2、3层进行操作,当鼠标左键按下时,2、3层不绘制,放开之后,恢复2层的绘制,第3层不绘制,并将已经操作的这个格子标记为已经按下,防止对该格子的再操作。
关于双键功能未做的主要原因是由于无法判断两个键是否同时被放开(双键的主要作用参照系统自带的扫雷游戏),所以没有完成。如果在双键按下是就起作用,那么编写过程将是这样:首先编厉周围八格,利用if语句判断周围八格是否被按下以及是否已经明确雷的位置,如果已经明确就将其他格子翻开。
自我评价:
由于这个练习的主要目的是熟悉windows编程,并且我的编程年龄不够,所以在设计思路上有欠缺,并且在结构组织上也很散乱,多是在编写的过程中临时加入的一些变量,没有事先完整的变成体系及思路,造成很多地方看起来代码臃肿。另外就是因为只学习了1周的windows编程,所以对windows的很多函数都不熟悉。
编程感想:
整个编写过程中,我了解到了windows编程的思路,也熟悉了更多的windows函数,但是最重要的是我学会了找错误的方法和思路,在编写的过程中,曾经有很多细节的地方没注意造成了不可预料的错误,但是都被我自己找了出来并且修改好了。而且在这个过程中,我也学会了如何学习新的东西,使用新的方法。
lemonlyt
- 粉丝: 3
- 资源: 5
最新资源
- 三相两电平逆变器dpwm(断续pwm,离散脉宽调制方法)simulink仿真开环,可降低开关损耗,利用载波调制改进处理,算法简洁
- 124-西门子200SMART加显控触摸屏水处理程序案例控制系统程序,30吨双级反渗透加EDI工艺 系统采用成熟、可靠、先进、自动化程度高的二级反渗透+EDI除盐水处理工艺,确保处理后的超纯水水质确
- 伺服电机两环系统控制仿真模型 PSO粒子群算法优化伺服电机速度环参数 模型搭建 算法优化 参数寻优
- #模型预测控制MPC仿真 基于MPC的三相全桥(两电平)逆变器并网仿真模型 控制目标包括:电网电流 此外,单矢量,开关信号结合了SVPWM 注: 仿真波形解读:电网电流控制效果很好,相角与电网一
- LQR车辆轨迹跟踪 基于二自由度动力学模型和frenet坐标系建立的模型状态空间方程,使用lqr控制跟踪轨迹,前馈控制消除稳态误差,基于五次多项式方法进行轨迹规划,实现高精度轨迹跟踪 在Carsim
- 基于c++的opencv卡尺卡尺找直线工具,可利用卡尺进行拖拽测量,仅提供全套源码加注释
- Fluent激光焊接小孔数值模拟,包括椎体热源模型,双椭球热源模型,反冲压力,表面张力,热浮力以及小孔表面的热损失,反冲压力采用基于密度的CSF公式平滑处理,热源,热损失也有处理,更材料参数即可使用
- VSG预同步控制matlab仿真模型 主要模块: 并网逆变器+VSG控制+预同步控制+电流电流双环控制 锁相环、三相准PR控制、PWM 并附带参考文献,内容详实,适合电力电子入门仿真参考
- 电气工程 自动化基于matlab的simulink仿真 带风力机最大功率跟踪直驱永磁同步电机 孤岛pwm制氢svpwm调制技术 双三相dq参数辨识
- 西门子200smart运动控制四轴搬运取料机案例程序 该程序为两台smart plc通过通讯控制四轴伺服电机的搬运取料机案例工程案例程序 包含200smar-PLC程序+项目电气接线图(PDF图纸
- comsol仿真,变压器三相短路绕组振动模型 包括电磁场分布,轴向力,幅向力,磁密分布,振动形变等结果
- 02固定及切拓扑多智能体系统分布式动态事件触发一致性控制
- 01线性多智能体分布式动态事件触发一致性
- simpack轨道客车模型,非线性临界速度300(第二个图横坐标3.6)
- MMC并网逆变器 滑模控制 1.MMC工作在整流侧,子模块个数N=22, 直流侧电压Udc=11kV,交流侧电压6.6kV 2.控制器采用双闭环控制,外环控制有功功率,采用PI调节器,电流内环采
- 媲美ti的磁链无感方案 2022最新优化版 源码不含开发板,全部开放
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论3