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

相关文章

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

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

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

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服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

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选择的优

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件