Spiel für Programmierer FuncBall

Viele, wie ich, lieben Fußballsimulationen und viele sind programmiersüchtig. Nachdem ich 2004 genug in FIFU gespielt hatte, dachte ich, es wäre schön, meine beiden Hobbys in einem Spiel zu kombinieren, in dem die Spieler nicht von Hand, sondern durch ein für sie geschriebenes Skript gesteuert würden. Eine Art Spiel für Programmierer , a la "RoboCup Simulation Soccer", nur auf ihre Weise. Ich war damals ein Anfängerprogrammierer und schrieb bereits einige einfache Spiele, aber ich konnte meine Idee nicht vollständig verwirklichen, da ich nicht herausgefunden hatte, wie man einen geeigneten Interpreter für die Programmiersprache des Spielers schreibt. Es gibt jetzt mehr Spiele für Programmierer, aber ich habe keines gefunden, das ich wollte, und nach vielen Jahren und Tonnen von geschriebenem Code habe ich mich entschlossen, zu meiner alten Idee zurückzukehren.

Das Spiel verlief so , wie ich es wollte - funcball.com .

Spiel für Programmierer FuncBall

  1. Für jeden der 4 Spieler wird aus den Bedingungen und Aktionen ein Code geschrieben, der alle 50 ms ausgeführt wird.
  2. Jeder Spieler kontrolliert nur sich selbst und hat keinen Zugriff auf die Erinnerung anderer, kann ihnen aber Signale geben. Der Speicher wird durch Flags implementiert.
  3. Alle Spieler bewegen sich mit der gleichen konstanten Geschwindigkeit, aber der mit dem Ball ist etwas langsamer. Keine Torhüter.
  4. Spielercodes werden zufällig ausgeführt. Der Code, der den Ball von der Mitte einführt, wird zuerst ausgeführt.
  5. Die Geschwindigkeit und Dauer des Spiels können geändert werden. Es ist möglich, Übereinstimmungen aufzuzeichnen.
  6. Ich habe versucht, die Sprache für Anfänger so klar wie möglich zu machen. Das Schreiben Ihrer Funktionen ist nicht erforderlich, da Mit der integrierten Funktion können Sie nahezu jedes Spielerverhalten programmieren.
  7. Es ist möglich, mit anderen Mannschaften auf der Spielwebsite zu konkurrieren.

Traditionelle Sprachsyntax:

FuncBall-Beispielcode

Es gibt eine Form des Schreibens ohne Klammern, die für Nicht-Programmierer üblicher ist:

FuncBall-Beispielcode

Hier ist ein weiteres Beispiel:

FuncBall-Beispielcode

In diesem Fall wird geprüft, ob der Ball nicht mit dem dritten Spieler zusammen ist und dann zum 10. Feld des Feldes läuft. Das Dollarsymbol verlässt das Skript.

Nesting wird unterstützt und gefördert:

FuncBall-Beispielcode

In diesem Beispiel gibt es eine Bedingung "player3_opened". Dies ist eine Funktion mit dem Einfügen eines Arguments (3-Spieler-Nummer) in den Namen, was meiner Meinung nach verständlich und lesbar ist.

Im Code können sogenannte Makros verwendet werden, anstelle derer die entsprechenden Werte zur Laufzeit ersetzt werden. Beispiel für einen Übergang zu Spieler 4:

FuncBall-Beispielcode

[X4 + 50] ist die X-Koordinate von Spieler 4, erhöht um 50, und [Y4] ist seine Y-Koordinate. Vor dem Ausführen dieses Befehls werden die Makros in eckigen Klammern durch bestimmte Werte ersetzt und sehen beispielsweise so aus: send_ball: 254.190.

Makros können integrierte Makrofunktionen verwenden. Beispiel: Wenn der Abstand zwischen dem Spieler und dem gegnerischen Tor weniger als 150 Pixel beträgt, treffen Sie auf das Tor:

FuncBall-Beispielcode

X und Y werden durch die Koordinaten des Spielers ersetzt, und D (X, Y, 559, 188) wird durch die berechnete Entfernung von diesem Punkt zu dem Punkt mit den Koordinaten 559, 188 (Zielkoordinaten) ersetzt. Wenn es weniger als 150 ist, wird das Makro durch True (True) ersetzt, und wenn nicht, durch False (False), und es wird sich herausstellen: If (True) {beat_on_ turns}.

Ich beschloss, das Feld in der üblichen horizontalen Form zu verlassen. Der Ursprung ist Standard - die obere linke Ecke. Bei der Programmierung der Spieler muss davon ausgegangen werden, dass sie in der linken Spielfeldhälfte beginnen. Die Zahlen ihrer Spieler sind 1-4 und die der anderen 5-8. Beim Spielen auf der rechten Seite werden alle Koordinaten, Quadratzahlen, Winkel und Spielerzahlen wiedergegeben, d. H. Die Mannschaft spielt genauso wie in der linken Hälfte.

Mit dem Editor können Sie nicht den gesamten Code von Hand schreiben, sondern die erforderlichen Funktionen per Mausklick einfügen. Zu jeder Funktion gibt es eine Hilfe.

FuncBall Team Editor

Wenn das Team bereit ist, kann es auf den Server hochgeladen werden (erfolgt über den Editor im Spiel). Danach wird sie an der regulären Saison teilnehmen . Alle geladenen Teams spielen untereinander und die Ergebnisse und Aufzeichnungen der Spiele werden auf der Website veröffentlicht. Wie oft Meisterschaften stattfinden, hängt vom Interesse der Teilnehmer ab. Während eine Reihe von Teams für die erste Meisterschaft.
Auf der Seite können Sie auch jederzeit Spiele mit ausgewählten Mannschaften bestellen. Die Teams werden sofort automatisch an einen separaten Server gesendet, auf dem die Spiele gespielt werden, und ihre Aufzeichnungen werden zurückgesendet, die Sie herunterladen und ansehen können.

Also lade ich alle zum Spielen ein ! Ich denke, dass es viele Leute gibt, die an einem solchen Projekt interessiert sind, und ich hoffe, dass dieser Artikel dabei hilft, sie zu finden.

Source: https://habr.com/ru/post/de481428/


All Articles