Esercizio 9 e Soluzione 8
Post date: Nov 22, 2013 4:5:53 PM
Ho messo nella cartella condivisa - soluzione esercizi l'esercizio 8; ho inserito qualche metodo in più rispetto a quanto richiesto, ispirandomi a qualcosa che qualche vostro collega ha fatto, in modo da darvi più codice su cui poter riflettere.
Lunedì faremo le ultime tre ore di teoria di reti; mercoledì due ore di esercitazioni e giovedì la provetta.
Se avete domande o dubbi: scrivete, scrivete, scrivete!
Esercizio 9
Creare un simulatore di BlackJack (gioco di carte).
Nel Black Jack ogni giocatore deve continuare a pescare una carta fino a quando non raggiunge almeno il valore di 17; vince chi raggiunge la cifra più alta, purché sia minore o uguale a 21.
L'asso (carta 1) vale sia 1 che 11 punti, in base alla convenienza del giocatore; ovviamente, questa regola si applica al massimo ad un asso per giocatore.
Nella nostra simulazione, ci sono due giocatori ed il mazzo del casinò ha lunghezza infinita (cosa peraltro realistica); questo vuol dire che si può pescare due volte la stessa carta. Inoltre, non ci sono differenze di valore tra i semi: questo significa che, alla fin fine, possiamo pensare al mazzo come ad un array di 13 carte prendibili più volte.
Definire un oggetto Carta, il quale avrà un valore numerico compreso tra 1 e 13
Definire un oggetto Mazzo, il quale conterrà le 13 carte ed avrà un metodo che restituisce una carta scelta casualmente (Random)
Creare un oggetto giocatore, il quale avrà un nome, un array di 21 carte pescate ed i seguenti metodi:
private void aggiungiCarta(Carta c) -> si occupa di inserire la Carta passatagli nel primo spazio disponibile dell'array delle carte pescate
public int calcolaPunti() -> calcola il punteggio delle carte pescate (attenzione ai null); se c'è un asso tra le carte pescate, decide se farlo valere 1 o 11 in base alla convenienza
public void gioca(Mazzo mazzo) -> questo metodo riceve il mazzo di carte, e continua a pescare fino a quando non raggiunge il punteggio minimo di 17
Nella classe principale del progetto (quella con il metodo main):
inizializzare il mazzo e le carte
definire due giocatori
farli giocare (ogni giocatore pesca tutte le carte di fila, senza turni)
stampare a schermo i punti di ognuno due giocatori
(bonus): dire chi ha vinto.
Non spaventatevi, è meno complesso di quanto possa sembrare.
Ho già caricato la soluzione completa al problema, e per chi non vuole arrendersi subito una soluzione parziale su cui lavorare.