Merge branch 'master' of https://gitarero.ecam.fr/noa.four/OOP_Group1B2_Project
This commit is contained in:
commit
e0cd23750e
|
|
@ -4,14 +4,17 @@ import java.util.ArrayList;
|
||||||
|
|
||||||
public class Board {
|
public class Board {
|
||||||
|
|
||||||
private int cNum;
|
private int cNum; // nb de colonnes du damier
|
||||||
private int lNum;
|
private int lNum; // nb de ligne du damier
|
||||||
private Piece newPiece;
|
private Piece[][] cells;
|
||||||
private Piece[][]Board;
|
private Piece selectedCell;
|
||||||
|
|
||||||
|
|
||||||
public Board(int colNum, int lineNum) {
|
public Board(int colNum, int lineNum) {
|
||||||
cNum=colNum;
|
cNum=colNum;
|
||||||
lNum=lineNum;
|
lNum=lineNum;
|
||||||
|
cells = new Piece[cNum][lNum]; // creation du tableau de pieces
|
||||||
|
selectedCell=null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getWidth() {
|
public int getWidth() {
|
||||||
|
|
@ -40,45 +43,64 @@ public class Board {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPiece(PieceType type, boolean isWhite, int x, int y) {
|
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() {
|
public void populateBoard() {
|
||||||
|
|
||||||
//Black pieces populating
|
final int startWhite = 0;
|
||||||
Board[1][1] = new Piece(1,1,PieceType.Rook,false);
|
final int startBlack = lNum-1;
|
||||||
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);
|
|
||||||
|
|
||||||
for (int x = 1; x < 8; x++) {
|
//Black pieces populating
|
||||||
Board[x][2] = new Piece(x,2,PieceType.Pawn,false);
|
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
|
//White pieces populating
|
||||||
Board[1][8] = new Piece(1,8,PieceType.Rook,true);
|
setPiece(PieceType.Rook,true,0,startBlack);
|
||||||
Board[2][8] = new Piece(2,8,PieceType.Knight,true);
|
setPiece(PieceType.Knight,true,1,startBlack);
|
||||||
Board[3][8] = new Piece(3,8,PieceType.Bishop,true);
|
setPiece(PieceType.Bishop,true,2,startBlack);
|
||||||
Board[4][8] = new Piece(4,8,PieceType.Queen,true);
|
setPiece(PieceType.Queen,true,3,startBlack);
|
||||||
Board[7][8] = new Piece(5,8,PieceType.King,true);
|
setPiece(PieceType.King,true,4,startBlack);
|
||||||
Board[6][8] = new Piece(6,8,PieceType.Bishop,true);
|
setPiece(PieceType.Bishop,true,5,startBlack);
|
||||||
Board[8][8] = new Piece(7,8,PieceType.Knight,true);
|
setPiece(PieceType.Knight,true,6,startBlack);
|
||||||
Board[9][8] = new Piece(8,8,PieceType.Rook,true);
|
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<lNum;y++) {
|
||||||
|
if (cells[x][y]==null) {
|
||||||
|
System.out.print("blank - ");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.print(cells[x][y].getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.print("\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void cleanBoard() {
|
public void cleanBoard() {
|
||||||
|
|
||||||
for (int y = 1; y < 7; y++) {
|
for (int y = 0; y < 8; y++) {
|
||||||
for (int x = 1; x < 7; x++) {
|
for (int x = 0; x < 8; x++) {
|
||||||
Board[x][y] = null;
|
cells[x][y] = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -91,10 +113,10 @@ public class Board {
|
||||||
public ArrayList<Piece> getPieces() {
|
public ArrayList<Piece> getPieces() {
|
||||||
ArrayList<Piece> pieces = new ArrayList<>();
|
ArrayList<Piece> pieces = new ArrayList<>();
|
||||||
|
|
||||||
for (int y = 1; y < 7; y++) {
|
for (int y = 0; y < 8; y++) {
|
||||||
for (int x = 1; x < 7; x++) {
|
for (int x = 0; x < 8; x++) {
|
||||||
if (Board[x][y] != null) {
|
if (cells[x][y]!= null) {
|
||||||
pieces.add(Board[x][y]);
|
pieces.add(cells[x][y]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -104,7 +126,65 @@ public class Board {
|
||||||
|
|
||||||
|
|
||||||
public void userTouch(int x, int y) {
|
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,10 @@ public class Game extends Thread {
|
||||||
public int getHeight() {
|
public int getHeight() {
|
||||||
return board.getHeight();
|
return board.getHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPiece(PieceType type, boolean isWhite, int x, int y) {
|
||||||
|
this.newPiece= new Piece(type,isWhite, x,y);
|
||||||
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
while(true) {
|
while(true) {
|
||||||
|
|
@ -65,10 +69,7 @@ public class Game extends Thread {
|
||||||
board.userTouch(x, y);
|
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() {
|
public String[] getFileRepresentation() {
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ public class Piece {
|
||||||
private PieceType type;
|
private PieceType type;
|
||||||
private boolean color;
|
private boolean color;
|
||||||
|
|
||||||
public Piece(int xP, int yP, PieceType type_P, boolean color_P) {
|
public Piece(PieceType type_P, boolean color_P, int xP, int yP) {
|
||||||
x = xP;
|
x = xP;
|
||||||
y = yP;
|
y = yP;
|
||||||
type = type_P;
|
type = type_P;
|
||||||
|
|
@ -29,5 +29,13 @@ public class Piece {
|
||||||
public boolean isWhite() {
|
public boolean isWhite() {
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
public String getName() {
|
||||||
|
if(color) {
|
||||||
|
return type.getSummary().concat("W - ");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return type.getSummary().concat("B - ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -61,7 +61,7 @@ public class JPanelChessBoard extends JPanel {
|
||||||
int y = (me.getY()*myGame.getHeight())/getHeight();
|
int y = (me.getY()*myGame.getHeight())/getHeight();
|
||||||
if(pieceAdderMode) {
|
if(pieceAdderMode) {
|
||||||
//TODO
|
//TODO
|
||||||
myGame.setPiece(selectedPieceIsWhite,selectedPieceType, x, y);
|
myGame.setPiece(selectedPieceType, selectedPieceIsWhite, x, y);
|
||||||
pieceAdderMode = false;
|
pieceAdderMode = false;
|
||||||
} else {
|
} else {
|
||||||
myGame.clickCoords(x,y);
|
myGame.clickCoords(x,y);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue