La classe ici presente permet d'afficher un echiquier ainsi que de gerer les clique de souris et le deplacements des pieces.
Ma question est: doit-elle être au niveau du serveur, au niveau du client ou alors couper avec une partie en serveur et l'autre sur le client?
L'objectif étant de pouvoir avoir le même echiquier sur 2 clients differents.
J'ai bien essayer de transferer d'un client a l autre le tableau tabEchiquier qui permet la gestion des positions des pièces sur l'echiquier
mais le problème est que la mise à jour ne se fait pas.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Plateau extends JPanel implements MouseListener, MouseMotionListener{
private JeuEchec jeu;
private Graphics g;
private ImageIcon imIcon;
private Image im;
private Pieces p;
private Pieces [][] tabEchiquier;
private Dimension dimFenetre;
private int longPlt;
private int largPlt;
private int piece;
private int valueX, valueY;
private int lngCase;
private int lrgCase;
private String obj;
private MouseEvent evt;
private int initX, initY;
private int passTour;
//Constructeur de la classe Plateau
public Plateau(JeuEchec j){
super();
setVisible(true);
repaint();
this.jeu = j;
tabEchiquier = new Pieces[8][8];
//this.InitPlateau();
this.addMouseListener(this);
passTour = 1;//Forcer le joueur blanc à jouer en premier
}
//Initialisation du plateau
public void InitPlateau(){
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
tabEchiquier[i][j]=null;
}
}
passTour=1;
//Pieces(coordX,coordY,couleur, plateau)
tabEchiquier[0][0]=new Tour(0,0,1,this);
tabEchiquier[1][0]=new Cavalier(1,0,1,this);
tabEchiquier[2][0]=new Fou(2,0,1,this);
tabEchiquier[3][0]=new Reine(3,0,1,this);
tabEchiquier[4][0]=new Roi(4,0,1,this);
tabEchiquier[5][0]=new Fou(5,0,1,this);
tabEchiquier[6][0]=new Cavalier(6,0,1,this);
tabEchiquier[7][0]=new Tour(7,0,1,this);
tabEchiquier[0][1]=new Pion(0,1,1,this);
tabEchiquier[1][1]=new Pion(1,1,1,this);
tabEchiquier[2][1]=new Pion(2,1,1,this);
tabEchiquier[3][1]=new Pion(3,1,1,this);
tabEchiquier[4][1]=new Pion(4,1,1,this);
tabEchiquier[5][1]=new Pion(5,1,1,this);
tabEchiquier[6][1]=new Pion(6,1,1,this);
tabEchiquier[7][1]=new Pion(7,1,1,this);
tabEchiquier[0][6]=new Pion(0,6,2,this);
tabEchiquier[1][6]=new Pion(1,6,2,this);
tabEchiquier[2][6]=new Pion(2,6,2,this);
tabEchiquier[3][6]=new Pion(3,6,2,this);
tabEchiquier[4][6]=new Pion(4,6,2,this);
tabEchiquier[5][6]=new Pion(5,6,2,this);
tabEchiquier[6][6]=new Pion(6,6,2,this);
tabEchiquier[7][6]=new Pion(7,6,2,this);
tabEchiquier[0][7]=new Tour(0,7,2,this);
tabEchiquier[1][7]=new Cavalier(1,7,2,this);
tabEchiquier[2][7]=new Fou(2,7,2,this);
tabEchiquier[3][7]=new Roi(3,7,2,this);
tabEchiquier[4][7]=new Reine(4,7,2,this);
tabEchiquier[5][7]=new Fou(5,7,2,this);
tabEchiquier[6][7]=new Cavalier(6,7,2,this);
tabEchiquier[7][7]=new Tour(7,7,2,this);
}
public Pieces[][] getTabEchiquier(){
return tabEchiquier;
}
public void setTabEchiquier(Pieces tabEchiq[][]){
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
tabEchiquier[i][j] = tabEchiq[i][j];
}
}
}
public int getPassTour(){
System.out.println("verif getPasstour: "+passTour);
return passTour;
}
public void mouseExited(MouseEvent e){
}
public void mouseClicked(MouseEvent e){
}
public void mouseEntered(MouseEvent e){
}
public void mouseMoved(MouseEvent e){
}
public void mouseDragged(MouseEvent e){
}
public void mousePressed(MouseEvent e){
int x;
int y;
x = e.getX()/lrgCase;
y = e.getY()/lngCase;
System.out.println("Bonjour" + " "+ x + " " + y + " " + piece);
this.valueX = x;
this.valueY = y;
if(x<8 && y<8){
p = tabEchiquier[x][y];
tabEchiquier[x][y]=null;
initX = x;
initY = y;
}else{
p=null;
}
}
//Action de la souris
public void mouseReleased(MouseEvent e){
int x;
int y;
x = e.getX()/lrgCase;
y = e.getY()/lngCase;
System.out.println("Terminer" + " "+ x + " " + y + " " + piece);
if(x<8 && x>=0 && y<8 && y>=0){
p.setFin(x,y);
if(p.deplacer()==true){
tabEchiquier[x][y] = p;
p.setInit(x,y);
if(passTour==1){
passTour=2;
}else{
passTour=1;
}
System.out.println("Valeur du tour "+passTour);
}else{
tabEchiquier[valueX][valueY]=p;
}
repaint();
}else{
System.out.println("Vous etes con ou quoi de mettre la piece en dehors de l echiquier" );
tabEchiquier[initX][initY]=p;
}
}
//Affichage du plateau
public void paint(Graphics g){
int longCase;
int largCase;
int longEch;
int largEch;
super.paint(g);
dimFenetre = getSize();
largEch = dimFenetre.height;
longEch = dimFenetre.width;
largEch = largEch-largEch/15;
longEch = longEch-longEch/15;
largPlt = largEch;
longPlt = longEch;
largCase = largEch/8;
longCase = longEch/8;
lrgCase = largCase;
lngCase = longCase;
CaseEchec [][] c = new CaseEchec[8][8];
for(int i=0; i<8; i++){
for(int j=0; j<8; j++){
if(i%2 == 0){
if(j%2 == 0){
c[i][j] = new CaseEchec(i*largCase, j*longCase,largCase,longCase, 0, this);
c[i][j].paint(g);
}else{
c[i][j] = new CaseEchec(i*largCase, j*longCase, largCase, longCase,1, this);
c[i][j].paint(g);
}
}else{
if(j%2 == 0){
c[i][j] = new CaseEchec(i*largCase, j*longCase, largCase, longCase, 1, this);
c[i][j].paint(g);
}else{
c[i][j] = new CaseEchec(i*largCase, j*longCase, largCase, longCase, 0, this);
c[i][j].paint(g);
}
}repaint();
}
}
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
if(tabEchiquier[i][j]!=null){
im = tabEchiquier[i][j].iPiece;
g.drawImage(im,i*largCase,j*longCase,largCase,longCase,this);
}
repaint();
}
}
}
}