update interface

master
Antoine PEREDERII 1 year ago
parent 0ee865358b
commit 1d9fd9b5d7

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_18" default="true" project-jdk-name="18" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="18" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
</project> </project>

@ -8,6 +8,6 @@
</content> </content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="lib1" level="application" /> <orderEntry type="library" name="lib21" level="application" />
</component> </component>
</module> </module>

@ -1,9 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?> <?import javafx.scene.control.*?>
<?import javafx.scene.control.ButtonBar?> <?import javafx.scene.layout.*?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane fx:id="myBorderPane" style="-fx-background-color: #ecf0f1;" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="view.Fenetre">
</BorderPane> <BorderPane fx:id="myBorderPane" style="-fx-background-color: #ecf0f1;" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="view.Fenetre">
<center>
<VBox fx:id="buttonContainer" BorderPane.alignment="CENTER">
<!-- Les boutons seront ajoutés ici dynamiquement -->
<Button fx:id="rollDice" mnemonicParsing="false" onAction="#onButtonRollClicked" style="-fx-background-color: #2ecc71;" text="RollDice" alignment="CENTER" />
</VBox>
</center>
</BorderPane>

@ -1,9 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?> <?import javafx.scene.control.*?>
<?import javafx.scene.control.ButtonBar?> <?import javafx.scene.layout.*?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane fx:id="myBorderPane" style="-fx-background-color: #ecf0f1;" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="view.Fenetre">
</BorderPane> <BorderPane fx:id="myBorderPane" style="-fx-background-color: #ecf0f1;" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="view.Fenetre">
<center>
<VBox fx:id="buttonContainer" BorderPane.alignment="CENTER">
<!-- Les boutons seront ajoutés ici dynamiquement -->
<Button fx:id="rollDice" mnemonicParsing="false" onAction="#onButtonRollClicked" style="-fx-background-color: #2ecc71;" text="RollDice" alignment="CENTER" />
</VBox>
</center>
</BorderPane>

@ -6,9 +6,10 @@ import models.Plateau;
public class Stub { public class Stub {
public Jeu loadPions() { public Jeu loadPions() {
Jeu game = new Jeu(5, 6); Jeu game = new Jeu(6, 6);
game.getMyAdminPlayer().ajouterJoueur(new Joueur("rouge")); game.getMyAdminPlayer().ajouterJoueur(new Joueur("rouge"));
game.getMyAdminPlayer().ajouterJoueur(new Joueur("bleu")); game.getMyAdminPlayer().ajouterJoueur(new Joueur("bleu"));
game.getPlateau().placerJoueursSurCaseInitiale(game.getMyAdminPlayer().getLesJoueurs());
return game; return game;
} }
} }

@ -14,11 +14,12 @@ public class ConsoleGame {
System.out.println("Changement de Joueur"); System.out.println("Changement de Joueur");
currentPlayer = game.getMyAdminPlayer().nextPlayer(); currentPlayer = game.getMyAdminPlayer().nextPlayer();
System.out.println(currentPlayer.toString()); System.out.println(currentPlayer.toString());
game.getMyAdminPlayer().getCurrentJoueur().setMyCase(game.getPlateau().getCaseList().get(0)); System.out.println("Changement de Joueur");
currentPlayer = game.getMyAdminPlayer().nextPlayer();
System.out.println(currentPlayer.toString()); System.out.println(currentPlayer.toString());
game.lancerDes();
System.out.println(game.getPlateau().toString()); System.out.println(game.getPlateau().toString());
game.getMyAdminPlayer().getCurrentJoueur().setMyCase(game.getPlateau().getCaseList().get(0)); game.lancerDes();
System.out.println(currentPlayer.toString());
System.out.println(game.getPlateau().toString()); System.out.println(game.getPlateau().toString());
} }
} }

@ -15,4 +15,4 @@ public class GraphicGame extends Application {
primaryStage.setScene(new Scene(root, 700, 500)); primaryStage.setScene(new Scene(root, 700, 500));
primaryStage.show(); primaryStage.show();
} }
} }

