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

相关文章

SpringBoot条件注解核心作用与使用场景详解

《SpringBoot条件注解核心作用与使用场景详解》SpringBoot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注... 目录引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、@ConditionalOn

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优