12.Direct2D 捕鱼游戏开发-编写场景0结构frame0.h

2023-11-06 16:30

本文主要是介绍12.Direct2D 捕鱼游戏开发-编写场景0结构frame0.h,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境:

编辑器:VS2015

系统:win10 专业版

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

渲染:direct2d

再说代码之前我们先看看我们的界面截图:

我们先冷静分析这个界面的相关元素

首先这里应该有一个场景对象(action.h)来渲染各种精灵对象(sprite.h)然后当面点击开始游戏的时候我们的场景进行了切换所以这里还应该有一个消息映射(createBefore.h)所以这里就会用到我们的click事件然而当我们的场景有时候需要动画的时候怎么办所以这里就需要一个计时器(ticker.h)来操作动画的流程然后我们的主要程序是基于窗口的所以这里就还需要一个窗口操作对象(demoapp.h)好了经过上面的分析我们知道了我们的场景的基本结构(名字空间)

下面我们来看看主要的属性和方法:

主要属性:

scene储存场景对象的属性

app 储存操作app对象的属性

colObj 储存碰撞对象的属性(虽然没有用)

maxBox储存一个最大容器的属性(这个属性其实就是放入到场景对象的容器对象的一个容器方便我们在写代码的时候好操作)

主要方法:

init初始化场景的时候调用的函数(场景显示与否都会调用)

onClick 消息映射的click函数

visible 场景显示调用的函数

场景0(frame0.h)的调用流程:

看createBefore.cpp下的createWindow方法

我们设置了一个全局变量(不要问我为什么又了全局变量还要到处传因为我也不知道(嘿嘿嘿))

然后我们new了一个碰撞对象(所有的物理引擎都会有一个这样的内置对象或者方法没有的都是不完整的物理引擎)

然后我们调用场景0(frame0.h)的初始化函数然后我们将场景0的场景对象放到我们的app对象里面

下面的场景1(frame1.h)和场景2(frame2.h)也是一样的操作只是场景同时调用了visible;

可以看到场景0的运行内存才15.2mb

下面我们对场景0的各个方法进行说明:

我们先看init方法:frame0.cpp

我们先将场景对象给new出来然后我们赋值app,colObj属性然后我们将消息映射的onclick给赋值上然后我们new出一个displayObject对象然后我们将new出来的显示对象放入名字空间的场景(scene)属性中
下面我们看visible方法:frame0.cpp

我们先将场景需要的精灵对象(背景,按钮,logo)给创建出来(new)然后放到我们的场景的最大容器里面

下面的操作就是设置logo和按钮的位置

下面我们看click方法:frame0.h

我们先获取到我们的开始游戏按钮(大家不要担心变量过多而内存泄露要知道我们用的是(c艹)拥有自动回收垃圾变量的机制)

然后我们调用精灵对象的inRect其实这个就是一个简单的aabb判断只不过是一个点的判断我们判断一个点是不是存在鱼精灵对象里面这里我们判断鼠标位置是不是在开始游戏精灵对象里面如果在我们就设置当前场景对象为frame2选择游戏场景的界面

这里就是场景最基本的几个方法了其实这里少了一个方法我们应该有一个类似于销毁场景的方法(来释放掉场景中的多余精灵坑已经留在这里了如果要用这套源码还请自己修改哦)来隐藏场景这样就可以在场景切换的时候起到非常多的作用

 

这是我们要做的目标:

项目开源地址:

https://github.com/yinhui1129754/fishing

游戏开发交流群:

859055710

这篇关于12.Direct2D 捕鱼游戏开发-编写场景0结构frame0.h的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.