Benvenuti in Code Bots 2!
Hai imparato la lezione dagli ultimi Code Bots. Hai provato a trovare più modi per adattare più azioni in meno righe, e ora finalmente ce l'hai. Stai per creare un codice Bot orientato agli eventi.
Il tuo bot deve essere composto da 24 linee. Ogni riga segue uno dei due formati:
Condition:Action
o
Action
Il tuo bot hanno anche spazio di archiviazione sufficiente per memorizzare 5 numeri interi chiamati Aattraverso E. Un numero intero può memorizzare valori da 0 a 23.
Ad ogni turno, eseguirai la linea C, a meno che una delle condizioni non sia vera. In tal caso, Cconterrà quindi il numero di riga del condizionale che è true e quindi tale riga verrà eseguita. Alla fine di ogni turno, Cverrà incrementato.
Ci sono le condizioni disponibili:
Startè vero solo al primo turno. Devi averlo nel tuo codice esattamente una voltaBotAt(N)è vero se esiste un bot nella posizione definita da NEquals(A,B)è vero se A è uguale a B. Possono essere di tipi diversi, in tal caso, non saranno uguali.Modified(A)è vero se èAstato copiato durante l'ultimo turno.Adeve essere un nome di variabile, una riga o una condizioneAny(C1,C2,...)è vero se una qualsiasi delle condizioni è veraNone(C1,C2,...)è vero se nessuna delle condizioni è veraAll(C1,C2,...)è vero se tutte le condizioni sono vereNot(C)è vero se C è falso.Cdeve essere una condizione.
Le variabili possono essere in uno dei seguenti formati. I primi 9 sono numerici e possono essere utilizzati ogni volta che N viene utilizzato in questa pagina.
A,B,C,D,E- Un numero compreso tra 0 e 23
Thisrestituirà il numero di riga in cui si trova attualmenteAdd(N1,N2,...)restituirà la somma di tutti i valoriSub(N1,N2)restituirà N1 meno N2Mult(N1,N2,...)restituirà il prodotto di tutti i valoriDiv(N1,N2)restituirà N1 diviso per N2Mod(N1,N2)restituirà N1 mod N2OVar(N)accetterà un nome di variabile e restituirà la variabile dell'avversarioLine(N)restituirà l'ennesima riga nel tuo codiceType(N)restituirà l'ennesimo tipo di riga nel codice (i tipi sono i nomi delle azioni)Cond(N)restituirà la condizione sull'ennesima rigaCondType(N)restituirà il tipo di condizione sull'ennesima riga (i tipi sono i nomi delle condizioni)OLine(N)restituirà l'ennesima riga nel codice del tuo avversarioOType(N)restituirà l'ennesimo tipo di riga nel codice del tuo avversarioOCond(N)restituirà la condizione sull'ennesima rigaOCondType(N)restituirà il tipo di condizione sull'ennesima riga
Ae Bsono per uso personale, Cviene utilizzato per determinare quale riga eseguire nel codice e Dviene utilizzato come direzione. Ogni valore di si Driferisce a una diversa coppia di quadrati e direzioni. Eproduce un valore casuale ogni volta. De Everrà inizializzato su un valore casuale, altrimenti 0.
La direzione utilizzata sarà [North,East,South,West][D%4]. Il tuo avversario è il robot nella casella immediata in quella direzione.
Sono disponibili 4 azioni:
Moveti sposterà di 1 quadrato in avanti nellaDdirezione th. Se c'è un bot lì, non ti sposterai.Copy(A,B)copierà la variabileAinB.Bnon può essere un valore numerico, ad eccezione di un nome di variabile.AeBnon può essere di diversi tipi. La copia di una riga non copia la condizione.Flagnon fa nulla. Il bot con il maggior numero di flag nel codice otterrà un punto. Vince il bot con il maggior numero di punti.If(C,L1,L2)eseguirà la lineaL1seCè vero, altrimenti esegueL2.Cè una condizioneL1eL2deve essere linee.
La grande immagine
50 copie di ogni bot verranno posizionate nel mondo. Il tuo obiettivo è quello di ottenere la tua bandiera nel maggior numero possibile di robot. Per ogni bot che ha più del tuo tipo di bandiera di qualsiasi altro tipo di bandiera, ottieni un punto.
I robot saranno posizionati come segue:
B...B...B...B...
..B...B...B...B.
B...B...B...B...
Verranno giocate 10 partite e verranno calcolati i punti in media in tutte le partite, determinando chi è il vincitore.
Note laterali
Se si applicano più condizioni, Startverrà eseguita quella che segue immediatamente
I robot saranno imballati da vicino ma non inizierai a confinare con un altro robot. (Tecnicamente sarà lo stesso formato degli ultimi CodeBot)
Poiché questa sfida non è stata pubblicata nella sandbox (per non dare a nessuno un vantaggio), mi riservo il diritto di modificare piccoli dettagli per correttezza o funzionalità aggiuntive. Inoltre, se c'è un bug nel runner CodeBots, lo cambierò, anche se un bot dipendesse da quel bug per il suo successo. Sto cercando di essere il più equo possibile.
Le Ifdichiarazioni ricorsive non verranno eseguite
Se il tuo bot è più corto di 24 righe, le righe rimanenti verranno riempite Flag
Ricorda quando copi per conto tuo C, che Cviene incrementato alla fine del tuo turno.
L'interprete CodeBots può essere trovato qui . Include un file .jar per una facile esecuzione. Aggiungi semplicemente il tuo bot alla cartella bot
I punteggi
- 893,9 Borg
- 1.3 LazyLioness
- 0.9 Difensore
- 0,5 Flagger
- 0.4 CliqueBot
- 0.4 Insidioso
- 0.3 Attaccante
- 0.3 Gard
- 0.3 SingleTarget
- 0.2 FreezeBot
- 0.2 Sentinel
- 0.2 Driveby
- 0.0 AntiInsidious
- 0.0 MoveBot
- 0.0 CliqueBorg
- 0.0 Calcolatrice
- 0.0 TestBot
- 0.0 Imitatore
AGGIORNARE
Le linee di codice ora vengono ruotate quando visualizzi il codice del tuo avversario. Ciò significa che la linea 1 del tuo avversario può essere la linea 14 (o qualunque altra linea). Un bot avrà un offset fisso che compenserà le sue linee in base Xall'importo se visto da un avversario . Anche la Cvariabile dell'avversario sarà compensata dello stesso Ximporto. Xnon cambierà all'interno dello stesso gioco, ma cambierà da gioco a gioco.