Muitos, como eu, adoram simulações de futebol e muitos são viciados em programação. Uma vez, em 2004, tendo jogado o suficiente no FIFU, pensei que seria bom combinar meus dois hobbies em um jogo em que os jogadores seriam controlados não à mão, mas por um roteiro escrito para eles. Uma espécie de
jogo para programadores , como o "RoboCup Simulation Soccer", apenas à sua maneira. Eu era um programador iniciante na época e já escrevia alguns jogos simples, mas não conseguia entender completamente minha ideia, pois não sabia como escrever um intérprete adequado para a linguagem de programação do player. Agora há mais jogos para programadores, mas não encontrei um que queria e, depois de muitos anos e toneladas de código escrito, decidi voltar à minha antiga idéia.
O jogo acabou do jeito que eu queria -
funcball.com .
- Para cada um dos 4 jogadores, um código é escrito a partir das condições e ações, que são executadas a cada 50 ms.
- Cada jogador controla apenas a si mesmo e não tem acesso à memória dos outros, mas pode dar-lhes sinais. A memória é implementada por sinalizadores.
- Todos os jogadores se movem na mesma velocidade constante, mas aquele com a bola é um pouco mais lento. Sem goleiros.
- Os códigos dos jogadores são executados aleatoriamente. O código que introduz a bola do centro é executado primeiro.
- A velocidade e a duração do jogo podem ser alteradas. É possível gravar partidas.
- Tentei deixar o idioma o mais claro possível para iniciantes. Não é necessário escrever suas funções, porque embutido permite programar quase qualquer comportamento do jogador.
- É possível competir com outras equipes no site do jogo.
Sintaxe do idioma tradicional:

Existe uma forma de escrever sem colchetes, mais comum para não programadores:

Aqui está outro exemplo:

Nesse caso, verifica-se que, se a bola não estiver com o terceiro jogador, corra para o 10º quadrado do campo. O símbolo do dólar sai do script.
O aninhamento é suportado e incentivado:

Neste exemplo, há uma condição "player3_opened". Esta é uma função com a inclusão de um argumento (número de 3 jogadores) no nome, que na minha opinião é compreensível e legível.
As chamadas macros podem ser usadas no código, em vez dos quais os valores correspondentes são substituídos no tempo de execução. Exemplo de um passe para o jogador 4:

[X4 + 50] é a coordenada X do jogador 4 aumentada em 50 e [Y4] é a coordenada Y dele. Antes de executar este comando, as macros entre colchetes serão substituídas por valores específicos e terão, por exemplo, o seguinte aspecto: send_ball: 254.190.
Macros podem usar funções macro embutidas. Por exemplo, se a distância do jogador até a meta do oponente for menor que 150 pixels, pressione a meta:

X e Y serão substituídos pelas coordenadas do jogador, e D (X, Y, 559.188) será substituído pela distância calculada deste ponto ao ponto pelas coordenadas 559.188 (coordenadas da meta). Se for menor que 150, a macro será substituída por Verdadeiro (Verdadeiro) e, se não, então Falso (Falso) e ocorrerá: Se (Verdadeiro) {beat_on_ turnos}.
Decidi deixar o campo na forma horizontal usual. A origem é padrão - o canto superior esquerdo. Ao programar os jogadores, devemos assumir que eles começam na metade esquerda do campo. Os números de seus jogadores são de 1 a 4 e os de outros, de 5 a 8. Ao tocar à direita, todas as coordenadas, números quadrados, ângulos e números de jogadores são refletidos, ou seja, a equipe jogará exatamente da mesma forma que na metade esquerda.
O editor permite que você não escreva todo o código com as mãos, mas insira as funções necessárias por clique. Há ajuda para cada função.

Quando a equipe estiver pronta, ela poderá ser carregada no servidor (feita a partir do editor no jogo). Depois disso, ela participará da
temporada regular. Todas as equipes carregadas jogarão entre si e os resultados e registros dos jogos serão publicados no site. A frequência com que os campeonatos serão realizados depende do interesse dos participantes. Enquanto um conjunto de equipes para o primeiro campeonato.
No site, você também pode solicitar partidas a qualquer momento com as equipes selecionadas. As equipes são imediatamente enviadas automaticamente para um servidor separado, onde as partidas são disputadas e seus registros são devolvidos, que você pode baixar e assistir.
Então, convido todos a
jogar ! Penso que existem muitas pessoas que podem estar interessadas nesse projeto e espero que este artigo ajude a encontrá-los.