组织X11和Win32简单游戏代码的最佳方式是什么

What is the best way to organize code for a simple game for X11 and Win32

本文关键字:最佳 方式 是什么 代码 游戏 X11 Win32 简单 组织      更新时间:2023-10-16

我正在为一个任务实现一个简单的游戏,该游戏理想地在Unix(使用X11的图形上下文)和Windows(使用Window的GDI)上运行,同时使用它们的窗口管理器。构建代码的最佳方式是什么,这样我就可以简单地插入正确的C++类,使其在每个操作系统上运行?

更具体地说,我如何完全分离出图形&实际游戏组件之外的窗口组件?(例如,使用观察者模式,以便游戏组件在平台特定的窗口组件上观察用户输入,创建用于加载/显示子画面的公共界面,创建用于重新绘制的另一个公共界面,等等)。谁应该负责将每个对象的图形/设备上下文复制并粘贴到主屏幕的gc/dc?哪个组件应该包含主事件循环/窗口回调(如果它是主组件,那么每个平台需要两个版本的主组件吗?)此外,我如何使每个对象(例如块、字符等)都包含特定于平台的数据类型(X11的gc和GDI的DC)?

两个基本要求是我只能使用X11和GDI,并且它不能是多线程的。

游戏很少本质上依赖于平台。简单的游戏可以用GLUT制作,使用#defines维护两个版本的代码非常容易。回调由GLUT处理。

通过这种方式,GLUT将使您能够为Windows和Linux编写几乎相同的代码。(因为制作上下文等问题已经由GLUT处理)。

除非你的项目是明确地重写GLUT,否则我建议你坚持下去,继续写你的游戏。