Les entrées sont maintenant fermées. Toute nouvelle entrée ou modification ne sera pas comptée dans la dernière manche.
Rejoignez le chat!
Défi
Essayez de remplir la toile avec autant de peinture que possible. Méfiez-vous des autres robots susceptibles de masquer votre dur labeur!
Remarque: Dans cette description du défi, peindre signifie changer la couleur du carré de la grille et non peint signifie que le carré de la grille a la couleur 0 et n'est attribué à aucun des robots.
Contribution
Votre fonction recevra quatre arguments: vous-même, la grille, la position de tous les robots sur la grille et les informations sur le jeu.
Moi même
Ceci est un tableau 1D qui indique la couleur et la position sur la grille: [id, xpos, ypos]
.
Le coin supérieur gauche de la grille est la position (0, 0)
. La position (1,0)
est à droite de celle et la position (0,1)
est en dessous
Votre identifiant est un entier qui est synonyme de votre couleur (voir ci-dessous pour savoir comment votre identifiant affecte la manière dont vous peignez la grille). Votre identifiant est unique pour votre bot.
la grille
Il s’agit d’un tableau 2D contenant des entiers qui vous indiquent la couleur de chaque cellule. Si le numéro d'une cellule de grille est 0
, cela signifie que la cellule n'est pas peinte. Si le nombre de cellules de la grille est un entier x
, cela signifie que la cellule a été peinte par le bot avec l'ID x
.
Pour obtenir la couleur de la grille à la position (x, y)
, utilisez le tableau comme ceci: grid[x][y]
.
Bots
C'est un tableau qui contient des informations sur la position des robots. Chaque élément du tableau de robots est un tableau qui décrit chaque bot et se présente comme suit:, [id, xpos, ypos]
où id
est l'ID du bot, xpos
la position x du bot et ypos
la position y du bot.
Ce tableau comprend la position et l'identifiant de votre propre bot. Les bots éliminés ne seront pas inclus dans ce tableau.
Informations sur le jeu
C'est un tableau contenant des informations sur le jeu en cours et qui ressemble à ceci: [roundNum, maxRounds]
Où roundNum
est le numéro du tour en cours (indexé 1) et maxRounds
le nombre de tours du jeu en cours.
Sortie
La sortie doit être une chaîne renvoyée par votre fonction. C'est la commande de mouvement.
La commande de mouvement détermine votre prochain mouvement. Les commandes disponibles sont:
up
down
left
right
wait
Chaque fois que vous vous déplacez, vous peignez le carré dans lequel vous vous déplacez. (Voir ci-dessous pour plus d'informations)
Où wait
signifie que vous ne bougez pas. (mais vous peignez le carré sur lequel vous restez)
Si vous essayez de vous déplacer en dehors de la grille, votre commande sera ignorée et vous resterez au même endroit.
Peindre la grille
Chaque fois que vous vous déplacez vers un carré, vous le peignez, mais il existe des règles qui déterminent la couleur de ce carré.
Si le carré n'est pas peint (0), il vous suffit de le peindre de la même couleur que votre propre ID. Cependant, si le carré a été peint précédemment (différent de zéro), la couleur résultante du carré sera trouvée en fonction du code JavaScript suivant:
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
Cette formule est conçue pour permettre à un bot de changer de couleur sans le repeindre.
Élimination
Si, après le tour 5, vous avez peint un ou plusieurs carrés (le nombre de carrés sur la grille qui sont de la même couleur que vous), vous serez alors éliminé. Cela signifie que vous ne serez plus dans le jeu et perdrez automatiquement.
Règles
- Votre code doit être une fonction du type
function(myself, grid, bots, gameInfo) {
// Code here
return move;
}
- La grille sera un carré de longueur de côté
- Pour éviter que des robots spécifiques ne soient ciblés, les ID des robots seront randomisés.
- Lorsque deux robots occupent le même espace, la couleur de cet espace sera rendue non peinte.
- Le mouvement est tour par tour -à- dire lors d' un tour, tous les bots sont fournis à l' identique
grid
,bots
etgameInfo
arguments
- Vous pouvez créer un maximum de trois robots
- Les robots peuvent travailler ensemble mais ne doivent pas communiquer entre eux et ne connaîtront pas les identifiants de chacun. Les victoires seront attribuées individuellement plutôt qu'en équipe.
- Vous ne devez pas créer de bot qui cible intentionnellement un seul bot pré-choisi. Vous pouvez cependant cibler la tactique d'une classe générale de robots.
- Votre bot peut stocker des données dans
window.localStorage
. Chaque bot doit utiliser son propre objet de données. S'il s'avère qu'un bot lit les données d'un autre bot (accidentellement ou délibérément), il sera disqualifié jusqu'à ce que le problème soit résolu. - Si votre bot utilise des nombres aléatoires, veuillez utiliser
Math.random()
Manette
Le contrôleur peut être trouvé ici:
https://gist.github.com/beta-decay/10f026b15c3babd63c004db1f937eb14
Ou vous pouvez l'exécuter ici: https://beta-decay.github.io/art_attack
Note: Je vous conseillerais de faire des tests hors ligne (télécharger le contrôleur depuis l’essentiel) car la page Web est sujette à modification à tout moment.
Lorsque tous les robots auront été ajoutés, je lancerai les 10 000 jeux avec le contrôleur dépouillé sans interface graphique. Vous pouvez l'exécuter ici: https://beta-decay.github.io/art_attack/fast
Gagnant
Le joueur qui a rempli la majeure partie de la toile remporte la partie (une partie est de 2 000 tours). En cas d'égalité, tous les joueurs tirés gagnent.
Le joueur qui remporte le plus de 10 000 jeux remporte le défi.
Les 10 000 matchs devraient être disputés lundi prochain (2018-08-27 à 23:00 UTC + 1).
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
formule, qu'un bot ait ou non la chance d'avoir la chance de peindre de gros concurrents (ou de se faire peindre). Prenez également en compte les trolls / chasseurs qui peuvent à eux seuls détruire un bot de leur choix. Quoi qu'il en soit, cela fera une moyenne sur 10000 jeux.
[botColour, 0, floorColour][Math.abs(botColour - floorColour)%3]
en anglais, s'il vous plaît?