
|
Visit the APOCALYX BLOG!
|  |  | |  |  | | |
Jrobots FAQ
[English] [Italiano] [Español]
UPLOADS
-
Per aggiungere un nuovo Jrobot è necessario ricompilare il programma Java aggiungendo i nuovi file?
-
Se miglioro il mio robot come faccio ad inviare la nuova versione?
Posso usare un file con lo stesso nome o devo cambiarlo?
-
Ho seguito tutte le regole, ma il CGI degli Upload rifiuta il mio robot. Perché?
-
Ho mandato un robot al vostro sito ed ora posso vederlo nella lista, ma, quando lo seleziono per vederlo combattere, non appare nell'arena. Perché?
DEVELOPMENT
-
Perché l'arena non segue le normali convenzioni sulle coordinate e gli angoli?
-
Come posso effettuare il debugging del mio robot per vedere cosa avviene nel mio codice?
-
Quando un robot viene disabilitato non è possibile fare in modo che il simulatore chiami il metodo finalize() di quel robot? Questa è un'opzione che mi sarebbe molto utile perché uso delle variabili statiche che vengono incrementate quando i robot vengono creati.
UPLOADS
- D:
Per aggiungere un nuovo Jrobot è necessario ricompilare il programma Java aggiungendo i nuovi file?
R:
No. Puoi compilare e testare il tuo robot usando il package off-line. Poi invii il file al sito e viene automaticamente riconosciuto dall'applet che simula i tornei.
- D:
Se miglioro il mio robot come faccio ad inviare la nuova versione?
Posso usare un file con lo stesso nome o devo cambiarlo?
R:
Manda un file con lo stesso nome. Il vecchio file viene sovrascritto ed il nuovo robot eredita i risultati dei suoi predecessori. Se scegli un altro nome, il nuovo robot combatterà contro quello vecchio.
- D:
Ho seguito tutte le regole, ma il CGI degli Upload rifiuta il mio robot. Perché?
R:
Caso 1 Hai inserito nel codice un blocco try-catch, così nel file compare la classe java.lang.Exception. Hai violato la regola: "Non è possibile utilizzare le classi delle API Java nel codice dei robot"
Caso 2 Hai usato la classe java.lang.Math per ricavare la costante pi greco ed hai violato la regola : "Non è possibile utilizzare le classi delle API Java nel codice dei robot". In alternativa puoi definire tu stesso la costante pi greco.
- D:
Ho mandato un robot al vostro sito ed ora posso vederlo nella lista, ma, quando lo seleziono per vederlo combattere, non appare nell'arena. Perché?
R:
Caso 1 I robot non possono usare le inner classes, mi dispiace. Tutti gli algoritmi devono essere contenuti in una sola classe. Il tuo robot utilizza due classi MyRobot.class e MyRobot$1.class. Tu puoi inviare una sola classe e quindi MyRobot$1 non è disponibile nella versione on-line e viene generata un'eccezione.
DEVELOPMENT
- D:
Perché l'arena non segue le normali convenzioni sulle coordinate e gli angoli?
R:
Per rendere più veloce l'esecuzione su macchine lente, dato che i calcoli sono più semplici. Questo non è un problema perché i robot non possono vedere l'applet e puoi immaginare di osservare l'applet da "sotto" ;-)
- D:
Come posso effettuare il debugging del mio robot per vedere cosa avviene nel mio codice?
R:
Se usi il JDK e l'appletviewer, è molto semplice. Per esempio puoi usare questo codice per stampare sullo schermo una variabile ('a' è una variabile intera o qualsiasi altra cosa):
System.out.println("the value of 'a' is: "+a);
In questo modo utilizzi una delle classi Java per stampare sullo stream di output in una finestra DOS. La GUI dell'applet non subisce modifiche. Ricorda di rimuovere tutte queste linee quando invii il robot corretto: altrimenti il CGI degli Upload lo rifiuterà. Se non usi il JDK ed il suo compilatore a linea di comando, ma un'IDE più complessa, il debug dipende dall'IDE e non posso esserti di aiuto.
- D:
Quando un robot viene disabilitato non è possibile fare in modo che il simulatore chiami il metodo finalize() di quel robot? Questa è un'opzione che mi sarebbe molto utile perché uso delle variabili statiche che vengono incrementate quando i robot vengono creati.
R:
Il metodo finalize() può minare la sicurezza dell'applet. Questo metodo deve essere richiamato dal thread principale quando un robot viene disabilitato, così il thread passa il controllo al codice del robot. Qualcuno potrebbe inserire un loop infinito in finalize() per bloccare l'esecuzione e evitare un risultato negativo. Per identificare i robot usa il metodo id() all'inizio del metodo main(). Fornisce un unico identificativo ad ogni robot seguendo l'ordine di creazione.
Per altre domande mandatemi un email.
| | | |  | |  | | |
|