2025-06-09 11:23:39 +02:00
import java.util.ArrayDeque ;
import java.util.ArrayList ;
import java.util.Deque ;
2025-06-09 14:44:23 +02:00
import it.kibo.fp.lib.Menu ;
2025-06-09 12:59:11 +02:00
import it.kibo.fp.lib.RandomDraws ;
2025-06-09 10:44:26 +02:00
public class Partita {
2025-06-09 14:44:23 +02:00
private static String titolo = " seleziona la scelta " ;
private static String [ ] selezioni = { " Lancia il dado " , " usa la tessera tifo o inveimento " , " scommetti su un cavallo " , " giocati la casa " , " visualizza la mappa " , " visualizza i soldi di tutti " } ;
2025-06-09 12:29:29 +02:00
private Deque < Giocatore > giocatori = new ArrayDeque < > ( ) ;
private ArrayList < Cavallo > cavalli = new ArrayList < > ( ) ;
2025-06-09 11:23:39 +02:00
private Mappa mappa ;
private Pila pila ;
2025-06-09 14:44:23 +02:00
private Menu menu = new Menu ( titolo , selezioni , true , true , true ) ;
2025-06-09 10:44:26 +02:00
2025-06-09 11:23:39 +02:00
public Partita ( Deque < Giocatore > giocatori , ArrayList < Cavallo > cavalli , Mappa mappa , Pila pila ) {
this . giocatori = giocatori ;
this . cavalli = cavalli ;
this . mappa = mappa ;
this . pila = pila ;
}
2025-06-09 12:59:11 +02:00
public void sceltaCavaliere ( ) {
int i = RandomDraws . drawInteger ( 0 , giocatori . size ( ) - 1 ) ;
for ( int j = 0 ; j < i ; j + + ) {
giocatori . addLast ( giocatori . getFirst ( ) ) ;
giocatori . removeFirst ( ) ;
}
giocatori . getFirst ( ) . setCavaliere ( true ) ;
}
public void inizioTappa ( ) {
2025-06-09 15:39:10 +02:00
int dado = 0 ;
2025-06-09 14:44:23 +02:00
do {
new Output ( ) . annuncioTurno ( giocatori . getFirst ( ) ) ;
int s = menu . choose ( ) ;
switch ( s ) {
case 1 :
2025-06-09 15:39:10 +02:00
giocatori . getFirst ( ) . lanciaDado ( cavalli , mappa ) ;
2025-06-09 14:44:23 +02:00
giocatori . addLast ( giocatori . getFirst ( ) ) ;
giocatori . removeFirst ( ) ;
2025-06-09 15:39:10 +02:00
dado + + ;
for ( int i = 0 ; i < cavalli . size ( ) ; i + + ) {
if ( cavalli . get ( i ) . getPosizione ( ) > = 17 ) {
dado = 5 ;
}
}
2025-06-09 14:44:23 +02:00
break ;
case 2 :
int i = giocatori . getFirst ( ) . posizionaTesseraTifoInveimento ( mappa ) ;
mappa . getCasella ( i ) . setGiocatoreTessera ( giocatori . getFirst ( ) ) ;
giocatori . addLast ( giocatori . getFirst ( ) ) ;
giocatori . removeFirst ( ) ;
break ;
case 3 :
break ;
case 4 :
break ;
case 5 :
new Output ( ) . mostraMappa ( mappa ) ;
break ;
case 6 :
new Output ( ) . visualizzaSoldi ( giocatori ) ;
break ;
}
2025-06-09 15:39:10 +02:00
} while ( dado < 5 ) ;
2025-06-09 12:59:11 +02:00
}
2025-06-09 10:44:26 +02:00
}