Implementation of 2D mode
This commit is contained in:
66
app/src/main/java/chess/view/render2D/Window.java
Normal file
66
app/src/main/java/chess/view/render2D/Window.java
Normal 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user