package monopoly.tavola; import monopoly.tavola.carta.Carte; import monopoly.tavola.casella.Casella; import monopoly.tavola.casella.CasellaCarta; import monopoly.tavola.casella.PosteggioGratuito; import monopoly.tavola.casella.Prigione; import monopoly.tavola.casella.Societa; import monopoly.tavola.casella.Stazione; import monopoly.tavola.casella.Tassa; import monopoly.tavola.casella.Terreno; import monopoly.tavola.casella.VaiInPrigione; import monopoly.tavola.casella.Via; import monopoly.util.Colori; import monopoly.util.GruppoColori; public class Tavola { private static Tavola tavola; private final int NUM_CASELLE = 40; private Dado[] dado = new Dado[2]; private GruppoColori gruppoColori = new GruppoColori(); private Casella[] caselle; private Tavola() { dado[0]=new Dado(); dado[1]=new Dado(); caselle = new Casella[NUM_CASELLE]; caselle[0] = new Via(500); caselle[1] = new Terreno("Vicolo Corto", new ContrattoTerreno(150, 5, 75, new int[] { 25, 75, 225, 400, 625 }, 125, 125), Colori.ROSA); gruppoColori.put(Colori.ROSA, new Integer(getNumeroDiTerreniPerColore(Colori.ROSA) + 1)); caselle[2] = new CasellaCarta("Carta", Carte.PROBABILITA); caselle[3] = new Terreno("Vicolo Stretto", new ContrattoTerreno(150, 10, 75, new int[] { 50, 150, 450, 800, 1125 }, 125, 125), Colori.ROSA); gruppoColori.put(Colori.ROSA, new Integer(getNumeroDiTerreniPerColore(Colori.ROSA) + 1)); caselle[4] = new Tassa("Tassa Patrim.", 500); caselle[5] = new Stazione("Stazione Sud", new ContrattoStazione(480, 60, 240, new int[] { 120, 240, 480 })); caselle[6] = new Terreno("Bastioni Gran Sasso", new ContrattoTerreno(250, 15, 125, new int[] { 75, 225, 675, 1000, 1375 }, 125, 125), Colori.BLU); gruppoColori.put(Colori.BLU, new Integer(getNumeroDiTerreniPerColore(Colori.BLU) + 1)); caselle[7] = new CasellaCarta("Carta", Carte.IMPREVISTO); caselle[8] = new Terreno("Viale Monterosa", new ContrattoTerreno(250, 15, 125, new int[] { 75, 225, 675, 1000, 1375 }, 125, 125), Colori.BLU); gruppoColori.put(Colori.BLU, new Integer(getNumeroDiTerreniPerColore(Colori.BLU) + 1)); caselle[9] = new Terreno("Viale Vesuvio", new ContrattoTerreno(300, 20, 150, new int[] { 100, 250, 750, 1125, 1500 }, 125, 125), Colori.BLU); gruppoColori.put(Colori.BLU, new Integer(getNumeroDiTerreniPerColore(Colori.BLU) + 1)); caselle[10] = new Prigione(125); caselle[11] = new Terreno("Via Accademia", new ContrattoTerreno(350, 25, 175, new int[] { 125, 375, 1125, 1550, 1875 }, 250, 250), Colori.ARANCIONE); gruppoColori.put(Colori.ARANCIONE, new Integer(getNumeroDiTerreniPerColore(Colori.ARANCIONE) + 1)); caselle[12] = new Societa("Soc. Elettrica", new ContrattoSocieta(380, 50, 190, 250)); caselle[13] = new Terreno("Corso Ateneo", new ContrattoTerreno(350, 25, 175, new int[] { 125, 375, 1125, 1550, 1875 }, 250, 250), Colori.ARANCIONE); gruppoColori.put(Colori.ARANCIONE, new Integer(getNumeroDiTerreniPerColore(Colori.ARANCIONE) + 1)); caselle[14] = new Terreno("Piazza Università", new ContrattoTerreno(400, 30, 200, new int[] { 150, 450, 1250, 1750, 2250 }, 250, 250), Colori.ARANCIONE); gruppoColori.put(Colori.ARANCIONE, new Integer(getNumeroDiTerreniPerColore(Colori.ARANCIONE) + 1)); caselle[15] = new Stazione("Stazione Ovest", new ContrattoStazione(480, 60, 240, new int[] { 120, 240, 480 })); caselle[16] = new Terreno("Via Verdi", new ContrattoTerreno(450, 35, 225, new int[] { 175, 500, 1375, 1875, 2375 }, 250, 250), Colori.MARRONE); gruppoColori.put(Colori.MARRONE, new Integer(getNumeroDiTerreniPerColore(Colori.MARRONE) + 1)); caselle[17] = new CasellaCarta("Carta", Carte.PROBABILITA); caselle[18] = new Terreno("Corso Raffaello", new ContrattoTerreno(450, 35, 225, new int[] { 175, 500, 1375, 1875, 2375 }, 250, 250), Colori.MARRONE); gruppoColori.put(Colori.MARRONE, new Integer(getNumeroDiTerreniPerColore(Colori.MARRONE) + 1)); caselle[19] = new Terreno("Piazza Dante", new ContrattoTerreno(500, 40, 250, new int[] { 200, 550, 1500, 2000, 2500 }, 250, 250), Colori.MARRONE); gruppoColori.put(Colori.MARRONE, new Integer(getNumeroDiTerreniPerColore(Colori.MARRONE) + 1)); caselle[20] = new PosteggioGratuito(); caselle[21] = new Terreno("Via Marco Polo", new ContrattoTerreno(550, 45, 275, new int[] { 225, 625, 1750, 2200, 2625 }, 375, 375), Colori.ROSSO); gruppoColori.put(Colori.ROSSO, new Integer(getNumeroDiTerreniPerColore(Colori.ROSSO) + 1)); caselle[22] = new CasellaCarta("Carta", Carte.IMPREVISTO); caselle[23] = new Terreno("Corso Magellano", new ContrattoTerreno(550, 45, 275, new int[] { 225, 625, 1750, 2200, 2625 }, 375, 375), Colori.ROSSO); gruppoColori.put(Colori.ROSSO, new Integer(getNumeroDiTerreniPerColore(Colori.ROSSO) + 1)); caselle[24] = new Terreno("Largo Colombo", new ContrattoTerreno(600, 50, 300, new int[] { 255, 750, 1875, 2250, 2750 }, 375, 375), Colori.ROSSO); gruppoColori.put(Colori.ROSSO, new Integer(getNumeroDiTerreniPerColore(Colori.ROSSO) + 1)); caselle[25] = new Stazione("Stazione Nord", new ContrattoStazione(480, 60, 240, new int[] { 120, 240, 480 })); caselle[26] = new Terreno("Viale Costantino", new ContrattoTerreno(650, 55, 325, new int[] { 275, 825, 2000, 2500, 3000 }, 375, 375), Colori.GIALLO); gruppoColori.put(Colori.GIALLO, new Integer(getNumeroDiTerreniPerColore(Colori.GIALLO) + 1)); caselle[27] = new Terreno("Viale Traiano", new ContrattoTerreno(650, 55, 325, new int[] { 275, 825, 2000, 2500, 3000 }, 375, 375), Colori.GIALLO); gruppoColori.put(Colori.GIALLO, new Integer(getNumeroDiTerreniPerColore(Colori.GIALLO) + 1)); caselle[28] = new Societa("Soc.Acqua Potabile", new ContrattoSocieta(380, 50, 190, 250)); caselle[29] = new Terreno("Piazza Giulio Cesare", new ContrattoTerreno(700, 60, 350, new int[] { 300, 900, 2125, 2625, 3125 }, 375, 375), Colori.GIALLO); gruppoColori.put(Colori.GIALLO, new Integer(getNumeroDiTerreniPerColore(Colori.GIALLO) + 1)); caselle[30] = new VaiInPrigione(); caselle[31] = new Terreno("Via Roma", new ContrattoTerreno(750, 65, 375, new int[] { 325, 1000, 2250, 2750, 3250 }, 500, 500), Colori.VERDE); gruppoColori.put(Colori.VERDE, new Integer(getNumeroDiTerreniPerColore(Colori.VERDE) + 1)); caselle[32] = new Terreno("Corso Impero", new ContrattoTerreno(750, 65, 375, new int[] { 325, 1000, 2250, 2750, 3250 }, 500, 500), Colori.VERDE); gruppoColori.put(Colori.VERDE, new Integer(getNumeroDiTerreniPerColore(Colori.VERDE) + 1)); caselle[33] = new CasellaCarta("Carta", Carte.PROBABILITA); caselle[34] = new Terreno("Largo Augusto", new ContrattoTerreno(800, 70, 400, new int[] { 375, 1125, 2500, 3000, 3500 }, 500, 500), Colori.VERDE); gruppoColori.put(Colori.VERDE, new Integer(getNumeroDiTerreniPerColore(Colori.VERDE) + 1)); caselle[35] = new Stazione("Stazione Est", new ContrattoStazione(480, 60, 240, new int[] { 120, 240, 480 })); caselle[36] = new CasellaCarta("Carta", Carte.IMPREVISTO); caselle[37] = new Terreno("Viale dei Giardini", new ContrattoTerreno(900, 90, 450, new int[] { 500, 1250, 2750, 3250, 3750 }, 500, 500), Colori.VIOLA); gruppoColori.put(Colori.VIOLA, new Integer(getNumeroDiTerreniPerColore(Colori.VIOLA) + 1)); caselle[38] = new Tassa("Tassa Lusso", 250); caselle[39] = new Terreno("Parco della Vittoria", new ContrattoTerreno(1000, 125, 500, new int[] { 500, 1500, 3500, 4250, 5000 }, 500, 500), Colori.VIOLA); gruppoColori.put(Colori.VIOLA, new Integer(getNumeroDiTerreniPerColore(Colori.VIOLA) + 1)); } public static Tavola getInstance() { if (tavola == null) { tavola = new Tavola(); } return tavola; } /** * Restituisce il numero di terreni appartenenti al monopolio di un dato * colore (Ci serve perchè la chiave dell'hastable è un oggetto e no un int) * * @param colore * @return */ public Integer getNumeroDiTerreniPerColore(Colori colore) { return gruppoColori.get(colore); } public Casella getCasella(int cas) { return caselle[cas]; } public Casella getCasella(String nome) { for (int i = 0; i < caselle.length; i++) { Casella temp = (Casella) caselle[i]; if (temp.getNome().equals(nome)) { return temp; } } return null; } public int getNUM_CASELLE() { return NUM_CASELLE; } public Dado getDado(int i) { return dado[i - 1]; } public void stampa() { } }