第四十一章 2D游戏(1)

首先需要确认游戏机制:
1.一个不能上下移动的挡板,只能左右移动
2.一个球在屏幕上运动,每次碰撞会使球根据碰撞位置改变运动方向
3.球运动到屏幕底部,则游戏结束
4.当所有方块被破坏,游戏胜利

其次,需要先定义一个超级游戏类:包含所有相关的渲染和代码。
作用是:管理游戏代码,将窗口代码和游戏进行解耦。这样就可以把相同的类迁移到不同的窗口库
封装一个初始化函数,一个更新函数,一个处理输入函数,一个渲染函数:
class Game
{
public:
// 游戏状态
GameState State;
GLboolean Keys[1024];
GLuint Width, Height;
// 构造函数/析构函数
Game(GLuint width, GLuint height);
~Game();
// 初始化游戏状态(加载所有的着色器/纹理/关卡)
void Init();
// 游戏循环
void ProcessInput(GLfloat dt);
void Update(GLfloat dt);
void Render();
};
该类包含了所有在一个游戏类中会出现的东西。
给定一个宽度和高度来初始化这个游戏,并使用Init函数加载着色器,纹理,并初始化所有的游戏状态。
可以通过调用ProcessInput函数,使用存储在Keys数组中的数据来处理输入。
在Update函数中更新游戏设置状态,举例:挡板和球的移动。
可以调用Render函数,对游戏进行渲染。当然,运动逻辑和渲染逻

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/13842.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Node 02-fs模块

fs 模块 fs 全称为 file system ,称之为 文件系统 ,是 Node.js 中的 内置模块 ,可以对计算机中的磁盘进行操作。 本章节会介绍如下几个操作: 文件写入文件读取文件移动与重命名文件删除文件夹操作查看资源状态 文件写入 文件写入…

基于Java+Springboot+vue体育用品销售商城平台设计和实现

基于JavaSpringbootvue体育用品销售商城平台设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式…

URL 转为QR code(二维码)

推荐一个良心的网站,能够免费地将url、text编码为二维码,而且还能设计logo、颜色等。 https://www.the-qrcode-generator.com/ 如下图: 可以自己定义logo、颜色: 还能查看扫描历史等统计信息: 上述所有功能都是免…

远程控制电脑的软件哪个比较好用

有多种软件选项可用于远程控制计算机,最适合您的软件选项取决于您的具体需要和要求。 以下是一些最流行的远程控制软件选项及其功能和优势: TeamViewer TeamViewer 是使用最广泛的远程控制软件选项之一。 它具有用户友好的界面,并提供文件传…

极豆科技加入飞桨技术伙伴计划,共筑智能网联汽车新生态

近日,极豆科技正式加入百度飞桨技术伙伴计划,双方将共同努力,联合推进人工智能、大数据、云计算等前沿技术在智能网联汽车领域的应用落地,携手推动汽车产业变革,加速车企迈向全面数字化。 上海极豆科技有限公司‍‍‍‍…

PyCharm-2023安装教程

访问JetBrains的官方网站,下载PyCharm最新版本的安装程序。 双击下载的安装程序,在弹出的安装向导中点击“下一步”。 阅读许可协议,并同意协议条款。 选择安装路径。默认情况下,PyCharm会安装在C:\Program Files\JetBrain…

day31—选择题

文章目录 1.在单处理器系统中,如果同时存在有12个进程,则处于就绪队列中的进程数量最多为(D)2.以下关于多线程的叙述中错误的是(C)3. 整数0x12345678,在采用bigendian中内存的排序序列是&#x…

centOS7.9安装nginx

此示例为安装nginx-1.20.1 (小版本无差别) 安装过程 sftp上传nginx-1.20.1.tar.gz文件到机器(在root目录下) #cd /usr/local/nginx/sbin #./nginx -V (查看版本,如果已经有安装过的话会出现版本号) 切换到loca…

MyBatis(十六)MyBatis使用PageHelper

