当前位置: 首页 > news >正文

c++游戏框架

游戏类 

class Sprite {
public:Sprite(int x, int y, int w, int h, const char* imagePath);~Sprite();void render(SDL_Renderer* renderer);void move(int x, int y);
private:SDL_Texture* texture_;SDL_Rect rect_;
};

物理引擎类

class PhysicsEngine {
public:PhysicsEngine();~PhysicsEngine();void applyForce(Sprite* sprite, float x, float y);void update(Sprite* sprite, float deltaTime);
};

游戏对象类

class GameObject {
public:virtual void update(float deltaTime) = 0;virtual void render(SDL_Renderer* renderer) = 0;
};

游戏函数

游戏初始化

bool init() {if (SDL_Init(SDL_INIT_VIDEO) < 0) {return false;}window_ = SDL_CreateWindow("Game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, screenWidth_, screenHeight_, SDL_WINDOW_SHOWN);renderer_ = SDL_CreateRenderer(window_, -1, SDL_RENDERER_ACCELERATED);return true;
}

游戏主循环

void run() {bool quit = false;SDL_Event event;while (!quit) {float deltaTime = getDeltaTime();while (SDL_PollEvent(&event) != 0) {if (event.type == SDL_QUIT) {quit = true;}}update(deltaTime);render();}
}

游戏更新

void update(float deltaTime) {for (auto& gameObject : gameObjects_) {gameObject->update(deltaTime);}
}

游戏渲染
 

void render() {SDL_SetRenderDrawColor(renderer_, 0xFF, 0xFF, 0xFF, 0xFF);SDL_RenderClear(renderer_);for (auto& gameObject : gameObjects_) {gameObject->render(renderer_);}SDL_RenderPresent(renderer_);
}

http://www.lryc.cn/news/103759.html

相关文章:

  • v-model绑定checkbox无法动态更新视图
  • 原生html—摆脱ps、excel 在线绘制财务表格加水印(html绘制表格js加水印)
  • 微信小程序配置上传多个u-upload上传
  • python使用win32com库实现对Excel的操作
  • <Maven>项目依赖导入Maven本地仓库命令
  • 爬虫006_python中的运算符_算术运算符_赋值运算符_复合赋值运算符_比较运算符_逻辑运算符_逻辑运算符性能提升---python工作笔记024
  • CPU Architecture Methodologies
  • Spring的@Scheduled
  • IP隧道技术原理
  • Docker私有仓库
  • LLM微调 | Prefix-Tuning, Prompt-Tuning, P-tuning, P-tuning-v2
  • Ansible 的脚本 --- playbook 剧本
  • CSP-J模拟赛 / 买文具
  • leecode算法--每日一题1
  • LViT:语言与视觉Transformer在医学图像分割
  • 蓝桥杯上岸每日N题 第五期(山)!!!
  • IDEA Writing classes... 比较慢
  • opencv中轮廓相关属性
  • Leetcode 144. 二叉树的前序遍历
  • 医学影像PACS系统源码:多功能服务器和阅片系统
  • php 生成连续递增的Excel列索引 可以控制多少列
  • Openstack等私有云
  • MySQL 8.0详细安装配置教程
  • pytest 入门
  • 分布式缓存数据一致性-解决方案
  • Java设计模式-享元模式
  • idea模块的pom.xml被划横线,不识别的解决办法
  • ffmpeg 中 av_log 是怎样工作的?
  • HTML+CSS+JavaScript:轮播图自动播放
  • python 自动化数据提取之正则表达式