10.Direct2D 捕鱼游戏开发-鱼类fish.h的封装

2023-11-06 16:30

本文主要是介绍10.Direct2D 捕鱼游戏开发-鱼类fish.h的封装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境:

编辑器:VS2015

系统:win10 专业版

碰撞:aabb obb盒模型(obb采用分离轴进行判断)

渲染:direct2d

相关知识说明:

鱼的游动:可以是一个连续的帧动画(我们这里采用的就是一个数组来储存每一帧的动画)

鱼的曲线游动:我们让鱼一直像前移动然后在移动的时候修改鱼的面向角度这样鱼就会有一个非常完美的曲线游动了又因为我们的鱼在修改每一帧的显示位置(根据储存帧的数组来的)从而达到一个鱼游动的效果

封装思路:

我们给fish对象定义两个数组来储存动画信息然后我们还应该又一个属性来表示鱼的状态,然后就是鱼的分数,死亡参数,最后还有一个鱼的视图属性

我们通过在鱼一直向前移动的时候修改鱼的面向角度从而达到一个曲线游动的目的

fish的相关说明:

主要方法有:

frameFun 每一帧调用的函数

moveForword 鱼向前移动的函数

removeScene 移出场景的函数

changeType 修改鱼显示类型的函数

inScreen 判断鱼是不是在场景里面

主要属性有:

createClass 创建鱼的创建实例对象

speed 鱼的游动速度

deathFrameTime 鱼的死亡存活帧数

getGold 鱼死亡了过后创建的金币数量

minAngle 游动的最小角度

maxAngle 游动的最大角度

angleAdd 确认角度是应该增加还是应该减小

view 鱼的视图

swim 鱼的游泳动画帧信息

death 鱼的死亡动画帧信息

下面对主要方法说明:

frameFun 每一帧调用的函数 fish.cpp

在这里我们先判断鱼的状态是处于游动状态(swim)还是死亡状态(death)

如果鱼是处于死亡状态我们就直接判断鱼在场景的存活帧(deathFrameTime)是不是小于0的如果是我们就直接移出掉鱼不是的话就减一

如果处于游动状态 我们先调用鱼的向前游动然后我们就判断鱼的当前角度与最大角度和最小角度的大小关系如果鱼的当前角度大于了鱼的最大角度那么鱼的angleAdd就应该处于角度减小的状态反之就是处于增加的状态

moveForword 向前移动方法fish.cpp

还是和bullet对象是一样的我们这里也是通过(colObj)的极坐标位移来进行修改鱼的坐标

removeScene 这个方法是在frame1.cpp里面赋值给鱼的 frame1.cpp

changeType 修改鱼的显示状态 fish.cpp

我们直接将我们的视图的动画信息修改为不同状态下的动画信息

因为鱼这里的精灵对象是使用的动画精灵所以我们这里只需要赋值就可以了

inScreen 判断鱼是否在场景里面 fish.cpp

还是和bullet对象是一样的我们通过aabb进行一个比较

这是我们要做的目标:

项目开源地址:

https://github.com/yinhui1129754/fishing

游戏开发交流群:

859055710

这篇关于10.Direct2D 捕鱼游戏开发-鱼类fish.h的封装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char