Skip to content

Esercizi

Claudio edited this page Mar 13, 2020 · 2 revisions

L'esercitazione prevede i passi descritti nel seguito.

1. Preparazione del progetto

Clonare il repository per ottenerne una versione in locale. Da terminale lanciare il comando:

git clone https://github.com/IngSW-unipv/AlchemicalBank.git

Importare il progetto nell'IDE Eclipse. Per fare ciò è sufficiente selezionare il comando "Import..." nel menu File

Dopo aver selezionato la directory radice del progetto, Eclipse dovrebbe individuare correttamente tutte le impostazioni necessarie (directory con i sorgenti, librerie, versione dello SDK...). Per verificare che tutto funzioni, eseguire la classe `AlchemicalBank'. Se la procedura è andata a buon fine il progetto verrà compilato ed eseguito, fornendo in output un risultato (una classifica dei maghi predefiniti).

Si consulti la pagina Struttura del progetto per una descrizione schematica delle classi che compongono il progetto.

2. Creazione di un giocatore

Creare una nuova classe nel package wizards estendendo la superclasse astratta Wizard. La sottoclasse verrà identificata dal proprio nome che deve quindi essere univoco. Si consiglia di utilizzare una schema del tipo CognomeNome. Conviene inoltre inserire un commento con le generalità completa (come cognome e numero di matricola) del programmatore (o dei programmatori).

Si consiglia di iniziare con un giocatore che implementi una strategia semplice. In pratica occorre implementare il metodo askKeepOrLiquidate che, dato il valore corrente del fondo e il numero di mesi da cui è aperto, restituisce Decision.LIQUIDATE_FUND oppure Decision.KEEP_FUND a seconda che si scelga di chiudere o di tenere aperto il fondo. Si consiglia di prendere spunto dalle classi di esempio GreedyWizard, PatientWizard e WackyWizard.

Dopo aver terminato una prima versione funzionante della classe, la si dovrà pubblicare tramite una sequenza di operazioni sul repository:

  1. aggiunta delle modifiche (comando git add <percorso alla nuova classe>);

  2. commit delle modifiche (git commit -m "commento"), specificando con un commento la natura della modifica effettuata;

  3. pull delle modifiche effettuati da altri partecipanti (comando git pull);

  4. push delle modifiche sul server (comando git push) inserendo le credenziali opportune quando richiesto.

Qualora ci fossero dei conflitti con le modifiche effettuate da altri utenti (punto 3) bisognerà risolverli prima di procedere (in questo esercizio ciò non dovrebbe avvenire, visto che ciascun partecipante dovrebbe modificare soltanto i propri file). Dopo qualche istante si potrà verificare l'avvenuta pubblicazione delle modifiche tramite l'interfaccia web di github. I punti 1 e 2 possono essere eseguiti liberamente durante lo sviluppo ogni volta che si conclude una modifica significativa.

Documentazione

Si modifichi la pagina wiki Partecipanti inserendo il nome della propria classe e una riga di spiegazione sulla strategia implementata.

Raffinamento della strategia

A questo punto occorre cercare una strategia competitiva che consenta di guadagnare la maggiore quantità di monete possibile. Si possono pubblicare versioni successive della propria classe ripetendo i passi descritti nel punto precedente, purché si abbia cura di lasciare il progetto in uno stato in cui possa essere compilato ed eseguito senza errori.

Strategie più sofisticate possono essere implementate ridefinendo i metodi newFund e fundClosed che vengono richiamati all'inizio e alla fine di ciascun anno e che forniscono informazioni potenzialmente utili.

Alla fine ci si ricordi di modificare la descrizione della strategia implementata.

Clone this wiki locally