Bienvenue dans Code Bots 2!
Vous avez appris votre leçon depuis les derniers codes bots. Vous avez essayé de trouver plus de façons d'adapter plus d'actions en moins de lignes, et maintenant vous l'avez enfin. Vous allez créer un code Bot piloté par les événements.
Votre bot doit comprendre 24 lignes. Chaque ligne suit l'un des deux formats:
Condition:Action
ou
Action
Votre bot a également suffisamment de stockage pour stocker 5 entiers nommés Apar le biais E. Un entier peut stocker des valeurs de 0 à 23.
Chaque tour, vous exécuterez la ligne C, sauf si l' une des conditions est vraie. Si c'est le cas, alors Ccontiendra alors le numéro de ligne du conditionnel qui est vrai, puis cette ligne sera exécutée. A la fin de chaque tour, Csera incrémenté.
Il y a les conditions disponibles:
Startn'est vrai qu'au premier tour. Vous devez avoir ceci dans votre code exactement une foisBotAt(N)est vrai s'il y a un bot à l'emplacement défini par NEquals(A,B)est vrai si A est égal à B. Ils peuvent être de types différents, si c'est le cas, ils ne seront pas égaux.Modified(A)est vrai si aAété copié lors du dernier tour.Adoit être un nom de variable, une ligne ou une conditionAny(C1,C2,...)est vrai si l'une des conditions est vraieNone(C1,C2,...)est vrai si aucune des conditions n'est vraieAll(C1,C2,...)est vrai si toutes les conditions sont rempliesNot(C)est vrai si C est faux.Cdoit être une condition.
Les variables peuvent être dans l'un des formats suivants. Les 9 premiers sont numériques et peuvent être utilisés chaque fois que N est utilisé dans cette page.
A,B,C,D,E- Un nombre de 0 à 23
Thisrenverra le numéro de ligne sur lequel il se trouve actuellementAdd(N1,N2,...)renverra la somme de toutes les valeursSub(N1,N2)renverra N1 moins N2Mult(N1,N2,...)renverra le produit de toutes les valeursDiv(N1,N2)renverra N1 divisé par N2Mod(N1,N2)renverra N1 mod N2OVar(N)acceptera un nom de variable et renverra la variable de l'adversaireLine(N)renverra la Nième ligne dans votre codeType(N)renverra le Nième type de ligne dans votre code (les types sont les noms des actions)Cond(N)retournera l'état sur la Nième ligneCondType(N)renverra le type de condition sur la Nième ligne (les types sont les noms des conditions)OLine(N)renverra la Nième ligne dans le code de votre adversaireOType(N)renverra le Nième type de ligne dans le code de votre adversaireOCond(N)retournera la condition sur la Nième ligneOCondType(N)renverra le type de condition sur la Nième ligne
Aet Bsont pour votre usage personnel, Cest utilisé pour déterminer la ligne à exécuter dans votre code et Dest utilisé comme une direction. Chaque valeur de fait Dréférence à une paire de carrés et de directions différente. Eproduit une valeur aléatoire à chaque fois. Det Esera initialisé à une valeur aléatoire, sinon 0.
La direction utilisée sera [North,East,South,West][D%4]. Votre adversaire est le bot du carré immédiat dans cette direction.
4 actions s'offrent à vous:
Movevous fera avancer d'un carré dans laDdirection e. S'il y a un bot là-bas, vous ne bougerez pas.Copy(A,B)copiera la variableAdansB.Bne peut pas être une valeur numérique, à l'exception d'un nom de variable.AetBne peut pas être de types différents. La copie d'une ligne ne copie pas la condition.Flagne fait rien. Le bot avec le plus de drapeaux dans votre code obtiendra un point. Le bot avec le plus de points gagne.If(C,L1,L2)exécutera la ligneL1siCest vrai, sinon exécuteL2.Cest une conditionL1etL2doit être des lignes.
La grande image
50 exemplaires de chaque bot seront placés dans le monde. Votre objectif est de placer votre drapeau dans autant de robots que possible. Pour chaque bot qui a plus de votre type de drapeau que tout autre type de drapeau, vous obtenez un point.
Les bots seront placés comme suit:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
Il y aura 10 matchs et les points seront calculés en moyenne pour tous les matchs, déterminant ainsi le vainqueur.
Notes annexes
Si plusieurs conditions s'appliquent, alors celle qui suit le plus immédiatement Startsera exécutée
Les bots seront serrés mais vous ne commencerez pas à voisiner un autre bot. (Ce sera techniquement le même format que les derniers CodeBots)
Comme ce défi n'a pas été affiché dans le bac à sable (pour donner à personne un avantage), je me réserve le droit de modifier les petits détails pour des raisons d'équité ou des capacités supplémentaires. De plus, s'il y a un bug dans le runner CodeBots, je le changerai, même si un bot dépendait de ce bug pour son succès. J'essaie d'être aussi juste que possible.
Les Ifinstructions récursives ne seront pas exécutées
Si votre bot fait moins de 24 lignes, les lignes restantes seront remplies de Flag
N'oubliez pas que lorsque vous copiez le vôtre C, cela Cest incrémenté à la fin de votre tour.
L'interpréteur CodeBots peut être trouvé ici . Il comprend un fichier .jar pour une exécution facile. Ajoutez simplement votre bot au dossier des bots
Les scores
- 893,9 Borg
- 1.3 LazyLioness
- 0.9 Défenseur
- 0,5 Flagger
- 0.4 CliqueBot
- 0.4 Insidieux
- 0.3 Attaquant
- 0,3 Gard
- 0.3 SingleTarget
- 0.2 FreezeBot
- 0,2 Sentinelle
- 0.2 Driveby
- 0.0 Anti-insidieux
- 0.0 MoveBot
- 0.0 CliqueBorg
- 0.0 Calculatrice
- 0.0 TestBot
- 0,0 Imitateur
METTRE À JOUR
Les lignes de code sont désormais tournées lorsque vous affichez le code de votre adversaire. Cela signifie que la ligne 1 de votre adversaire peut être la ligne 14 (ou n'importe quelle ligne). Un bot aura un décalage fixe qui compensera ses lignes en Xmontant lorsqu'il sera vu par un adversaire . La Cvariable de l'adversaire sera également compensée du même Xmontant. Xne changera pas dans le même jeu, mais il changera d'un jeu à l'autre.