本文主要是介绍14.Direct2D 捕鱼游戏开发-编写场景1结构frame1.h,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
环境:
编辑器:VS2015
系统:win10 专业版
碰撞:aabb obb盒模型(obb采用分离轴进行判断)
渲染:direct2d
场景截图:
这个场景就比较复杂了 我们先分析一波 首先点击需要发射炮弹,炮弹还要判断是否和鱼碰撞,鱼还要游动,然后还有金币的获取所以这个场景需要的对象有(消息映射,碰撞检测,鱼对象,创建鱼的对象,金币对象,炮弹对象)差不多就是这些了 下面看主要方法
主要方法和属性:
主要方法:
init 初始化场景的时候调用
visible 显示场景的时候调用
onClick 点击场景的时候调用
onClose 关闭窗口的时候调用
onMouseDown 鼠标按下的时候调用
onKeyUp 鼠标抬起调用
initPt 初始化炮台
initPt2 初始化炮台位置
initAmt1 炮台动画初始化
tk1Fun 游戏碰撞循环检测的函数(一个死循环不过采用的是sleep防止cup暴涨)
tk1FunC 游戏中计时器每一帧的调用 主要用来做渲染
mouseMove 鼠标移动的时候调用
removeBullet 移出子弹对象
removeFish 移出鱼对象
removeGold 移出金币对象
主要属性:
scene 当前场景的场景显示对象(action.h)
colObj当前场景的碰撞检测对象
nowScane 当前场景所显示的捕鱼场景
nowPt 当前的炮台等级
bottom 底部精灵对象的合集
tk1 场景计时器1
timerFish 判断鱼是否游出场景的检测间隔
usegold 储存绘制金币数量的精灵数组
jbNum 储存金币对象的数组
bulletArr2 储存炮弹对象的数组
fishArr 储存鱼对象的数组
fishConfigArr 储存创建鱼对象的数组
goldArr 储存金币对象的数组
maxBox 最大容器
调用流程:
初始化场景的位置是:
createBefore.cpp
再窗口显示之后我们调用初始化场景的函数
frame1.cpp
在初始化函数里面我们定义了各种需要的属性
然后我们添加了各种事件
然后我们创建碰撞检测循环
再然后我们定义所需要的各种精灵 金币精灵对象,炮弹精灵对象,然后我们打开我们的文档储存
再然后我们定义各种初始化对象
再场景2的onclick里面我们调用场景1的显示函数并设置场景1所需要的配置参数
下面我们看visible函数
在visible函数里面我们主要是处理底部对象的金币显示数量和背景绘制 然后就是启动计时器
下面看计时器调用的函数
在计时器里面我们调用了各个对象的周期处理函数 具体的可以看往期的内容
下面再看检测循环:
在这个函数里面我们通过一个死循环来周期的检测鱼和炮弹对象的碰撞情况
由于这个场景的方法太多我们就只说这几个主要的方法.
这是我们要做的目标:
项目开源地址:
https://github.com/yinhui1129754/fishing
游戏开发交流群:
859055710
这篇关于14.Direct2D 捕鱼游戏开发-编写场景1结构frame1.h的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!