Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 非面向对象游戏教程_Oop - Fatal编程技术网

Oop 非面向对象游戏教程

Oop 非面向对象游戏教程,oop,Oop,我的任务是写一篇文章,赞扬面向对象编程的优点,并创建一个附带的游戏来演示它们 我最初的想法是找到一个用编程语言编写的简单游戏的教程,该语言不遵循OOP范式(或用OOP语言编写但不采用OOP方式),然后用C#或Java(尚未决定)以OOP方式重新创建它。这将使我能够对两者进行具体的比较 游戏不必复杂;俄罗斯方块、乒乓球等等诸如此类的东西。到目前为止,我遇到的问题是找到一个合适的教程,有什么建议吗?假设您找到了一个不在OOP中的游戏的源代码。你可以在文章中指出OOP的一些优点: 组织。 因为一个游戏

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

我最初的想法是找到一个用编程语言编写的简单游戏的教程,该语言不遵循OOP范式(或用OOP语言编写但不采用OOP方式),然后用C#或Java(尚未决定)以OOP方式重新创建它。这将使我能够对两者进行具体的比较


游戏不必复杂;俄罗斯方块、乒乓球等等诸如此类的东西。到目前为止,我遇到的问题是找到一个合适的教程,有什么建议吗?

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

组织。 因为一个游戏有很多任务,所以最好将责任分配给一个类。这意味着编写一个保持分数的类,一个进行文件访问的类(例如,读取和写入游戏状态),表示角色的类,等等。否则,您将拥有一个包含数千行代码的大型文本文件。这将是一个噩梦,甚至看它,更不用说找到你需要的,并修复它

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

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

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


这仅仅是我在一般编程方面的经验,你完全可以应用到游戏编程中。OOP方面可能比前面提到的更多,因此您可能需要进行研究。为你的文章做最好的一切

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

从该网站尝试一个基本游戏:


ohh编号。。哦,哦,不,它不适合这样……也许你可以试着查找C或Basic的游戏教程?如果我没记错的话,它们都不是真正的OOP(尽管你可以在C中假装它)。顺便说一句,你可能会在网站上得到更好的回复,或者我还没有找到像BASIC这样的合适教程,但我正在寻找。但是谢谢你的指点,这些都是我要写报告的要点。