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 A
par 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 C
contiendra alors le numéro de ligne du conditionnel qui est vrai, puis cette ligne sera exécutée. A la fin de chaque tour, C
sera incrémenté.
Il y a les conditions disponibles:
Start
n'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.A
doit ê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.C
doit ê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
This
renverra 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
A
et B
sont pour votre usage personnel, C
est utilisé pour déterminer la ligne à exécuter dans votre code et D
est utilisé comme une direction. Chaque valeur de fait D
référence à une paire de carrés et de directions différente. E
produit une valeur aléatoire à chaque fois. D
et E
sera 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:
Move
vous fera avancer d'un carré dans laD
direction e. S'il y a un bot là-bas, vous ne bougerez pas.Copy(A,B)
copiera la variableA
dansB
.B
ne peut pas être une valeur numérique, à l'exception d'un nom de variable.A
etB
ne peut pas être de types différents. La copie d'une ligne ne copie pas la condition.Flag
ne 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 ligneL1
siC
est vrai, sinon exécuteL2
.C
est une conditionL1
etL2
doit ê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 Start
sera 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 If
instructions 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 C
est 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 X
montant lorsqu'il sera vu par un adversaire . La C
variable de l'adversaire sera également compensée du même X
montant. X
ne changera pas dans le même jeu, mais il changera d'un jeu à l'autre.