Fabio Donatantonio

Resta connesso

Software Developer / Adjunct Professor

Esercizio 27 – Simulazione Casinò

Scrivere un programma che si comporta come segue:

  • Crea due conti correnti uno (conto giocatore) con importo iniziale pari a 1000 euro ed uno (conto casinò) con importo iniziale pari a 100000 euro.
  • Prende in input da tastiera un intero n e un double somma e simula il lancio di un dado (con 6 facce). Se il risultato del lancio è n allora il programma trasferisce un importo pari a 5 volte il valore di somma dal conto del casinò al conto del giocatore; se il risultato è diverso da n il programma trasferisce un importo pari a somma dal conto del giocatore a quello del casinò. Il valore di somma deve essere inferiore al saldo del vostro conto e 5 volte più piccolo di quello del conto del casinò.
  • Se dopo la scommessa il giocatore dispone ancora di soldi sul conto, il programma chiede se volete continuare a scommettere. Se digitate “si” il programma continua dal punto 2. Se digitate qualcosa di diverso da “si” oppure il saldo è zero il programma si interrompe stampando il saldo del vostro conto.

Infondo all’esercizio è possibile lanciare e scaricare l’eseguibile.

Innanzitutto il codice della classe Dado.java:

import java.util.Random;
public class Dado {
	// Metodo Costruttore. Numero di facce impostato a 6.
	public Dado()
	{
		facce = 6;
		generatore = new Random();
	}

	// Metodo che simula il lancio del dado
	public int lancia()
	{
		return 1 + generatore.nextInt(facce);
	}

	private Random generatore;
	private int facce;
}

Quindi le classi per gestire i due conti.
ContoGiocatore.java:

public class ContoGiocatore
{
	double contoGio;

	// Metodo Costruttore inizializzato con un valore double
	public ContoGiocatore(double c)
	{
		contoGio = c;
	}

	// Metodo che restituisce l'importo del conto giocatore
	public double getContoGiocatore()
	{
		return contoGio;
	}

	// Metodo che permette di sottrarre la somma persa dal giocatore
	public void sottraiContoGiocatore(double s)
	{
		double temp = contoGio;
		temp = temp - s;
		contoGio = temp;
	}

	/** Metodo che permette di aggiungere la somma vinta dal giocatore.
      Somma vinta = somma giocata * 5.
	 */
	public void aumentaContoGiocatore(double s)
	{
		double temp = 5*s;
		contoGio = contoGio + temp;
	}
}

ContoCasino.java:

public class ContoCasino
{
	double contoCas;

	// Metodo Costruttore ContoCasinò inizializzato con un valore double
	public ContoCasino(double c)
	{
		contoCas = c;
	}

	// Metodo che restituisce l'importo del conto casinò
	public double getContoCasino()
	{
		return contoCas;
	}

	/** Metodo che permette di sottrarre una somma vinta da un giocatore
        al conto del casinò.
        La somma sottratta è pari alla somma giocata dal giocatore moltiplicata
        per cinque.
	 */
	public void sottraiContoCasino(double s)
	{
		double temp = contoCas;
		double temp1 = s*5;
		temp = temp - temp1;
		contoCas = temp;
	}

	/** Metodo che permette di aggiungere una somma persa da un giocatore
        al conto del casino
	 */
	public void sommaContoCasino(double s)
	{
		double temp = contoCas;
		temp = temp + s;
		contoCas = temp;
	}
}

Quindi infine la classe di test che si chiamerà VaiAlCasino.java:

import java.util.Scanner;
public class VaiAlCasino
{

	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);

		// Costruisco un oggetto dado
		Dado d = new Dado();

		// Costruisco un nuovo oggetto giocatore e uno casinò
		ContoGiocatore fabio = new ContoGiocatore(1000);
		ContoCasino casino = new ContoCasino(100000);

		String verifica = "si";
		System.out.println("*** BENVENUTI AL CASINò ***");

		// Simulo la giocata
		while ( verifica.equalsIgnoreCase("si"))
		{
			// Scelgo un numero del dado
			System.out.println("Scegli un numero:");
			int num = in.nextInt();
			if(num>0 && num<7)
			{
				// Punto una somma di denaro
				System.out.println("Punta una somma di denaro: ");
				System.out.print("(ricorda che il tuo credito è pari a " + fabio.getContoGiocatore());
				System.out.println(" )");
				double somma = in.nextDouble();

				double contoG = fabio.getContoGiocatore();
				double contoC = casino.getContoCasino();
				double contoCc = contoC/5;

				// Verifico la puntata e il budget del casinò
				if ( somma <= contoG && somma <= contoCc)
				{
					// Simulo il lancio del dado
					System.out.println("Lancio il dado...");
					int lancio = d.lancia();
					System.out.print("Il risulatato del dado è :  ");
					System.out.println(lancio);

					// Verifico se il giocatore vince o perde
					if ( lancio == num)
					{
						System.out.println("Complimenti hai vinto");
						fabio.aumentaContoGiocatore(somma);
						casino.sottraiContoCasino(somma);
					}else{
						System.out.println("Peccato, hai perso");
						casino.sommaContoCasino(somma);
						fabio.sottraiContoGiocatore(somma);
					}

				}else{
					System.out.println("Non puoi puntare quella somma");
				}

				double newSomma = fabio.getContoGiocatore();

				// Verifico se il giocatore può continuare a giocare
				if ( newSomma > 0)
				{
					// Il giocatore sceglie se continuare a giocare
					System.out.println("Vuoi continuare a scommettere?");
					verifica = in.next();
					System.out.print("Il tuo conto è pari a :  ");
					System.out.println(fabio.getContoGiocatore());
				}else{
					System.out.println("CONTO ESAURITO");
					System.out.println(fabio.getContoGiocatore());
					verifica = "no";
				}
			}
		}
	}
}

Cliccando qui è possibile scaricare l’eseguibile.

Fabio Donatantonio

Fabio Donatantonio. Analista e sviluppatore full-stack di applicazioni web in linguaggio PHP. Professore a Contratto per le cattedre di Fondamenti di Informatica e Archivistica Digitale presso Università degli Studi eCampus. Dal 2008 curatore del sito www.donatantonio.net, da sempre appassionato di programmazione, mare, sigari e... musica.

Leave a reply

Your email address will not be published. Required fields are marked *

 

Didattica

Università degli Studi eCampus
Data Evento
09/02/2021
14:30
Esame Archivistica Digitale e Informatica per le Scienze Umane - Cds Letteratura, Lingua e Cultura Italiana - Lettere
09/02/2021
14:30
Esame Introduzione all'Archivistica Digitale e all'Informatica per le Scienze Umane - Cds Letteratura, Arte, Musica e Spettacolo - Lettere
09/02/2021
17:30
Esame Abilità Informatiche e Telematiche - Cds Design e Discipline della Moda - Lettere
09/02/2021
17:30
Esame Abilità Informatiche e Telematiche - Cds Letteratura, Arte, Musica e Spettacolo - Lettere
Risorse
Guida HTML/CSS per principianti (link)
Introduzione agli ipertesti (link)
Esercizi guidati in Java (link)
Intelligenza artificiale (link)
Libri
Fondamenti di Informatica (2011) (link)
Informatica per le Scienze Umane (2011) (link)
Fondamenti di Informatica (2014) (link)
Pagina Docente
uniecampus.it - Scheda Docente (link)
Contatti
fabio.donatantonio[at]uniecampus.it

JWhisper, sviluppato presso il Dipartimento di Informatica Applicata dell'Università degli Studi di Salerno:

Stay Connected

Twitter

Le mie foto

Foto di Fabio Donatantonio
×