@ -0,0 +1,44 @@
package managers;
import models.Case;
import models.Joueur;
import models.Plateau;
public class DeplaceurJoueur {
private boolean verifPresenceJoueur(Joueur currentJoueur, int valeurDe, Plateau plateau) {
int nextIndex = (currentJoueur.getMyCase().getIdCase() + valeurDe) % plateau.getCaseList().size();
Case caseSuivante = plateau.getCaseList().get(nextIndex);
return caseSuivante.getCurrentJoueur() != null;
}
private void alternerJoueurs(Joueur joueur1, Joueur joueur2) {
// Échanger les positions des joueurs
Case caseJoueur1 = joueur1.getMyCase();
Case caseJoueur2 = joueur2.getMyCase();
caseJoueur1.setCurrentJoueur(joueur2);
caseJoueur2.setCurrentJoueur(joueur1);
joueur1.setMyCase(caseJoueur2);
joueur2.setMyCase(caseJoueur1);
System.out.println("Échange de positions entre le joueur " + joueur1.getIdJoueur() + " et le joueur " + joueur2.getIdJoueur());
}
public void deplacerJoueur(Joueur currentJoueur, int nbCases, Plateau plateau) {
if (verifPresenceJoueur(currentJoueur, nbCases, plateau)) {
// La case suivante est occupée ou en dehors du plateau, alterner les joueurs ou prendre une action appropriée
alternerJoueurs(currentJoueur, currentJoueur);
} else {
int positionActuelle = currentJoueur.getMyCase().getIdCase();
int nouvellePosition = (positionActuelle + nbCases) % plateau.getCaseList().size();
Case caseSuivante = plateau.getCaseList().get(nouvellePosition);
currentJoueur.getMyCase().setCurrentJoueur(null);
caseSuivante.setCurrentJoueur(currentJoueur);
currentJoueur.setMyCase(caseSuivante);
System.out.println("Le joueur " + currentJoueur.getIdJoueur() + " se déplace sur la case " + caseSuivante.getIdCase());
}
}
}

@ -1,4 +1,6 @@
package models; package managers;
import models.Joueur;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -11,15 +13,15 @@ public class GestionnaireJoueur {
return this.lesJoueurs; return this.lesJoueurs;
} }
public Joueur getCurrentJoueur() { public Joueur getCurrentJoueur() {
return this.lesJoueurs.get(currentIdJoueur); return this.lesJoueurs.get(currentIdJoueur%lesJoueurs.size());
}
public Joueur getJoueurSuivant() {
return this.lesJoueurs.get((currentIdJoueur+1) % lesJoueurs.size());
} }
public void ajouterJoueur(Joueur joueur) { public void ajouterJoueur(Joueur joueur) {
lesJoueurs.add(joueur); lesJoueurs.add(joueur);
} }
public Joueur nextPlayer() { public Joueur nextPlayer() {
return lesJoueurs.get(++currentIdJoueur % lesJoueurs.size()); return lesJoueurs.get((++currentIdJoueur) % lesJoueurs.size());
} }
// public void next() {
// this.currentIdJoueur++;
// }
} }

