我最近听到一位指导老师的话,开发游戏是学习编程的最佳方法。除了必须使用代码创建所有内容外,他还说,您确实可以充分体验并将OOP实施到您的程序中。换句话说,您在游戏中所做的一切从技术上和概念上都是文字对象。进行此假设是否安全?还是在学习编程时总会有例外?
请注意,它是针对.net / xna / c#开发的。
我最近听到一位指导老师的话,开发游戏是学习编程的最佳方法。除了必须使用代码创建所有内容外,他还说,您确实可以充分体验并将OOP实施到您的程序中。换句话说,您在游戏中所做的一切从技术上和概念上都是文字对象。进行此假设是否安全?还是在学习编程时总会有例外?
请注意,它是针对.net / xna / c#开发的。
Answers:
我认为游戏开发是最具挑战性的开发。让我们看一个创建第一人称射击游戏的人需要知道的所有概念:
您会看到,一款游戏可以同时涵盖很多领域。如果您愿意花费时间并使其变得更好,那么它就成为了很好的学习工具。
对于OOP,这是一种有效的模式。您可以使用游戏作为学习良好的设计技巧的学习工具。
但是,要回答您的问题,这不是学习编程的唯一方法。一旦您成为中级开发人员,创建游戏就会让您接触到很多编程概念和水平。此外,这很有趣!
不要重言,而是编程是学习编程的最佳方法。如果您对计算机游戏感兴趣,那么编程游戏可能是学习编程的好方法。
我不在乎游戏,但是我喜欢数学,所以我的许多学习项目本质上都是数学。
最重要的是,您需要找到解决代码问题的方法,并且游戏可以为许多人工作。
这是一个学习编程,除其他方式方法。编写代码时,您会学到东西。现在,这是最好的方法吗?不太确定。
至少,您的老师给出的两个理由是无效的。
“一切都得在代码中创建”:当你写一个商业应用程序,你实际上是写代码。它不会用魔术来写。是的,有一些助手可以让您使用自动生成的代码。不,使用它们不是强制性的。顺便说一句,自动生成的部分通常是编程中最烦人的部分(不是通过将控件添加到Windows Forms控件中,您将学到一些令人兴奋和有用的知识)。
“您确实可以充分体验并在您的程序中实现OOP”:有人必须向我解释为什么这仅对游戏有效,而对其他任何内容都无效。如果您确实了解OOP并想使用它,则也可以在业务应用程序中使用它。如果您不了解它或不想使用它(例如喜欢使用函数式编程),那么游戏开发将不会迫使您进行更改。
开发游戏可能很有趣。大多数年轻人喜欢游戏,因此他们会喜欢开发游戏而不是编写业务应用程序,这对于大多数人来说将是无聊的。看到这一点,教师可以开始相信实际上游戏是学习编程的最佳方法,然后他们将尝试为此找到逻辑上的解释。
话虽这么说,但这些老师的最终目的是使游戏开发像开发商务应用程序一样让年轻人感到无聊。如果他们认为必须进行游戏才能学习OOP等,那么他们将要求学生做一些根本不愉快的项目。这是我上大学时老师最大的错误之一。他们经常给我们提供游戏项目以控制台方式在Ada中编写。没有图形。没有乐趣。没有用户体验。在我的一生和职业生涯中,我从未见过如此乏味的项目。
BadGuy
,Weapon
,PowerUp
,在游戏和其他物品很容易被一个对象。您可以对对象之间的交互进行编程,并在屏幕上查看它们。我认为视觉部分是使它如此吸引人的原因。具有的类型层次业务应用程序ServerTaskScheduler
,AbstractDataProcessor
,UserQueryAgent
,等...不如令人兴奋,即使他们可以教相同OOP概念的游戏。
Customer
或Product
或Transaction
可以是对象。但是我知道,处理BadGuy
s而不是无聊的Transaction
s 更加有趣。
Transaction
需要什么的开发人员。
游戏编程是学习游戏编程的最佳方法。如果您想学习Web开发,请执行此操作,如果您想学习系统编程,请进行此类操作。
游戏编程具有挑战性,并且很可能会教给您很多东西(Michael在他的回答中提到了很多,其中许多都是非常具有挑战性的,并且在游戏外也可以使用)。创建一个RPG或大亨(或类似的游戏)会教给您很多有关OOP设计的知识,因为它们非常适合这种范例。根据图形和物理的复杂性,您还将能够学到很多有关性能方面的注意事项,一些游戏的硬核数学等等。
这是学习某些事物的好方法,也是最好的方法,但它不是学习编程的上乘方法。无论您编写了多少游戏,您仍可能不知道如何制作操作系统。我认为,即使有时间,大多数开发人员仍然可以通过开发游戏来赚钱,即使他们没有将其作为编程的主要准则。
真的不是。没有一个项目的学习编程的最佳类型。最好的项目类型是与您的兴趣相关的项目。
例如,我尝试通过两种不同的方式学习编程,包括学习编程游戏。只是似乎从来没有坚持。
然后,当我需要学习如何为研究中的工作编程时?现在,我很舒服地说我会两种语言,并且正在研究第三种语言。为什么?因为这与我的利益有关。除了书中的“练习8”之外,我还有一个坚持的理由,一个学习的理由以及更多的尝试要尝试的问题。
顺便说一句,这并不意味着编程流行病模型是学习编程的最佳方法。但这对我来说是最好的方法。找到你的。可能是游戏,但可能不是。
我同意,除了...
这很可能是许多人第一次构建和编程Lego机器人(Mindstorms)的编程经验。
虽然通用术语“游戏”可以定义一个巨大的类别,以至于几乎涵盖了所有程序设计,但是当在原始海报中使用时,它似乎总是意味着“编写《毁灭战士》游戏”。
如前所述,学习编程的最佳方法是拥有您真正想要的东西,而这需要程序。也就是说-通过编写所需的程序来学习编程。
我的第一个Windows程序之一是MIDI控制器程序,因为我真的想要一个MIDI控制器程序,而Windows似乎是最合适的选择(滑块,按钮,对MIDI的SDK支持等)。我从该程序中学到了很多有关Windows编程的知识(这可以追溯到Win 3.1天)。
由于这里提到的原因,我也从未参与过游戏编程-我画的不好,所以我制作的任何游戏的图形效果都比画家的差。我想学习编程,而不是管理“游戏开发团队”(值得称赞但完全不同的练习)。
最后,我完全不同意老师的陈述。学习编程的最好方法是编写您真正想要的程序。
-R