2014-02-08 16 views
0

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

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

我的第一个问题是:在游戏中将所有内容作为一个“正常”或“推荐” ?如果我使用OOP语言,我应该如何编写我的游戏?

我的第二个问题是:如果有人用C这样的程序语言编写游戏,你会如何去创建相同的系统?我无法为每个游戏物品创建一个对象。据推测,我会创建一个struct,并有一个数组structs?另外,通过OOP设计,我可以让每个对象都能够控制自己(例如,碰撞检测)。我如何用程序语言来实现这一点?有一些代码遍历每个struct并从那里操纵每个结构?

+0

你可以用C编写OO代码。虽然OO现在是事实上的设计模式,但并不意味着你总是不可避免地必须将所有东西都当作对象来思考。 – 2014-02-08 22:21:07

回答

5

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

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

+0

这已经非常翔实了,谢谢。接受为答案。 – user9993

-1

面向对象不仅仅是一个数据和函数的包。但无论如何,如何设计游戏以及如何实现游戏并没有严格的限制,大多数设计师都不是程序员,他们通过规则和故事板进行思考。

2

添加到其他答案。如果你被迫使用程序范例,你应该尝试模仿一个面向对象的行为。

我想什么补充的是,除了是使模块化和自然想到的,面向对象的语言也支持多态性,我用了很多,觉得非常难以利用的程序语言。多态代码允许抽象层,这使得设计你的一般行为(枪支,角色等)变得容易,然后移动到具体的,不同的实现(像这样射击的枪,像这样射击的枪),这取决于你的的情况。您可以使用具体的实现,甚至不需要了解它们(作为使用某人的API的程序员),因为您始终可以使用它们的接口。还有通用编程,这允许甚至更深的抽象。

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