我的任务是写一篇文章,歌颂面向对象编程的优点,并创建一个附带的游戏来演示它们。
我最初的想法是找到一个用不遵循OOP范例的编程语言编写的简单游戏的教程(或者用OOP语言编写,但不是以OOP方式编写),并使用C#或Java (尚未决定)以OOP方式重新创建它。这将使我能够在两者之间进行具体的比较。
这个游戏不一定要复杂,俄罗斯方块,乒乓球,诸如此类。到目前为止,我遇到的问题是找到一个合适的教程,有什么建议吗?
发布于 2012-12-04 04:52:03
假设你找到了一个游戏的源代码,而不是在OOP中。你可以在你的文章中指出一些OOP的优点:
组织。由于游戏有许多任务,最好将责任分配给一个类。这意味着编写一个记录分数的类,一个执行文件访问(例如,读取和写入游戏状态)的类,代表您的角色的类,等等。否则,您将拥有一个包含数千行代码的巨大文本文件。即使是看着它也是一场噩梦,更不用说找到你需要的东西并修复它了。
Encapsulation.这是为了更好地组织而将属性和函数组合在一起。我们曾经有一个不同的数组来存储每个属性-(例如)一个用于飞机名称的数组,一个用于firepower的数组,另一个用于最高速度的数组,等等。这很糟糕,因为你需要确保所有这些数组中的相同索引实际上描述了正确的飞机。最好是创建一个Aircraft对象,并为其指定这些属性名称。然后你将有一个保存飞机的数组-不需要跟踪太多的数组。
可重用性。随着您编写更多的游戏(甚至是其他应用程序),您将遇到重用类的需求。例如,您将在纸牌游戏中使用与将来编写的任何纸牌游戏相同的Card类。
Polymorphism/Inheritance.说你想要显示每个角色--英雄和恶棍都在某种网格中。你会希望英雄和恶棍都继承角色。字符将具有公共属性,甚至还有一个抽象的Display()函数。然后,您将为Character和Villain编写自定义Display()函数(用于访问特定于类的数据以进行绘制)。然后创建一个角色对象数组,并且可以在每个插槽中存储一个恶棍或英雄。当游戏遍历该列表进行显示时,每个item.Display()调用都会根据角色的实际类型自动选择正确的Display()函数。试着在没有OOP的情况下这样做,你最终会得到一个很长的if-else (甚至可能是嵌套的)语句和所有绘图例程在一个地方。
这只是我在一般编程经验中的想法,你绝对可以在游戏编程中应用。可能有比前面提到的更多的OOP方面,所以你可能想要研究一下。对你的论文来说是最好的!
发布于 2014-01-15 07:30:04
您可以尝试从TICalc、Omnimaga或大多数其他计算器编程网站上获取一个(简单的) TI-Basic游戏,并尝试理解其代码。
发布于 2014-01-15 07:35:38
从这个站点尝试一个基本的游戏:
http://www.atariarchives.org/basicgames/
https://stackoverflow.com/questions/13373101
复制相似问题