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

时间:2014-02-08 22:14:41

标签: c++ c oop procedural-programming

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

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

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

我的第二个问题是:如果有人要用C等程序语言编写游戏,那么你将如何创建相同的系统呢?我无法为游戏中的每个项目创建一个对象。据推测,我会创建一个struct并且有一个所谓structs的数组?此外,通过OOP设计,我将使每个对象能够自我控制(例如,碰撞检测)。我如何用程序语言实现这一目标?有一些代码可以遍历每个struct并从那里操作每个结构吗?

3 个答案:

答案 0 :(得分:5)

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

关于你的第二个问题:如果你选择的语言不允许接近自然的实现,你会想尽可能地对它进行建模。举个例子:你可以使用结构(属性)对对象进行建模并相应地实现行为 - 使用对这些结构进行操作的函数(例如enemy_hit(player))或结构中包含的函数指针(即player-> hit) (播放器,...))。

答案 1 :(得分:2)

添加其他答案。

OO范式对于游戏这样的事情来说确实很自然,如果你被迫使用程序范式,你应该尝试模仿OO行为。

我想补充一点的是,面向对象语言除了模块化和自然思考外,还支持 多态 ,我使用了很多,发现很难在程序语言中使用。多态代码允许抽象层使得设计你的一般行为(枪支,角色等)变得更加容易,而然后转移到具体的,不同的实现(枪支像这样射击,枪支就像那样等)取决于你的情况。您可以使用具体实现,甚至无需了解它们(作为使用某人API的程序员),因为您始终可以使用它们的接口。还有泛型编程,它允许更深层次的抽象。

当您为游戏设计干净,可扩展,可维护的代码时,抽象的参数非常有用。

答案 2 :(得分:-1)

OO不仅仅是一个数据和功能包。但无论如何,对如何设计游戏以及如何实现它们没有严格的限制,大多数设计师不是程序员,而是他们按规则和故事板思考。