一、limit分页 mysql的limit后面两个数字: 第一个数字:startIndex(起始下标。下标从0开始。) 第二个数字:pageSize(每页显示的记录条数) 假设已知页码pageNum,还有每页显示的记录…

hot100:数组——56、64

56. 合并区间 首先考虑只有两个区间的情况: 但是这6种情况可以合并成3种情况,就是上面的3种。首先先判断第一个区间的起始位置是否小于等于第二个区间的起始位置。如果不成立,则交换两个区间。 再考虑n个区间的情况,先将他们根…

centos7查看磁盘io

1.查看所使用到的命令为iostat,centos7没有自带iostat,需要安装一下 2.安装iostat命令 yum -y install sysstat 3.使用iostat命令 iostat %user:表示用户空间进程使用 CPU 时间的百分比 %nice:表示用户空间进程以降低优先级的…

门禁系统中人脸检测技术的原理剖析和使用教程

引言 人脸检测 API 是一种基于深度学习技术的图像处理API,可以快速地检测出一张图片中的人脸,并返回人脸的位置和关键点坐标,在人脸识别系统、人脸情绪识别等多种场景下都有极大的应用。 本文将从人脸检测的发展历程、原理、特点等角度出发…

学习笔记:《Foundation models for generalist medical artificial intelligence》

目录 一、GMAI模型的概念与优势 二、GMAI模型面临的挑战 1.验证 2.社会偏见 3.隐私 4.规模 5.技术挑战 三、结论: 参考文献 最近在《Nature》杂志上发表的一篇名为《Foundation models for generalist medical artificial intelligence》的文章&#xff0c…

Flutter 布局探索 | 如何分析尺寸和约束

theme: cyanosis 前言 本文来分享一下,通过查看源码和布局信息解决的一个实际中的布局小问题,也希望通过本文的分享,当你遇到布局问题时,可以靠自己的脑子和双手解决问题。 如下所示,将 TextField 作为 AppBar 组件的 …

拆解Open ODS View和HANA Composite Provider

这两个也不是新面孔了。 那么OODS和HCPR到底他俩怎么用?既然大家都是虚拟的,不占地方。那这俩infoprovider到底有啥区别? 首先就是目的不同。 HCPR是可以用Union和Join。也就是老的Multiprovider和InfoSet。Union就是说两个数据集的行能被…

【OS实验】【学习笔记】

文章目录 零、实验参考实验1 熟悉实验环境实验2 操作系统的引导实验3 系统调用实验4 进程运行轨迹的跟踪与统计实验5 基于内核栈切换的进程切换实验6 信号量的实现和应用实验7 地址映射与共享实验8 终端设备的控制实验9 proc文件系统的实现Reference 零、实验参考 &#x1f52…

【华为机考】专题突破 第一周:单调栈 739 、503 、901、84

刷题顺序参考于 《2023华为机考刷题指南:八周机考速通车》 前言 单调栈:分为单调递增和单调递减栈。(栈内元素成递增或者递减性): 单调递增栈:从栈底到栈顶数据是从大到小,即 栈内的元素从栈顶 到栈底 是递增的&#x…

【手把手刷CCF】202303-2-垦田计划100分(超简单思路,含详细解释注释与代码)

文章目录: 故事的开头总是极尽温柔,故事会一直温柔……💜一、🌳代码如下:二、🌵解题思路❤️❤️❤️忙碌的敲代码也不要忘了浪漫鸭! 故事的开头总是极尽温柔,故事会一直温柔……&am…

SpringBoot集成WebSocket实现及时通讯聊天功能!!!

1&#xff1a;在SpringBoot的pom.xml文件里添加依赖: <!-- websocket --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency> 2&#xff1a;在配置中…

java 拼接字符串的方法

1.拼接字符串的方法&#xff0c;先要将字符串转化为数字类型&#xff0c;再根据需要拼接。这样可以避免直接拼接导致的错误。 2.将字符串转化为数字类型&#xff0c;这个就是一个循环。可以使用循环的方法&#xff0c;但是循环次数不宜太多&#xff0c;否则容易出错。 3.可以使…