Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
lpr-a:progetto2 [10/05/2010 alle 18:00 (14 anni fa)] Vincenzo Gervasi |
lpr-a:progetto2 [08/06/2010 alle 13:58 (14 anni fa)] (versione attuale) Vincenzo Gervasi |
||
---|---|---|---|
Linea 1: | Linea 1: | ||
====== Progetto 2 ====== | ====== Progetto 2 ====== | ||
- | __**ATTENZIONE: Pagina in corso di preparazione!**__ | + | Questa pagina descrive il **II Progetto |
- | Questa pagina descrive il **II Progetto di LPR 2009/10 **. | ||
===== Descrizione del gioco ===== | ===== Descrizione del gioco ===== | ||
Linea 12: | Linea 11: | ||
Per ogni robot avversario distrutto, viene assegnato al robot assassino un punteggio pari a 1 più la metà del punteggio dell' | Per ogni robot avversario distrutto, viene assegnato al robot assassino un punteggio pari a 1 più la metà del punteggio dell' | ||
- | |||
===== File eseguibili ===== | ===== File eseguibili ===== | ||
+ | Il progetto consiste nella scrittura di un client (giocatore) per un server dato (che gestisce il gioco). Il codice del server è disponibile per essere scaricato; è possibile che vengano rilasciate versioni successive (con modifiche minori, quali fine-tuning di alcuni parametri) in seguito. | ||
+ | ==== File scaricabili ==== | ||
+ | |||
+ | Versione iniziale (10 Maggio 2010): [[http:// | ||
+ | |||
+ | ==== Istruzioni ==== | ||
+ | |||
+ | I file necessitano di Java Virtual Machine installata sulla macchina. Essi possono essere usati sia da GUI (con un doppio click sull' | ||
+ | === Uso da GUI === | ||
+ | Aprendo il server si aprirà il pannello che rappresenta il campo di gioco, con tutti i parametri impostati al loro valore di default (vedi la prossima sezione). Il server è ora disponibile ad accettare connessioni dai client; chiudendo la finestra, si termina l' | ||
+ | Il client può essere lanciato un numero qualunque di volte; a ogni esecuzione da GUI, verrà registrato un nuovo giocatore sul server (con un nome casuale). Per default, le opzioni del client coincidono con quelle del server. Con la chiusura del server, terminano (con un errore) tutti i client collegati fino a quel momento. | ||
+ | |||
+ | === Uso da riga di comando === | ||
+ | Il server può essere lanciato con il comando | ||
+ | |||
+ | '' | ||
+ | |||
+ | in cui: | ||
+ | * // | ||
+ | |||
+ | Il client può essere lanciato con il comando | ||
+ | |||
+ | '' | ||
+ | |||
+ | in cui: | ||
+ | |||
+ | * //nome// è il nome scelto per il robot (per default: generato casualmente) | ||
+ | * //host// è l' | ||
+ | * // | ||
+ | |||
+ | Tutti i parametri (sia del server che del client) sono opzionali, ma se presenti devono essere indicati in ordine. Per esempio, è possibile indicare sul client il nome del robot, omettendo host e porta. | ||
- | TBC | ||
===== Documentazione del protocollo ===== | ===== Documentazione del protocollo ===== | ||
Linea 30: | Linea 58: | ||
=== Fairness === | === Fairness === | ||
Tentativi di sabotare il server o il protocollo sono lodevoli, ma considerati illegali ai fini dell' | Tentativi di sabotare il server o il protocollo sono lodevoli, ma considerati illegali ai fini dell' | ||
- | |||
==== Messaggi TCP ==== | ==== Messaggi TCP ==== | ||
I comandi hanno la seguente struttura: | I comandi hanno la seguente struttura: | ||
Linea 43: | Linea 70: | ||
^ STEP ^ 1 | Si sposta di un passo verso la // | ^ STEP ^ 1 | Si sposta di un passo verso la // | ||
^ LOOK ^ 2 | Guarda verso la // | ^ LOOK ^ 2 | Guarda verso la // | ||
- | ^ FIRE ^ 3 | Emette un raggio laser lungo la // | + | ^ FIRE ^ 3 | Emette un raggio laser lungo la // |
| Comandi senza codice di direzione ||||| | | Comandi senza codice di direzione ||||| | ||
^ GPS ^ 5 | Restituisce la propria posizione corrente. | Un byte contenente la posizione //x//, un byte contenente la posizione //y//. | - | | ^ GPS ^ 5 | Restituisce la propria posizione corrente. | Un byte contenente la posizione //x//, un byte contenente la posizione //y//. | - | | ||
Linea 65: | Linea 92: | ||
|Oggetti di mappa||| | |Oggetti di mappa||| | ||
^ ROBOT ^ 82 | un robot | | ^ ROBOT ^ 82 | un robot | | ||
- | ^ WALL ^ 88 | un muro | | + | ^ WALL ^ 88 | un muro interno | |
+ | ^ OUTSIDE ^ 0 | fuori mappa (un muro esterno) | ||
==== Gestione della batteria ==== | ==== Gestione della batteria ==== | ||
Linea 105: | Linea 133: | ||
===== Suggerimenti finali ===== | ===== Suggerimenti finali ===== | ||
- | L' | + | L' |
* la correttezza dell' | * la correttezza dell' | ||
- | * il design e l' | + | * il design e l' |
* l' | * l' | ||
* la qualità complessiva di scrittura del codice e della relazione. | * la qualità complessiva di scrittura del codice e della relazione. | ||
Linea 116: | Linea 144: | ||
Per lanciare più istanze del client in maniera rapida, si può usare un comando di shell di questo tipo: | Per lanciare più istanze del client in maniera rapida, si può usare un comando di shell di questo tipo: | ||
- | '' | + | '' |
o un suo equivalente su altri sistemi operativi. | o un suo equivalente su altri sistemi operativi. | ||
- | |||
===== FAQ ===== | ===== FAQ ===== | ||
- | In questa sezione verranno raccolte le domande più frequenti poste dagli studenti durante lo svolgimento | + | **Come è definita una " |
+ | \\ | ||
+ | Non esiste sul server il concetto di squadra; dal punto di vista del server, si tratta di robot singoli. Ai fini dell' | ||
+ | |||
+ | **Il server mi restituisce a volte -1 in risposta al comando BATTERY, è un errore del server?** | ||
+ | \\ | ||
+ | No, il valore restituito è del tutto corretto. Si raccomanda di verificare la propria interpretazione del valore, perché... | ||
+ | //En este mundo traidor, nada es verdad, ni mentira: todo es según el color del cristal con que se mira//. |