Хотя футбол или, например, хоккей - не принципиально, т.к. физика взаимодействия игрока с мячом/шайбой не важна и опускается при, скажем так, схематической реализации игры, т.е. когда игроки и спортивный снаряд - точки без какой-либо формы. А важна только тактика игры, и ничего лишнего. Игроки должны завести снаряд в ворота, как в футболе, так и в хоккее. Отличие в том, что в хоккее есть борт, и шайба не уходит за пределы поля. Есть возможность игры с отскоком шайбы от борта, но появляется проблема связанная с блокировкой шайбы в случае, если несколько игроков будут пытаться завладеть ей у борта. В общем, остановился я на футболе с 4 игроками.
И так, суть игры одним предложением: написать команду (код для каждого из 4 игроков), загрузить её на сайт и соревноваться с другими командами.
Немного на 1С похоже, перекрестился на всякий случай
У 1С своей FIFA ещё не было))
Из недостатков как для обучения программированию:
1) Нет различия переменных и функций. мяч_у_игрока, бить_по_воротам. Как понять, что вернёт данные, что выполнит действие?
2) Нет объектов, хотя тут они просто таки напрашиваются. Тот же "игрок4_открыт" лучше записать как игрок4.открыт.
3) Или записать хотя бы функциями, которые возвращают значение: игрок_открыт(4).
4) Да и нет никакой унификации. Вот это вот бить_по_воротам. Почему не удар(ворота)? Можно было бы использовать удар(вперёд), удар(аут). Туда же пас(игрок4), пас(вперёд), игрок1.бег(мяч), игрок3.бег(вперёд).
5) При этом куча низкоуровневых координатных вычислений. Хотя стоило бы проверять зоны и направления. Если(доступно(пас(игрок3))){пас(игрок3)}, Если(!штрафная(противник)){удар(ворота)}
Это приблизит игрока к реально существующим парадигмам программирования.
Яростно плюсовать нельзя, так что просто плюсую.
1) мяч_у_игрока и др. условия возвращают True или False. Действия ничего не возвращают.
2) Это не ООП. Я с вами согласен во многом, но эта игра проще...
3) Можно было. Просто синтаксические особенности.
4 и 5) Не уверен, что это было бы понятней для начинающих.
Я очень хочу одновременно и выразить признательность за потраченные усилия, и максимально уважительно выразить весь свой ужас разработчика при мысли о таком языке - но не знаю, как. Потому что с одной стороны, пинать инди-разработчика за то, что он сделал что-то, что мне не понравилось - гадко. Ведь человек же забесплатно трудился, старался, всё для людей! Но с другой...
Писать свои функции нет необходимости.
В языке нет переменных
R(min,max) - это функция, возвращающая случайное число. Как видите, для запоминания значений макросов в их начало добавляется id макроса и символ @. Значение первого макроса записывается в кэш с id 1, а второго c id 2. Потом они извлекаются из кэша макросами [1@] и [2@].
Чтобы не писать код руками, в редакторе можно вставлять нужные функции по клику.
Всё это вызывает полное ощущение, что язык создавался как аналог Brainfuck, специально, чтобы причинить максимальное количество боли любому человеку, который попробует что-нибудь на нём написать. А уж к каким спагетти-подходам этот приучит начинающих разработчиков? И как их потом от этого переучивать?
О том, чтобы сделать язык на русском, я и вовсе молчу. Просто нет осмысленных комментариев, одни гласные.
Мой совет, всем, кто хочет разработать "игры для программистов": возьмите пример с Screeps, и вместо того, чтобы писать собственный язык, просто возьмите уже готовый, со своей экосистемой. И уж тем более не заставляйте игрока использовать ваш встроенный редактор вместо своего: всё равно нормального плагина, для, например, эмуляции vim, вы в нём не сделаете.
Игра не обучает какому-то определённому языку программирования. Поэтому ваш комментарий также неуместен, как и реклама здесь других игр.