package modele; import modele.piece.Piece; import modele.joueur.*; import java.util.List; import java.awt.Point; import java.util.ArrayList; public class Partie{ private Plateau plateau; private int nombreCoups; public ModeDeJeu modeDeJeu; private Joueur joueurBlanc; private Joueur joueurNoir; private Joueur joueurActif; private List historique; private List listeCapturesBlancs; private List listeCapturesNoires; public Partie(Joueur joueurBlanc, Joueur joueurNoir) { plateau = new Plateau(); nombreCoups = 0; historique = new ArrayList<>(); listeCapturesBlancs = new ArrayList<>(); listeCapturesNoires = new ArrayList<>(); this.joueurBlanc = joueurBlanc; this.joueurNoir = joueurNoir; this.joueurActif = joueurBlanc; } public void jouerTour() { // Logique pour jouer un tour Coup coup = joueurActif.jouerCoup(plateau); Piece piece = plateau.getCase((int)coup.getOrigine().getX(), (int)coup.getOrigine().getY()).getPiece(); // System.out.println(""); // System.out.println("Origine du coup : " + coup.getOrigine()); // System.out.println("Destination du coup : " + coup.getDestination()); // System.out.println("Contenu de la case d'origine : " + plateau.getCase(coup.getOrigine()).getPiece().getSymbole()); if(piece == null) { throw new IllegalArgumentException("Aucune pièce à la position d'origine."); } if(piece.getCouleur() != joueurActif.getCouleur()) { throw new IllegalArgumentException("Ce n'est pas votre pièce."); } if(!piece.estDeplacementValide(coup, plateau)) { System.out.println("ICI"); throw new IllegalArgumentException("Déplacement invalide."); } // System.out.println("sortie dans partie"); // Verifie si une capture a lieu Point dest = coup.getDestination(); Case caseDestination = plateau.getCase((int) dest.getX(), (int) dest.getY()); if(caseDestination.getPiece() != null) { Piece pieceCapturee = caseDestination.getPiece(); if(pieceCapturee.getCouleur() == joueurActif.getCouleur()) { throw new IllegalArgumentException("Vous ne pouvez pas capturer votre propre pièce."); } // Ajouter la pièce capturée à la liste des captures if(pieceCapturee.getCouleur() == Couleur.BLANC) { listeCapturesBlancs.add(pieceCapturee); } else { listeCapturesNoires.add(pieceCapturee); } } // Déplacer la pièce plateau.deplacer(coup); // Ajouter le coup à l'historique ajouterCoup(coup); // Changer de joueur changerJoueur(); } public boolean estFini() { // Logique pour vérifier si la partie est terminée return false; } public void changerJoueur() { // Logique pour changer le joueur courant // Par exemple, si le joueur courant est blanc, le changer en noir et vice versa if (joueurActif == joueurBlanc) { joueurActif = joueurNoir; } else { joueurActif = joueurBlanc; } } public void ajouterCoup(Coup coup) { // Ajouter le coup à l'historique historique.add(coup); nombreCoups++; } public Joueur getJoueurActif() { return joueurActif; } public List getCapturesParBlanc() { return listeCapturesBlancs; } public List getCapturesParNoir() { return listeCapturesNoires; } public List getHistorique() { return historique; } public int getNombreCoups() { return nombreCoups; } public Plateau getPlateau() { return plateau; } public Joueur getJoueurBlanc() { return joueurBlanc; } public Joueur getJoueurNoir() { return joueurNoir; } }