@ -1,15 +1,41 @@
package models; package models;
import java.util.ArrayList;
import java.util.List;
public class Case { public class Case {
private int idCase; private int idCase;
private Joueur myJoueur = null; private List<Joueur> myJoueur = new ArrayList<>();
public Case(int idCase) { public Case(int idCase) {
this.idCase = idCase; this.idCase = idCase;
} }
public Joueur getCurrentJoueur() {
if (this.myJoueur.size() != 0) {
return this.myJoueur.get(0);
}
return null;
}
public void setCurrentJoueur(Joueur joueur) {
if(joueur != null) {
this.myJoueur.add(0, joueur);
} else {
this.myJoueur.remove(this.myJoueur.get(0));
}
}
public int getIdCase() {
return this.idCase;
}
public void addFirstJoueur(Joueur joueur) {
if(this.getIdCase() == 0) {
this.myJoueur.add(joueur);
} else {
throw new RuntimeException();
}
}
@Override @Override
public String toString() { public String toString() {
if(myJoueur){ if (this.myJoueur != null) {
return this.idCase + " " + this.myJoueur.toString() + "\n"; return this.idCase + " " + this.myJoueur.toString() + "\n";
} }
return this.idCase + " " + "\n"; return this.idCase + " " + "\n";

@ -9,11 +9,15 @@ public abstract class De {
public De(int nbFaces) { public De(int nbFaces) {
this.nbFaces = nbFaces; this.nbFaces = nbFaces;
} }
public int getNbFaces() {
return nbFaces;
}
public int getValeur() { public int getValeur() {
return valeur; return valeur;
} }
public void setValeur(int valeur) { public void setValeur(int valeur) {
this.valeur = RANDOM.nextInt(nbFaces) + 1; this.valeur = valeur;
} }
public abstract int lancer();
} }

@ -13,4 +13,7 @@ public class DeSimple extends De {
public void setValeur(int valeur) { public void setValeur(int valeur) {
super.setValeur(valeur); super.setValeur(valeur);
} }
public int lancer() {
return (RANDOM.nextInt(this.getNbFaces()) + 1);
}
} }

@ -1,17 +0,0 @@
//package models;
//
//public class DeplaceurJoueur {
// private boolean verifPresenceJoueur(Joueur currentJoueur, int valeurDe) {
// if((currentJoueur.getCurrentIdCase() + valeurDe )!= 0) {
// myPlateau.getCaseList().get(currentJoueur.getCurrentIdCase() - 1).setPresence(false);
// }
// return false;
// }
// private void alternerJoueurs(Joueur joueur1, Joueur joueur) {
//
// }
// public void avancerJoueur(Joueur currentJoueur, Plateau myPlateau) {
// currentJoueur.setCurrentIdCase();
// myPlateau.getCaseList().get(currentJoueur.getCurrentIdCase()-1).setPresence(true);
// }
//}

@ -1,13 +1,13 @@
package models; package models;
import java.util.ArrayList; import managers.DeplaceurJoueur;
import java.util.List; import managers.GestionnaireJoueur;
public class Jeu { public class Jeu {
private Plateau myPlateau; private Plateau myPlateau;
private De myDe; private De myDe;
private GestionnaireJoueur myAdminPlayer = new GestionnaireJoueur(); private GestionnaireJoueur myAdminPlayer = new GestionnaireJoueur();
// private DeplaceurJoueur myMovePlayer = new DeplaceurJoueur(); private DeplaceurJoueur myMovePlayer = new DeplaceurJoueur();
public Jeu(int nbCases, int nbFaces) { public Jeu(int nbCases, int nbFaces) {
myPlateau = new Plateau(nbCases); myPlateau = new Plateau(nbCases);
myDe = new DeSimple(nbFaces); myDe = new DeSimple(nbFaces);
@ -19,24 +19,13 @@ public class Jeu {
public GestionnaireJoueur getMyAdminPlayer() { public GestionnaireJoueur getMyAdminPlayer() {
return myAdminPlayer; return myAdminPlayer;
} }
// public List<Joueur> getPionsList() { public DeplaceurJoueur getMyMovePlayer() {
// return this.pionsList; return myMovePlayer;
// } }
// public Joueur getCurrentPion() { public void lancerDes() {
// return pionsList.get(currentPionId); Joueur joueurCourant = this.myAdminPlayer.getCurrentJoueur();
// } int resDe = this.myDe.lancer();
// public Joueur changePion() { this.myMovePlayer.deplacerJoueur(joueurCourant, resDe, this.myPlateau);
// return pionsList.get(++currentPionId % pionsList.size()); this.myAdminPlayer.nextPlayer();
// } }
// public void avancerPion() {
// Joueur currentPion = pionsList.get(currentPionId);
// if(currentPion.getCurrentIdCase() != 0) {
// this.myPlateau.getCaseList().get(currentPion.getCurrentIdCase() - 1).setPresence(false);
// }
// currentPion.setCurrentIdCase();
// this.myPlateau.getCaseList().get(currentPion.getCurrentIdCase()-1).setPresence(true);
// }
// public void addPion(Joueur pion) {
// pionsList.add(pion);
// }
} }

@ -1,22 +1,36 @@
package models; package models;
public class Joueur { public class Joueur {
private static int count = 0;
private int idJoueur;
private String color; private String color;
private Case myCase = null; private Case myCase = null;
public Joueur(String myColor) { public Joueur(String myColor) {
this.idJoueur = ++count;
this.color = myColor; this.color = myColor;
} }
public int getIdJoueur() {
return idJoueur;
}
public String getColor() { public String getColor() {
return color; return color;
} }
public Case getMyCase() { public Case getMyCase() {
return this.myCase; return this.myCase;
} }
public void setMyCase(Case myCase) { public void setMyCase(Case myCase) {
this.myCase = myCase; this.myCase = myCase;
} }
@Override @Override
public String toString() { public String toString() {
return "Je suis le Joueur de couleur " + this.color + " et je suis sur la case " + this.myCase.getClass(); return "Je suis le Joueur " + idJoueur + " de couleur " + this.color + " et je suis sur la case " + this.myCase.getIdCase();
} }
} }

@ -6,13 +6,22 @@ import java.util.List;
public class Plateau { public class Plateau {
private List<Case> CaseList = new ArrayList<>(); private List<Case> CaseList = new ArrayList<>();
public Plateau(int nbCase) { public Plateau(int nbCase) {
for(int i = 1; i <= nbCase; ++i) { for(int i = 0; i <= nbCase; ++i) {
CaseList.add(new Case(i)); CaseList.add(new Case(i));
} }
} }
public List<Case> getCaseList() { public List<Case> getCaseList() {
return this.CaseList; return this.CaseList;
} }
public void placerJoueursSurCaseInitiale(List<Joueur> joueurs) {
for (Joueur joueur : joueurs) {
Case caseInitiale = getCaseList().get(0);
joueur.setMyCase(caseInitiale);
if (caseInitiale != null) {
caseInitiale.addFirstJoueur(joueur);
}
}
}
@Override @Override
public String toString() { public String toString() {

@ -4,18 +4,43 @@ import data.Stub;
import javafx.fxml.FXML; import javafx.fxml.FXML;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane; import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import models.Jeu; import models.Jeu;
import models.Joueur; import models.Joueur;
public class Fenetre { public class Fenetre {
// @FXML @FXML
// private BorderPane myBorderPane = new BorderPane(); private BorderPane myBorderPane = new BorderPane();
// private final Jeu game = new Stub().loadPions(); @FXML
// Joueur currentPion = game.getCurrentPion(); private VBox buttonContainer;
// private final Jeu game = new Stub().loadPions();
// public void initialize() { Joueur currentPion = game.getMyAdminPlayer().getCurrentJoueur();
// for(int i = 0; i < game.getPlateau().getCaseList().size(); i++) { public void updateButtonLabels() {
// myBorderPane.setCenter(new Button().setText("hello")); for (int i = 0; i < game.getPlateau().getCaseList().size(); i++) {
// } Button button = (Button) buttonContainer.getChildren().get(i);
// }
if (game.getPlateau().getCaseList().get(i).getCurrentJoueur() != null) {
button.setText("Case " + (i + 1) + "\n" + "Joueur: " + game.getPlateau().getCaseList().get(i).getCurrentJoueur().getIdJoueur());
} else {
button.setText("Case " + (i + 1));
}
}
}
@FXML
private void onButtonRollClicked() {
game.lancerDes();
updateButtonLabels();
}
public void initialize() {
for (int i = 0; i < game.getPlateau().getCaseList().size(); i++) {
Button button = new Button();
if (game.getPlateau().getCaseList().get(i).getCurrentJoueur() != null) {
button.setText("Case " + i + "\n" + "Joueur: " + game.getPlateau().getCaseList().get(i).getCurrentJoueur().getIdJoueur());
} else {
button.setText("Case " + i);
}
buttonContainer.getChildren().add(button);
}
}
} }

Loading…
Cancel
Save