PgAr2025_Esame_GabrieleDome.../Spirit_Arnaldo_Selvaggio/src/Partita.java
2025-06-09 17:16:23 +02:00

127 lines
4.5 KiB
Java

import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import it.kibo.fp.lib.Menu;
import it.kibo.fp.lib.RandomDraws;
public class Partita {
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"};
private static String titolo2 = "seleziona il cavallo su cui scommettere";
private static String [] selezioniCavalli ={"Nawt, Rosso", "Blanco, Blu", "Pound, Giallo", "Bang, Verde", "Bupkus, Viola"};
private Deque <Giocatore> giocatori = new ArrayDeque<>();
private ArrayList <Cavallo> cavalli = new ArrayList<>();
private Mappa mappa;
private Pila pila;
private Menu menu = new Menu (titolo, selezioni, true, true, true);
private Menu menu2 = new Menu (titolo2, selezioniCavalli, true, true, true);
public Partita(Deque <Giocatore> giocatori, ArrayList<Cavallo> cavalli, Mappa mappa, Pila pila){
this.giocatori = giocatori;
this.cavalli = cavalli;
this.mappa = mappa;
this.pila = pila;
}
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(){
int dado = 0;
do{
new Output().annuncioTurno(giocatori.getFirst());
int s = menu.choose();
switch (s){
case 1:
giocatori.getFirst().lanciaDado(cavalli, mappa);
giocatori.addLast(giocatori.getFirst());
giocatori.removeFirst();
dado ++;
break;
case 2:
int x = giocatori.getFirst().posizionaTesseraTifoInveimento(mappa);
mappa.getCasella(x).setGiocatoreTessera(giocatori.getFirst());
giocatori.addLast(giocatori.getFirst());
giocatori.removeFirst();
break;
case 3:
boolean checkTesserePiene = false;
int cavalloScelto = 0;
do{
cavalloScelto = menu2.choose();
if (cavalli.get(cavalloScelto - 1).getTessereSize() >= 4){
checkTesserePiene = true;
new Output().erroreTesserePiene();
}
}while(checkTesserePiene == true);
giocatori.getFirst().scommettiCavallo(cavalli.get(cavalloScelto-1));
break;
case 4:
int cartaCavallo = 0;
boolean checkCartaUsata = false;
do{
cartaCavallo = menu2.choose();
for(int i = 0; i < pila.vincitoriSize(); i ++){
if(pila.getCartaVincitore(i).equals(giocatori.getFirst().getCarta(cartaCavallo))){
checkCartaUsata = true;
System.out.println("seleziona una carta che non hai mai usato ");
break;
}
}
if(checkCartaUsata == false){
for(int i = 0; i < pila.perdentiSize(); i++){
if(pila.getCartaPerdente(i).equals(giocatori.getFirst().getCarta(cartaCavallo))){
checkCartaUsata = true;
System.out.println("seleziona una carta che non hai mai usato ");
break;
}
}
}
giocatori.getFirst().giocaCasa(cartaCavallo, pila);
}while(checkCartaUsata == true);
break;
case 5:
new Output().mostraMappa(mappa);
break;
case 6:
new Output().visualizzaSoldi(giocatori);
break;
}
for(int i = 0; i < cavalli.size(); i++){
if(cavalli.get(i).getPosizione() >= 17){
finePartita();
}
}
}while(dado < 5);
}
public void fineTappa(){
}
public void finePartita(){
}
}