Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions change.it.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module version="4">
<component name="AdditionalModuleElements">
<content url="file://$MODULE_DIR$/core" dumb="true">
<sourceFolder url="file://$MODULE_DIR$/core/src/main/java" isTestSource="false" />
</content>
</component>
</module>
65 changes: 5 additions & 60 deletions core/src/main/java/Runner.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package core.src.main.java;

import core.src.main.java.service.implementazione.*;
import core.src.main.java.service.*;
import core.src.main.java.datamodel.*;
import service.implementazione.*;
import service.*;
import datamodel.*;

import java.io.FileInputStream;
import java.io.IOException;
Expand All @@ -15,62 +13,9 @@
public class Runner {

public static void main(String[] args) {
//inizializzo gioco
System.out.println("Benvenuto nel Gioco dell'Oca!");
int numeroFacce = CommandLineSingleton.getInstance().readIntegerUntilPossibleValue(new Integer[]{6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20});
Dado dado = new Dado(numeroFacce);

int numeroGiocatori = CommandLineSingleton.getInstance().readIntegerUntilPossibleValue(new Integer[]{2, 3, 4, 5, 6});
List<Giocatore> giocatori = new ArrayList<>();
for (int i = 0; i < numeroGiocatori; i++) {
String nome = CommandLineSingleton.getInstance().readString("Inserisci il nome del giocatore " + (i + 1));
giocatori.add(new Giocatore(nome));
}

//creo tabellone
System.out.println("Inserici il numero delle caselle");
Properties properties = new Properties();
Integer[] opzioniCaselle = {40, 60, 80}; // Default

try (FileInputStream fis = new FileInputStream("config.properties")) {
properties.load(fis);
String[] opzioni = properties.getProperty("opzioniCaselle", "40,60,80").split(",");
opzioniCaselle = new Integer[opzioni.length];
for (int i = 0; i < opzioni.length; i++) {
opzioniCaselle[i] = Integer.parseInt(opzioni[i].trim());
}
} catch (IOException | NumberFormatException e) {
System.out.println("Errore nel caricamento delle opzioni. Uso valori di default: 40, 60, 80.");
}

int numeroCaselle = CommandLineSingleton.getInstance().readIntegerUntilPossibleValue(opzioniCaselle);
Tabellone tabellone = new Tabellone(numeroCaselle);
//creo istanza gioco
Gioco gioco = new Gioco(numeroGiocatori, numeroCaselle, numeroFacce);
//creo gioco
boolean partitaInCorso = true;
while (partitaInCorso) {
for (Giocatore giocatore : giocatori) {
if (!partitaInCorso) break;
System.out.println("\nTurno di " + giocatore.getNome());
int tiro = dado.lancia();
System.out.println(giocatore.getNome() + " ha tirato un " + tiro);

int nuovaPosizione = giocatore.getPosizione() + tiro;
if (nuovaPosizione == tabellone.getNumeroCaselle()) {
System.out.println(giocatore.getNome() + " ha vinto la partita!");
partitaInCorso = false;
break;
} else if (nuovaPosizione > tabellone.getNumeroCaselle()) {
int posizioneInEccesso = nuovaPosizione - tabellone.getNumeroCaselle();
nuovaPosizione -= posizioneInEccesso;
}
giocatore.setPosizione(nuovaPosizione);
tabellone.getCasella(nuovaPosizione).attivaEffetto(giocatore, gioco);

}
}
System.out.println("Partita terminata!");
Tabellone tabellone = TabelloneFactory.creaTabellone(100);
new TabelloneImplementazione(tabellone).printTabellone();

}
}
56 changes: 7 additions & 49 deletions core/src/main/java/datamodel/Casella.java
Original file line number Diff line number Diff line change
@@ -1,52 +1,10 @@
package datamodel;
/**
* Classe astratta che rappresenta una casella del tabellone
* ha semplicemente un metodo astratto che restituisce una stringa
* che serve per stampare il tabellone.
*/

public abstract class Casella {

public Casella(int posizione) {
this.posizione = posizione;
}

//Ogni casella ha un codice che la identifica e
// che viene usato per la stampa a video.
abstract String getCodice();
private Tabellone tabellone;
private int numeroCasella = tabellone.getNumeroCaselle();
private int posizione;
private boolean casellaSpeciale = false;

public int getNumeroCasella() {
return numeroCasella;
}
public void setNumeroCasella(int numeroCasella) {
this.numeroCasella = numeroCasella;
}

public Casella(int posizione, Tabellone tabellone, boolean casellaSpeciale) {
this.posizione = posizione;
this.tabellone = tabellone;
this.numeroCasella = tabellone.getNumeroCaselle();
this.casellaSpeciale = false;
}
public Casella(boolean casellaSpeciale) {
this.casellaSpeciale = casellaSpeciale;
}
public int getPosizione() {
return posizione;
}

public int getNumeroCaselle() {
return numeroCasella;
}

public void attivaEffetto(Giocatore giocatore, Gioco gioco) {
// Metodo da sovrascrivere nelle sottoclassi speciali
}
public boolean isCasellaSpeciale() {
return casellaSpeciale;
}
public void setCasellaSpeciale(boolean casellaSpeciale) {
this.casellaSpeciale = casellaSpeciale;
}


} //int numero, metodo attivaEffetto(Giocatore giocatore)
public abstract String toString();
}
26 changes: 26 additions & 0 deletions core/src/main/java/datamodel/CasellaFinale.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package datamodel;

