14.Direct2D 捕鱼游戏开发-编写场景1结构frame1.h

2023-11-06 16:30

本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/357747

相关文章

nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析(结合应用场景)

《nginx-t、nginx-sstop和nginx-sreload命令的详细解析(结合应用场景)》本文解析Nginx的-t、-sstop、-sreload命令,分别用于配置语法检... 以下是关于 nginx -t、nginx -s stop 和 nginx -s reload 命令的详细解析,结合实际应

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF