构建游戏需要一种具有强大支持的一流功能的语言

时间:2009-11-29 22:58:29

标签: language-agnostic

我正在建立一个教育游戏,通过它的模块化,允许教学生如何编程。它本质上是一种可以轻松修改的通用纸牌游戏。

游戏的主干应该是完全不可编辑的(至少在理论上),所以我需要建立一个“卡”类型,允许匿名功能,因为它的行动(更糟糕,或者甚至更有趣,它需要一个可以有任意数量参数的匿名函数。)

我还需要一个强大的GUI库,它需要是可移植的,如果可能的话,它应该是一个Web语言。它应该对模块化有广泛的支持,面向对象,并且希望足够清楚,以至于它不需要有经验的程序员来理解语法。这是很多要求,但我应该详细说明,我想要一个具体的答案以及为什么它是一个好的选择,所以我应该尽可能多地提供信息。我并不真正需要语言的效率,因此在这种情况下不需要低级语言,非常高级的语言将足够快。

Python不够强大。 Ruby可能是但我对它的功能还不够熟悉。 Haskell和Scheme拥有最强大的支持,但不是网络语言,据我所知,大多数情况下都没有GUI库。 C#可能是合理的,我对它的功能并不十分熟悉,但我特别担心可移植性。如果可能的话我想避免使用javascript,但如果真的是最好的选择,我可能不得不朝那个方向前进。

6 个答案:

答案 0 :(得分:6)

Javascript似乎是一个完美的选择 - 一流的功能,可移植,基于Web,清晰的语法,良好的库支持。我知道你试图避免它,但我希望一旦你评估并拒绝所有其他选择,你将给Javascript另一次机会。

答案 1 :(得分:4)

如果您熟悉Scheme,请查看DrScheme编程环境 它具有GUI支持,并且可以移植到Windows,Linux和Macintosh。

答案 2 :(得分:3)

您是否考虑过scala?它在JVM上运行,因此您可以利用Java swing库,并且仍然可以使用强大的函数语言进行编码。

答案 3 :(得分:2)

我会以Silverlight的形式使用C#或F#。 C#和F#都支持匿名函数(包括lambda函数)和可变数量的参数。

Silverlight应用程序可以通过Web提供,支持丰富的图形库,并且可以在PC和Mac上的大多数浏览器中运行。应该“很快”提供对Linux的支持(微软和英特尔显然正在努力)。与此同时,还有Mono和Moonlight。

从游戏应用程序的角度来看,Silverlight很不错,因为它支持时间轴和动画等内容。此外,能够将标记与代码分开有助于保持设计的清洁和可管理性。

答案 4 :(得分:1)

FWIW,如果您正在教授编程,您可能还希望确保该语言具有良好的开发环境 - 上下文相关编辑器和功能强大且易于使用的调试器非常有用。有可能第一次程序员会犯很多小错误,能够轻松地逐步执行代码行和查看变量,调试对于学习如何真正编程所有理论部分(如使用lambda函数)同样重要。 / p>

答案 5 :(得分:1)

您是否考虑过C ++,它保持简单。您可以拥有一个二进制文件的“核心”,然后让您的学生编译C ++文件调用的库,这样每个学生都可以提交一个包含所有不同库的文件夹,而您只需要将二进制文件移动到文件夹并运行它。二进制文件将使用它们的库来执行您想要模块化的代码的不同方面。

这种方法还具有教他们如何在团队中工作的附加效果,你可以让一个人编写渲染子系统,另一个人编写输入子系统等等。你在二进制文件中定义的所有东西都是一组您调用的骨架函数为这些部分执行逻辑。