Для создания игры нужен язык с сильно поддерживаемыми функциями первого класса - PullRequest
5 голосов
/ 30 ноября 2009

Я создаю образовательную игру, которая благодаря своей модульности позволяет учить студентов программированию. По сути, это обычная карточная игра, которую можно легко изменить.

Предполагается, что основа игры полностью недоступна для редактирования (по крайней мере, в теории), поэтому мне нужно создать тип «Карточка», который позволяет выполнять анонимную функцию в качестве действия (даже хуже, или, возможно, даже более интересно ей нужна анонимная функция, которая может иметь произвольное количество аргументов).

Мне также нужна сильная библиотека графического интерфейса, и она должна быть переносимой, и, если это вообще возможно, потенциально должна быть веб-языком. Он должен иметь широкую поддержку модульности, быть объектно-ориентированным и, надеюсь, быть достаточно ясным, чтобы опытному программисту не требовалось понимать синтаксис. Это много требований, но я должен быть подробным, и я хочу конкретный ответ и почему это был бы хороший выбор, поэтому я должен разместить как можно больше информации, я думаю. У меня нет реальной необходимости в эффективности языка, поэтому языки низкого уровня в этом случае не нужны, языки очень высокого уровня легко будут достаточно быстрыми.

Python недостаточно силен. Рубин может быть, но я не достаточно знаком с его функциями. Haskell и Scheme имеют самую сильную поддержку, но не являются веб-языками и, насколько я знаю, по большей части не имеют библиотек GUI. C # может быть разумным, я не очень знаком с его функциями, но меня особенно беспокоит переносимость. Если это вообще возможно, я бы хотел избежать javascript, но если это действительно лучший вариант, мне, вероятно, придется идти в этом направлении.

Ответы [ 6 ]

6 голосов
/ 30 ноября 2009

Javascript кажется вам идеальным выбором - первоклассные функции, переносимые, веб-интерфейсы, четкий синтаксис, хорошая поддержка библиотек. Я знаю, что вы пытаетесь избежать этого, но я надеюсь, что, как только вы оцените и отклоните все другие варианты, вы дадите Javascript еще один шанс.

4 голосов
/ 30 ноября 2009

Если вы знакомы со Схемой, ознакомьтесь с DrScheme средой программирования.
Он имеет поддержку графического интерфейса и портирован на Windows, Linux и Macintosh.

3 голосов
/ 30 ноября 2009

Рассматривали ли вы scala? Он работает на JVM, поэтому вы можете использовать свинг-библиотеки Java и при этом иметь мощный функциональный язык для кодирования.

2 голосов
/ 30 ноября 2009

Я бы пошел с C # или, возможно, F #, в виде Silverlight. C # и F # поддерживают анонимные функции (включая лямбда-функции) и переменное число аргументов.

Приложения Silverlight могут поставляться через Интернет, поддерживать богатую графическую библиотеку и работать в большинстве браузеров как на ПК, так и на Mac. Поддержка Linux должна быть доступна "в ближайшее время" (Microsoft и Intel, очевидно, работают над этим). А пока есть Моно и Лунный свет.

С точки зрения игрового приложения Silverlight хорош тем, что поддерживает такие вещи, как временные шкалы и анимация. Кроме того, возможность отделить разметку от кода помогает поддерживать чистоту и управляемость проекта.

1 голос
/ 30 ноября 2009

Рассматривали ли вы C ++, это просто. У вас может быть «CORE», который представляет собой двоичный файл, а затем просто заставьте своих студентов скомпилировать библиотеки, которые вызывает файл C ++, таким образом, каждый студент может отправить папку со всеми различными библиотеками, и все, что вам нужно будет сделать, это переместить двоичный файл в папку и запустите ее. Двоичные файлы будут использовать свои библиотеки для выполнения различных аспектов кода, который вы хотите сделать модульным.

Этот подход дает дополнительный эффект обучения их работе в командах: один человек может написать подсистему рендеринга, другой - подсистему ввода и т. Д. И все, что вам нужно будет определить в своем двоичном файле, - это набор скелетные функции, которые вы вызываете для выполнения логики для этих секций.

1 голос
/ 30 ноября 2009

FWIW, если вы учите программированию, вы также можете убедиться, что язык имеет хорошую среду разработки - контекстный редактор и мощный, простой в использовании отладчик очень полезны. Скорее всего, в первый раз программисты совершат много мелких ошибок, и возможность легко перебирать строки кода и просматривать переменные и отладку так же важна для обучения программированию, как и все теоретические части, такие как использование лямбда-функций. 1001 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...