非面向对象的游戏教程

时间:2012-11-14 04:34:19

标签: oop

我的任务是编写一篇文章,赞美面向对象编程的优点,并创建一个附带的游戏来演示它们。

我最初的想法是找到一个用编程语言编写的简单游戏的教程,该编程语言不遵循OOP范例(或者用OOP语言编写而不是以OOP方式编写),并使用OOP方式重新创建它。 C#或Java(还没有决定)。这样我就可以在两者之间进行具体的比较。

游戏不一定非常复杂;俄罗斯方块,乒乓球等等。到目前为止我遇到的问题是找到合适的教程,有什么建议吗?

3 个答案:

答案 0 :(得分:0)

假设您找到了不在OOP中的游戏的源代码。您可以在论文中指出一些OOP优点:

<强>组织。 由于游戏有许多任务,因此将责任分配给一个班级是个好主意。这意味着写一个保持分数的类,一个进行文件访问的类(例如读写游戏状态),代表你的角色的类等等。否则,你将拥有一个包含数千行代码的巨大文本文件。即使看着它也会是一场噩梦,更不用说找到你需要的东西并修复它。

<强>封装 这是将属性和功能组合在一起以实现更好的组织。我们曾经有一个不同的数组来存储每个属性 - (例子)一个数组用于飞机名称,一个数组用于火力,另一个数组用于最高速度等等。这很糟糕,因为你需要确保所有这些数组都有相同的索引实际上描述了正确的飞机。最好创建一个Aircraft对象并为其指定属性名称。然后,您将拥有一个可以容纳飞机的阵列 - 无需跟踪太多阵列。

<强>复用性。 当您编写更多游戏(甚至其他应用程序)时,您将遇到重用类的需求。例如,您将在纸牌游戏中使用与将来编写的任何纸牌游戏相同的Card类。

<强>多态性/继承。 假设您想要显示每个角色 - 英雄和恶棍都是某种网格。你会希望Hero和Villain都继承Character。字符将具有共同的属性,甚至是[n abstract] Display()函数。然后,您将为Character和Villain编写自定义Display()函数(访问特定于类的数据以进行绘制)。然后创建一个Character对象数组,并且可以在每个插槽中存储一个恶棍或英雄。当游戏通过该列表显示时,每个item.Display()调用将根据角色的实际类型自动选择正确的Display()函数。尝试在没有OOP的情况下执行此操作,您最终会在一个地方找到一个长if-else(甚至可能是嵌套的)语句和所有绘图例程。

这仅仅来自于我在普通编程方面的经验,你绝对可以在游戏编程中应用。可能有更多的OOP方面,所以你可能想研究。最好的文章一切!

答案 1 :(得分:0)

您可以尝试从TICalcOmnimaga或大多数其他计算器编程网站获取(简单)TI-Basic游戏,并尝试了解其代码。

答案 2 :(得分:0)

尝试使用此网站的BASIC游戏:

http://www.atariarchives.org/basicgames/