ESERCITAZIONE 4: Applicazione client-server
Scopo dell'esercitazione
Scopo dell'esercitazione è quello di realizzare una battaglia navale on-line,
in modo che più utenti possano partecipare contemporaneamente al gioco.
L'esercitazione consiste, quindi, nello sviluppare un'applicazione client e
un'applicazione server, con una serie di funzionalità minime di base.
In particolare:
- Il server mantiene una lista dei giocatori iscritti e lo stato dei giocatori (ossia se sono già impegnati in una battaglia navale oppure no)
- Il server mantiene anche la classifica dei 10 migliori giocatori (quelli che hanno affondato la flotta nemica con il minor numero di colpi)
- Il client deve avere un'interfaccia grafica che permetta all'utente di:
- Disporre agevolmente la propria flotta
- Iscriversi presso un server
- Visualizzare la situazione della propria flotta e i colpi ricevuti dall'avversario
- Visualizzare l'esito dei colpi inviati all'avversario
- Un giocatore deve avere la possibilità di arrendersi
Una flotta è costituita da:
- Una portaerei (5 quadretti di dimensione)
- Una fregata (4 quadretti di dimensione)
- 2 sommergibili (3 quadretti di dimensione ciascuno)
- 1 caccia torpediniere (2 quadretti di dimensione)
- 1 pilotina (1 quadretto di dimensione)
Ciascun pezzo deve essere disposto per tutta la sua lunghezza orizzontalmente o verticalmente.
Non esiste alcun vincolo circa la distanza minima tra due navi.
Il quadrante è quadrato e composto da 100 quadretti: le colonne sono indicate con le lettere maiuscole dell'alfabeto inglese, le righe con i numeri arabi.
La prima colonna è indicata dalla lettera 'A', la prima riga dal numero '1'.
Vincoli
Non esistono vincoli circa il numero di porta su cui il server è in ascolto, né sul protocollo di comunicazione utilizzato dal client e dal server; è bene che si possa facilmente configurare il server a cui il client deve connettersi per iniziare a giocare (per esempio attraverso un file di configurazione o un'opzione da riga di comando).
Infine dovreste cercare di gestire e prevedere il maggior numero di errori possibile (per esempio un giocatore non può iniziare il gioco con un giocatore già impegnato in una partita; un giocatore non può inviare un colpo a un utente che non sia il suo avversario, e nemmeno a se stesso...).
Nota
Qualsiasi estensione del gioco, che comprenda i requisiti minimi, è ben accetta.
Materiale
A parte gli esempi visti a lezione e già disponibili
on-line, riferitevi alla
documentazione ufficiale di SUN
Modalità di consegna
L'esercitazione dovrà essere consegnata per mail al seguente indirizzo: comes@disi.unige.it entro Lunedì 27 Maggio compreso.
Prego tutti di rispettare le seguenti indicazioni:
- Subject:"Gruppo "
- Body: Elencate i componenti del gruppo, indicando il nome e la versione del browser utilizzato per svolgere l'esercitazione
- In allegato ricordatevi di inserire un archivio (preferibilmente compresso -- prediligete gzip, winzip, zip o tar) che conterrà l'esercitazione da voi svolta (leggi tutti i sorgenti).
Per favore cercate di costruire l'archivio in modo tale che tutti i file dell'esercitazione si trovino sotto una directory nominata "Gruppo-<numero gruppo>"
- Nell'archivio non dovranno essere presenti i file .class, ma solo i files .java del client e del server. Quindi, per favore, indicate quale versione del compilatore java avete utilizzato per compilare i programmi. È gradito (ma non necessario né influisce sulla valutazione) un makefile per la compilazione.
- Solo la prima esercitazione che spedirete sarà considerata ai fini della valutazione del laboratorio; quindi evitate di inviare pi versioni della stessa esercitazione perché verranno sistematicamente ignorate
Ricordo a tutti che le esercitazioni che non rispettano i requisiti minimi richiesti non saranno corrette (== voto = 0). In particolare chi svolge l'esercitazione non utilizzando Java ma altre tecnologie (C++, VB, etc...) ricever lo stesso trattamento.
Per qualsiasi dubbio o chiarimento potete scrivermi.
Ultima modifica: 17 Maggio 2002