c++ - 游戏设计与程序语言和 OOP 语言的差异

标签 c++ c oop procedural-programming

<分区>

这可能更多地是关于如何使用 OOP 语言和程序语言来设计游戏的问题。

我见过的大多数使用 OOP 语言(例如 C++ 或 Java)的教程和页面都使用对象来创建游戏中使用的基本所有内容,例如用户可控制角色的类,子弹类屏幕,一个烟雾效果类,另一个飞箭类等。

我的第一个问题是:将游戏中的所有内容都实现为类的想法是“正常”还是“推荐”采用的想法?如果我使用 OOP 语言,我应该这样编写我的游戏吗?

我的第二个问题是:如果有人要用 C 等程序语言编写游戏,您将如何创建相同的系统?我无法为每个游戏项目创建一个对象。据推测,我会创建一个 struct 并有一个所述 structs 的数组?此外,通过 OOP 设计,我会让每个对象都能够 self 控制(例如碰撞检测)。我将如何用过程语言实现这一点?是否有某种代码遍历每个 struct 并从那里操作每个结构?

最佳答案

关于您的第一个问题:事情就是这样顺其自然的。当你想到你的游戏时,你会想到玩家、敌人、场景、房间、武器、目标等。pp. - 所有这些东西都自然地建模为对象,因为它们将属性(即成员变量)和行为分组(即方法)。所以这就是它通常的方式,如果您选择实现这些东西的语言提供了一种表达方式,您为什么不使用它?

关于您的第二个问题:如果您选择的语言不允许接近自然的实现,您将希望尝试尽可能接近地对其进行建模。拿你的例子来说:你会用结构(属性)为你的对象建模并相应地实现行为 - 或者使用在这些结构上运行的函数(例如 enemy_hit(player))或结构中包含的函数指针(即 player->hit(播放器,...)).

关于c++ - 游戏设计与程序语言和 OOP 语言的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652448/

相关文章:

c++ - 为物理引擎写入 'ON' 事件

c - 使用 struct timespec 检索 Linux 时间

c - 下载网页

c++ - 如何实现碰撞检测

c++ - 使用 a<32> 将 bitset<a> 转换为 signed int

c++ - 获取临时对象的地址

c - 带有类型或变量的 sizeof

c++ - 我可以将什么用作 RAII+关注点分离的标准 C++ 基类

c++ - 构造函数链接不使用类成员的默认值?

java - 通用类型 : wildcards vs variables of raw types