From 79ecbf217d23ca87856d77d95ea6e462177a3520 Mon Sep 17 00:00:00 2001 From: Alexandre ALTARIBA Date: Fri, 18 Apr 2025 17:15:34 +0200 Subject: [PATCH 1/5] remove set from game --- src/backend/Game.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/backend/Game.java b/src/backend/Game.java index 6e27d1c..040ba13 100644 --- a/src/backend/Game.java +++ b/src/backend/Game.java @@ -6,7 +6,6 @@ public class Game extends Thread { private AutoPlayer aiPlayer; private Board board; - private Piece newPiece; private MyInterface mjf; private int COL_NUM = 8; @@ -65,10 +64,7 @@ public class Game extends Thread { board.userTouch(x, y); } - } - - public void setPiece(boolean isWhite, PieceType type, int x, int y) { - this.newPiece = new Piece(x, y,type, isWhite); + } public String[] getFileRepresentation() { From cabf493202d985273b8f53045570bba6e86d0e56 Mon Sep 17 00:00:00 2001 From: Jerome ALTARIBA Date: Sun, 20 Apr 2025 12:18:09 +0200 Subject: [PATCH 2/5] setPiece in Game (important) --- src/backend/Game.java | 5 +++++ src/windowInterface/JPanelChessBoard.java | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/backend/Game.java b/src/backend/Game.java index 040ba13..436459e 100644 --- a/src/backend/Game.java +++ b/src/backend/Game.java @@ -6,6 +6,7 @@ public class Game extends Thread { private AutoPlayer aiPlayer; private Board board; + private Piece newPiece; private MyInterface mjf; private int COL_NUM = 8; @@ -30,6 +31,10 @@ public class Game extends Thread { public int getHeight() { return board.getHeight(); } + + public void setPiece(PieceType type, boolean isWhite, int x, int y) { + this.newPiece= new Piece(x,y,type,isWhite); + } public void run() { while(true) { diff --git a/src/windowInterface/JPanelChessBoard.java b/src/windowInterface/JPanelChessBoard.java index 78a68de..a50d762 100644 --- a/src/windowInterface/JPanelChessBoard.java +++ b/src/windowInterface/JPanelChessBoard.java @@ -61,7 +61,7 @@ public class JPanelChessBoard extends JPanel { int y = (me.getY()*myGame.getHeight())/getHeight(); if(pieceAdderMode) { //TODO - myGame.setPiece(selectedPieceIsWhite,selectedPieceType, x, y); + myGame.setPiece(selectedPieceType, selectedPieceIsWhite, x, y); pieceAdderMode = false; } else { myGame.clickCoords(x,y); From cd59243c0114e3e53477854d9c93085b682072a7 Mon Sep 17 00:00:00 2001 From: Alexandre ALTARIBA Date: Sun, 20 Apr 2025 18:53:35 +0200 Subject: [PATCH 3/5] populate board and cleaned the code (pieces exist but are not displayed) --- src/backend/Board.java | 77 ++++++++++++++++++++++++++---------------- src/backend/Game.java | 2 +- src/backend/Piece.java | 10 +++++- 3 files changed, 58 insertions(+), 31 deletions(-) diff --git a/src/backend/Board.java b/src/backend/Board.java index 098347c..453c1d7 100644 --- a/src/backend/Board.java +++ b/src/backend/Board.java @@ -4,14 +4,14 @@ import java.util.ArrayList; public class Board { - private int cNum; - private int lNum; - private Piece newPiece; - private Piece[][]Board; + private int cNum; // nb de colonnes du damier + private int lNum; // nb de ligne du damier + private Piece[][] cells; public Board(int colNum, int lineNum) { cNum=colNum; lNum=lineNum; + cells = new Piece[cNum][lNum]; // creation du tableau de pieces } public int getWidth() { @@ -40,37 +40,56 @@ public class Board { } public void setPiece(PieceType type, boolean isWhite, int x, int y) { - this.newPiece= new Piece(x,y,type,isWhite); + Piece newPiece= new Piece(type,isWhite,x,y); + + cells[x][y] = newPiece; } public void populateBoard() { - //Black pieces populating - Board[1][1] = new Piece(1,1,PieceType.Rook,false); - Board[2][1] = new Piece(2,1,PieceType.Knight,false); - Board[3][1] = new Piece(3,1,PieceType.Bishop,false); - Board[4][1] = new Piece(4,1,PieceType.Queen,false); - Board[7][1] = new Piece(5,1,PieceType.King,false); - Board[6][1] = new Piece(6,1,PieceType.Bishop,false); - Board[8][1] = new Piece(7,1,PieceType.Knight,false); - Board[9][1] = new Piece(8,1,PieceType.Rook,false); + final int startWhite = 0; + final int startBlack = lNum-1; - for (int x = 1; x < 8; x++) { - Board[x][2] = new Piece(x,2,PieceType.Pawn,false); + //Black pieces populating + setPiece(PieceType.Rook,false,0,startWhite); + setPiece(PieceType.Knight,false, 1,startWhite); + setPiece(PieceType.Bishop,false,2,startWhite); + setPiece(PieceType.Queen,false,3,startWhite); + setPiece(PieceType.King,false,4,startWhite); + setPiece(PieceType.Bishop,false,5,startWhite); + setPiece(PieceType.Knight,false,6,startWhite); + setPiece(PieceType.Rook,false,7,startWhite); + + for (int x = 0; x < cNum; x++) { + setPiece(PieceType.Pawn,false,x,startWhite+1); } //White pieces populating - Board[1][8] = new Piece(1,8,PieceType.Rook,true); - Board[2][8] = new Piece(2,8,PieceType.Knight,true); - Board[3][8] = new Piece(3,8,PieceType.Bishop,true); - Board[4][8] = new Piece(4,8,PieceType.Queen,true); - Board[7][8] = new Piece(5,8,PieceType.King,true); - Board[6][8] = new Piece(6,8,PieceType.Bishop,true); - Board[8][8] = new Piece(7,8,PieceType.Knight,true); - Board[9][8] = new Piece(8,8,PieceType.Rook,true); + setPiece(PieceType.Rook,true,0,startBlack); + setPiece(PieceType.Knight,true,1,startBlack); + setPiece(PieceType.Bishop,true,2,startBlack); + setPiece(PieceType.Queen,true,3,startBlack); + setPiece(PieceType.King,true,4,startBlack); + setPiece(PieceType.Bishop,true,5,startBlack); + setPiece(PieceType.Knight,true,6,startBlack); + setPiece(PieceType.Rook,true,7,startBlack); - for (int x = 1; x < 8; x++) { + for (int x = 0; x < cNum; x++) { - Board[x][7] = new Piece(x,7,PieceType.Pawn,true); + setPiece(PieceType.Pawn,true,x,startBlack-1); + } + + + for (int x = 0; x < cNum; x++) { + for(int y=0;y Date: Sun, 20 Apr 2025 20:46:03 +0200 Subject: [PATCH 4/5] pieces appear ! and addition of a small loop that show in the terminal all pieces and their place --- src/backend/Board.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/backend/Board.java b/src/backend/Board.java index 453c1d7..714a29f 100644 --- a/src/backend/Board.java +++ b/src/backend/Board.java @@ -110,9 +110,9 @@ public class Board { public ArrayList getPieces() { ArrayList pieces = new ArrayList<>(); - for (int y = 1; y < 7; y++) { - for (int x = 1; x < 7; x++) { - if (this.cNum==0 && this.lNum==0) { + for (int y = 0; y < 8; y++) { + for (int x = 0; x < 8; x++) { + if (cells[x][y]!= null) { pieces.add(cells[x][y]); } } From a81ad7881f362607fca7235f24a8cd5e40cfe40a Mon Sep 17 00:00:00 2001 From: Alexandre ALTARIBA Date: Thu, 24 Apr 2025 21:02:22 +0200 Subject: [PATCH 5/5] usertouch method works but there is a lot to add (not take if same color, impose the way of moving for each piece and set other same color pieces as obstacles.) --- src/backend/Board.java | 67 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 64 insertions(+), 3 deletions(-) diff --git a/src/backend/Board.java b/src/backend/Board.java index 714a29f..2b6bd11 100644 --- a/src/backend/Board.java +++ b/src/backend/Board.java @@ -7,11 +7,14 @@ public class Board { private int cNum; // nb de colonnes du damier private int lNum; // nb de ligne du damier private Piece[][] cells; + private Piece selectedCell; + public Board(int colNum, int lineNum) { cNum=colNum; lNum=lineNum; cells = new Piece[cNum][lNum]; // creation du tableau de pieces + selectedCell=null; } public int getWidth() { @@ -95,8 +98,8 @@ public class Board { public void cleanBoard() { - for (int y = 1; y < 7; y++) { - for (int x = 1; x < 7; x++) { + for (int y = 0; y < 8; y++) { + for (int x = 0; x < 8; x++) { cells[x][y] = null; } } @@ -123,7 +126,65 @@ public class Board { public void userTouch(int x, int y) { - //TODO + // on teste si une cellule est deja selectionne + if(this.selectedCell !=null) { + System.out.println(" cellule deja selectionne : " + this.selectedCell.getName()); + //la nouvelle case touchee est vide ? + if(cells[x][y] ==null) { + // je deplace la pièce selectionnee + //TODO VERIFIER SI LA COULEUR DE LA PIECE EXISTANTE EST DIFFERENTE DE CELLE DU JOUEUR + //TODO A REMPLACER PAR UNE FONCTION MOVE + cells[x][y] = new Piece( + this.selectedCell.getType(), + this.selectedCell.isWhite(), + x, + y + + ); + // je supprime la pièce selectionne pour liberer la case + cells[this.selectedCell.getX()][this.selectedCell.getY()] = null; + //je deselectionne la pièce + this.selectedCell=null; + + } else { + // je teste si la nouvelle case cochée est la meme que celle déjà coche + if(this.cells[x][y].getX()==this.selectedCell.getX() && this.cells[x][y].getY() == this.selectedCell.getY()) { + System.out.println("il a clique sur la meme cellule, je deselectionne" ); + this.selectedCell =null; + } else { + // je deplace la deplace pièce et remplace la pièce existante + //TODO A REMPLACER PAR UNE FONCTION MOVE + cells[x][y] = new Piece( + this.selectedCell.getType(), + this.selectedCell.isWhite(), + x, + y + + ); + // je supprime la pièce selectionne pour liberer la case + cells[this.selectedCell.getX()][this.selectedCell.getY()] = null; + //je deselectionne la pièce + this.selectedCell=null; + } + + } + + } else { + // aucune cellule deja selectionnée, + System.out.println("----- aucune cellule selectionnee" ); + + //a-t-il selectionné une pièce ? + // TODO il faut verifier que c'est une pièce du bon joueur (bonne couleur) + if(cells[x][y] !=null){ + //il a selectionné une pièce, elle devient is selected + this.selectedCell = this.cells[x][y]; + System.out.println("nouvelle cellule selectionne" + cells[x][y].getName()); + + } else { + //rien il a selectionne vide + System.out.println("il a clique sur cellule vide"); + } + } }