Implementation of 2D mode

This commit is contained in:
Janet-Doe
2025-03-24 11:17:32 +01:00
parent faa92d09de
commit d720e16de0
13 changed files with 94 additions and 17 deletions

View File

@@ -0,0 +1,66 @@
package chess.view.render2D;
import chess.model.Model2D;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Observable;
import java.util.Observer;
public class Window extends JFrame implements Observer {
private final Model2D model;
private final JLabel[][] tab = new JLabel[8][8];
public Window(Model2D model) {
System.out.println("New window has been created.");
this.model = model;
}
public static void main(String[] args){
new Window(new Model2D()).build();
}
/**
* Create a playing grid with alternating black & white grids
*/
private void build(){
JPanel jp = new JPanel(new GridLayout(8,8));
setContentPane(jp);
setTitle("Let's play chess!");
for (int y = 0; y < 8; y++){
for (int x = 0; x < 8; x++){
JLabel jl = new JLabel();
jl.setOpaque(true);
if (((y+x)%2)!=0) {
jl.setBackground(Color.BLACK);
}
final int yy = y;
final int xx = x;
jl.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
System.out.println("(" + xx + ";" + yy + ")");
model.set(xx, yy);
update();
}
});
this.tab[x][y]=jl;
jp.add(jl);
}
}
setSize(800,800);
setVisible(true);
}
public void update() {
tab[model.x][model.y].setBackground(Color.RED);
}
@Override
public void update(Observable o, Object arg) {
System.out.println("ok");
update();
}
}