/**
* Classe che rappresenta una casella finale.
* Questa classe fa uso del singleton pattern(lazy) perche'
* la casella finale e' unica.
*/
public class CasellaFinale extends Casella{

//istanza unica della casella finale
private static CasellaFinale instance = null;

//costruttore privato per evitare che venga creata piu' di una casella finale
private CasellaFinale(){}

public static CasellaFinale getInstance() {
if (instance == null)
instance = new CasellaFinale();
return instance;
}

@Override
public String toString() {
return "\uD83C\uDFC1 ";
}
}
5 changes: 3 additions & 2 deletions core/src/main/java/datamodel/CasellaLabirinto.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package datamodel;

public class CasellaLabirinto extends CasellaSpeciale{
@Override
public void attivaEffetto(Giocatore giocatore, Gioco gioco) {

@Override
public String toString() {
return "\uD83D\uDD19";
}
}
4 changes: 4 additions & 0 deletions core/src/main/java/datamodel/CasellaLocanda.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@

public class CasellaLocanda extends CasellaSpeciale{

@Override
public String toString() {
return "\uD83C\uDF7A";
}
}
4 changes: 4 additions & 0 deletions core/src/main/java/datamodel/CasellaMorra.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
package datamodel;
public class CasellaMorra extends CasellaSpeciale{

@Override
public String toString() {
return "\uD83E\uDEA8";
}
}
11 changes: 4 additions & 7 deletions core/src/main/java/datamodel/CasellaNormale.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package datamodel;

public class CasellaNormale extends Casella {
public CasellaNormale(int posizione) {
super(posizione);
}
@Override
public void effetto(Giocatore giocatore){
System.out.println(giocatore.getNome() + " è finito sulla casella "+giocatore.getPosizione());

}

@Override
public String toString() {
return "\uD83D\uDD32"; // 3 spazi rappresentano una casella normale
}
}
4 changes: 4 additions & 0 deletions core/src/main/java/datamodel/CasellaOca.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@

public class CasellaOca extends CasellaSpeciale{

@Override
public String toString() {
return "\uD83E\uDDA2";
}
}
4 changes: 4 additions & 0 deletions core/src/main/java/datamodel/CasellaPonte.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@

public class CasellaPonte extends CasellaSpeciale {

@Override
public String toString() {
return "⏩";
}
}
39 changes: 3 additions & 36 deletions core/src/main/java/datamodel/CasellaPrigione.java
Original file line number Diff line number Diff line change
@@ -1,41 +1,8 @@
package datamodel;
import datamodel.*;
public class CasellaPrigione extends CasellaSpeciale{
private Giocatore prigioniero;
public CasellaPrigione(int posizione) {
super(posizione);
this.prigioniero = null;
}

public CasellaPrigione() {
super(prigioniero);
}

public void attivaEffetto(Giocatore giocatore, Gioco gioco) {
if (prigioniero == null) {
System.out.println(giocatore.getNome() + " è finito in prigione! Attendi che qualcuno ti liberi.");
prigioniero = giocatore;
giocatore.setTurnoSaltato(true);
giocatore.setInPrigione(true);
} else { //se c'è gia un prigioniero
System.out.println(giocatore.getNome() + " arriva in prigione e libera " + prigioniero.getNome() + "!");
prigioniero.setTurnoSaltato(false);
prigioniero.setInPrigione(false);
prigioniero = giocatore;
giocatore.setTurnoSaltato(true);
giocatore.setInPrigione(true);
}
}
public boolean haPrigioniero(){
return prigioniero != null;
}
public Giocatore getPrigioniero() {
return prigioniero;
}
public void setPrigioniero(Giocatore prigioniero) {
this.prigioniero = prigioniero;
}
public String getCodice() {

@Override
public String toString() {
return "\uD83D\uDE94";
}
}
6 changes: 6 additions & 0 deletions core/src/main/java/datamodel/CasellaScheletro.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
package datamodel;


public class CasellaScheletro extends CasellaSpeciale{

@Override
public String toString() {
return "\uD83D\uDC80";
}
}
8 changes: 1 addition & 7 deletions core/src/main/java/datamodel/CasellaSpeciale.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
package datamodel;

public abstract class CasellaSpeciale extends Casella {
boolean casellaSpeciale = true;
public CasellaSpeciale(boolean casellaSpeciale) {
super(casellaSpeciale);
}
public abstract void attivaEffetto(Giocatore giocatore, Gioco gioco);{
//override nelle sottoclassi
}

}
4 changes: 4 additions & 0 deletions core/src/main/java/datamodel/CasellaTris.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,8 @@

public class CasellaTris extends CasellaSpeciale{

@Override
public String toString() {
return "✖\uFE0F";
}
}
3 changes: 2 additions & 1 deletion core/src/main/java/datamodel/Computer.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/*
package datamodel;

public class Computer extends Giocatore {
Expand All @@ -8,4 +9,4 @@ public Computer(String nome) {
@Override
public boolean isComputer() { return true; }

} //aggiungi metodo scegli mossa auto
} //aggiungi metodo scegli mossa auto*/
3 changes: 2 additions & 1 deletion core/src/main/java/datamodel/Giocatore.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/*
package datamodel;
import datamodel.*;
import java.io.Serializable; //per salvare lo stato su tutti i file
Expand Down Expand Up @@ -80,4 +81,4 @@ public boolean isComputer(){
return isComputer;
}

}
}*/
2 changes: 2 additions & 0 deletions core/src/main/java/datamodel/Gioco.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/*
package datamodel;

import java.io.FileOutputStream;
Expand Down Expand Up @@ -113,3 +114,4 @@ public void muoviGiocatore (Giocatore giocatore, Gioco gioco) {

}
}
*/
3 changes: 2 additions & 1 deletion core/src/main/java/datamodel/Mossa.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/*
package datamodel;

import java.io.Serializable;
Expand Down Expand Up @@ -80,4 +81,4 @@ public String toString() {
rigaArrivo, colonnaArrivo, "ninete");
}

}
}*/
Loading