update interface

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

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<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" />
</component>
</project>

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

@ -1,9 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ButtonBar?>
<?import javafx.scene.control.*?>
<?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 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"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ButtonBar?>
<?import javafx.scene.control.*?>
<?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 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 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("bleu"));
game.getPlateau().placerJoueursSurCaseInitiale(game.getMyAdminPlayer().getLesJoueurs());
return game;
}
}

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

@ -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.List;
@ -11,15 +13,15 @@ public class GestionnaireJoueur {
return this.lesJoueurs;
}
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) {
lesJoueurs.add(joueur);
}
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;
import java.util.ArrayList;
import java.util.List;
public class Case {
private int idCase;
private Joueur myJoueur = null;
private List<Joueur> myJoueur = new ArrayList<>();
public Case(int 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
public String toString() {
if(myJoueur){
if (this.myJoueur != null) {
return this.idCase + " " + this.myJoueur.toString() + "\n";
}
return this.idCase + " " + "\n";

@ -9,11 +9,15 @@ public abstract class De {
public De(int nbFaces) {
this.nbFaces = nbFaces;
}
public int getNbFaces() {
return nbFaces;
}
public int getValeur() {
return 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) {
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;
import java.util.ArrayList;
import java.util.List;
import managers.DeplaceurJoueur;
import managers.GestionnaireJoueur;
public class Jeu {
private Plateau myPlateau;
private De myDe;
private GestionnaireJoueur myAdminPlayer = new GestionnaireJoueur();
// private DeplaceurJoueur myMovePlayer = new DeplaceurJoueur();
private DeplaceurJoueur myMovePlayer = new DeplaceurJoueur();
public Jeu(int nbCases, int nbFaces) {
myPlateau = new Plateau(nbCases);
myDe = new DeSimple(nbFaces);
@ -19,24 +19,13 @@ public class Jeu {
public GestionnaireJoueur getMyAdminPlayer() {
return myAdminPlayer;
}
// public List<Joueur> getPionsList() {
// return this.pionsList;
// }
// public Joueur getCurrentPion() {
// return pionsList.get(currentPionId);
// }
// public Joueur changePion() {
// return pionsList.get(++currentPionId % pionsList.size());
// }
// 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);
// }
public DeplaceurJoueur getMyMovePlayer() {
return myMovePlayer;
}
public void lancerDes() {
Joueur joueurCourant = this.myAdminPlayer.getCurrentJoueur();
int resDe = this.myDe.lancer();
this.myMovePlayer.deplacerJoueur(joueurCourant, resDe, this.myPlateau);
this.myAdminPlayer.nextPlayer();
}
}

@ -1,22 +1,36 @@
package models;
public class Joueur {
private static int count = 0;
private int idJoueur;
private String color;
private Case myCase = null;
public Joueur(String myColor) {
this.idJoueur = ++count;
this.color = myColor;
}
public int getIdJoueur() {
return idJoueur;
}
public String getColor() {
return color;
}
public Case getMyCase() {
return this.myCase;
}
public void setMyCase(Case myCase) {
this.myCase = myCase;
}
@Override
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 {
private List<Case> CaseList = new ArrayList<>();
public Plateau(int nbCase) {
for(int i = 1; i <= nbCase; ++i) {
for(int i = 0; i <= nbCase; ++i) {
CaseList.add(new Case(i));
}
}
public List<Case> getCaseList() {
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
public String toString() {

@ -4,18 +4,43 @@ import data.Stub;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import models.Jeu;
import models.Joueur;
public class Fenetre {
// @FXML
// private BorderPane myBorderPane = new BorderPane();
// private final Jeu game = new Stub().loadPions();
// Joueur currentPion = game.getCurrentPion();
//
// public void initialize() {
// for(int i = 0; i < game.getPlateau().getCaseList().size(); i++) {
// myBorderPane.setCenter(new Button().setText("hello"));
// }
// }
@FXML
private BorderPane myBorderPane = new BorderPane();
@FXML
private VBox buttonContainer;
private final Jeu game = new Stub().loadPions();
Joueur currentPion = game.getMyAdminPlayer().getCurrentJoueur();
public void updateButtonLabels() {
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