Einträge sind jetzt geschlossen. Alle neuen Einträge oder Änderungen werden im letzten Lauf nicht gezählt.
Tritt dem Chat bei!
Herausforderung
Versuchen Sie, die Leinwand mit so viel Farbe wie möglich zu füllen. Seien Sie vorsichtig mit anderen Bots, die Ihre harte Arbeit übermalen könnten!
Hinweis: In dieser Herausforderungsbeschreibungbedeutet Malen , dass die Farbe des Quadrats auf dem Raster geändert wird, und unbemalt bedeutet, dass das Quadrat auf dem Raster die Farbe 0 hat und keinem der Bots zugeordnet wird.
Eingang
Ihre Funktion erhält vier Argumente: Sie selbst, das Raster, die Position aller Bots im Raster und Spielinformationen.
Mich selber
Dies ist ein 1D - Array die Ihre Farbe und Position auf dem Gitter bedeutet: [id, xpos, ypos]
.
Die obere linke Ecke des Rasters ist die Position (0, 0)
. Die Position (1,0)
ist rechts davon und die Position (0,1)
ist darunter
Ihre ID ist eine Ganzzahl, die für Ihre Farbe synonym ist (siehe unten, um herauszufinden, wie sich Ihre ID auf das Zeichnen des Rasters auswirkt). Ihre ID ist für Ihren Bot eindeutig.
Gitter
Dies ist ein 2D-Array, das Ganzzahlen enthält, die Ihnen die Farbe jeder Zelle anzeigen. Wenn die Nummer einer Gitterzelle ist 0
, bedeutet dies, dass die Zelle nicht gestrichen ist. Wenn die Nummer der Gitterzelle eine Ganzzahl ist x
, bedeutet dies, dass die Zelle vom Bot mit der ID gezeichnet wurde x
.
Um die Farbe des Gitters an der Position zu erhalten (x, y)
, verwenden Sie das Array wie folgt: grid[x][y]
.
Bots
Dies ist ein Array, das Informationen über die Position der Bots enthält. Jedes Element des Bots-Arrays ist ein Array, das jeden Bot beschreibt und wie folgt aussieht: [id, xpos, ypos]
Dabei id
ist die ID des Bots xpos
die X-Position des Bots und ypos
die Y-Position des Bots.
Dieses Array enthält die Position und ID Ihres eigenen Bots. Eliminierte Bots werden nicht in dieses Array aufgenommen.
Spielinformationen
Dies ist ein Array, das Informationen zum aktuellen Spiel enthält und wie folgt aussieht: [roundNum, maxRounds]
Wo roundNum
ist die Nummer der aktuellen Runde (1-indiziert) und maxRounds
ist die Anzahl der Runden im aktuellen Spiel.
Ausgabe
Die Ausgabe sollte eine Zeichenfolge sein, die von Ihrer Funktion zurückgegeben wird. Dies ist der Bewegungsbefehl.
Der Bewegungsbefehl bestimmt Ihren nächsten Zug. Die verfügbaren Befehle sind:
up
down
left
right
wait
Immer wenn Sie sich bewegen, malen Sie das Quadrat, auf das Sie sich bewegen. (siehe unten für weitere Informationen)
Wohin wait
bewegt man sich nicht? (aber Sie malen das Quadrat, auf dem Sie bleiben)
Wenn Sie versuchen, sich außerhalb des Rasters zu bewegen, wird Ihr Befehl ignoriert und Sie bleiben an derselben Stelle.
Das Gitter streichen
Wann immer Sie sich zu einem Quadrat bewegen, malen Sie es, aber es gibt Regeln, die bestimmen, wie die Farbe dieses Quadrats sein wird.
Wenn das Quadrat unbemalt ist (0), dann malen Sie es einfach in der gleichen Farbe wie Ihre eigene ID. Wenn das Quadrat jedoch zuvor gezeichnet wurde (nicht Null), wird die resultierende Farbe des Quadrats gemäß dem folgenden JavaScript-Code gefunden:
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
Diese Formel wurde erstellt, um es einem Bot zu ermöglichen, sich über seine eigene Farbe zu bewegen, ohne sie neu zu streichen.
Beseitigung
Wenn Sie nach Runde 5 ein oder weniger Quadrate gemalt haben (die Anzahl der Quadrate auf dem Raster, die dieselbe Farbe haben wie Sie), werden Sie eliminiert. Das bedeutet, dass Sie nicht mehr im Spiel sind und automatisch verlieren.
Regeln
- Ihr Code muss eine Funktion des Typs sein
function(myself, grid, bots, gameInfo) {
// Code here
return move;
}
- Das Gitter ist ein Quadrat mit der Seitenlänge
- Um zu verhindern, dass bestimmte Bots als Ziel ausgewählt werden, werden die IDs der Bots zufällig ausgewählt.
- Wenn zwei Bots den gleichen Bereich belegen, wird die Farbe dieses Bereichs unbemalt.
- Bewegung ist schnell basierte dh während einer Runde, werden alle mit identischen Bots geliefert
grid
,bots
undgameInfo
Argumente
- Sie können maximal drei Bots erstellen
- Bots können zusammenarbeiten, dürfen aber nicht miteinander kommunizieren und kennen die IDs der anderen nicht. Die Siege werden nicht als Team, sondern einzeln vergeben.
- Sie dürfen keinen Bot erstellen, der absichtlich auf einen einzelnen, zuvor ausgewählten Bot abzielt. Sie können jedoch auf die Taktik einer allgemeinen Klasse von Bots abzielen.
- Ihr Bot kann Daten in speichern
window.localStorage
. Jeder Bot muss ein eigenes Datenobjekt verwenden. Wenn festgestellt wird, dass ein Bot die Daten eines anderen Bots liest (versehentlich oder absichtlich), wird er disqualifiziert, bis das Problem behoben ist. - Wenn Ihr Bot Zufallszahlen verwendet, verwenden Sie bitte
Math.random()
Regler
Die Steuerung finden Sie hier:
https://gist.github.com/beta-decay/10f026b15c3babd63c004db1f937eb14
Oder Sie können es hier ausführen: https://beta-decay.github.io/art_attack
Hinweis: Ich würde empfehlen, dass Sie alle Tests offline durchführen (den Controller von der Übersicht herunterladen), da sich die Webseite jederzeit ändern kann.
Wenn alle Bots hinzugefügt wurden, starte ich die 10.000 Spiele mit dem abgespeckten Controller ohne grafische Oberfläche. Sie können es hier ausführen: https://beta-decay.github.io/art_attack/fast
Gewinnen
Der Spieler, der den größten Teil der Leinwand ausgefüllt hat, gewinnt das Spiel (ein Spiel hat 2000 Runden). Bei einem Unentschieden gewinnen alle gezogenen Spieler.
Der Spieler, der aus 10.000 Spielen am meisten gewinnt, gewinnt die Herausforderung.
Die 10.000 Spiele werden voraussichtlich am kommenden Montag (27.08.2018 um 23:00 UTC + 1) ausgetragen.
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
Formel zu tun hat , ob ein Bot Glück hat oder große Konkurrenten übermalt (oder übermalt). Berücksichtigen Sie auch die Trolle / Jäger, die einen Bot ihrer Wahl im Alleingang zerstören können. In jedem Fall wird der Durchschnitt bei 10000 Spielen liegen.
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
bitte ins Englische übersetzen ?