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

@@ -17,7 +17,7 @@ repositories {
} }
def lwjgl_version = "3.3.6" def lwjgl_version = "3.3.6"
def lwjgl_natives = "natives-linux" def lwjgl_natives = "natives-windows"
dependencies { dependencies {
// Use JUnit Jupiter for testing. // Use JUnit Jupiter for testing.

View File

@@ -3,7 +3,7 @@
*/ */
package chess; package chess;
import chess.render.*; import chess.view.render2D.Window;
public class App { public class App {
public String getGreeting() { public String getGreeting() {
@@ -11,6 +11,6 @@ public class App {
} }
public static void main(String[] args) { public static void main(String[] args) {
new Window().run(); Window.main(args);
} }
} }

View File

@@ -0,0 +1,15 @@
package chess.model;
import java.util.Observable;
public class Model2D extends Observable {
public int x;
public int y;
public void set(int i, int j){
this.x = i;
this.y = j;
setChanged();
notifyObservers();
}
}

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();
}
}

View File

@@ -1,4 +1,4 @@
package chess.render; package chess.view.render3D;
import org.joml.Matrix4f; import org.joml.Matrix4f;
import org.joml.Vector3f; import org.joml.Vector3f;

View File

@@ -1,4 +1,4 @@
package chess.render; package chess.view.render3D;
import org.lwjgl.opengl.GL30; import org.lwjgl.opengl.GL30;

View File

@@ -1,10 +1,10 @@
package chess.render; package chess.view.render3D;
import org.joml.Vector3f; import org.joml.Vector3f;
import org.lwjgl.opengl.*; import org.lwjgl.opengl.*;
import static org.lwjgl.opengl.GL30.*; import static org.lwjgl.opengl.GL30.*;
import chess.render.shader.BoardShader; import chess.view.render3D.shader.BoardShader;
public class Renderer { public class Renderer {
private BoardShader shader; private BoardShader shader;

View File

@@ -1,4 +1,4 @@
package chess.render; package chess.view.render3D;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -1,4 +1,4 @@
package chess.render; package chess.view.render3D;
public class VertexAttribPointer { public class VertexAttribPointer {
public int index; public int index;

View File

@@ -1,8 +1,7 @@
package chess.render; package chess.view.render3D;
import static org.lwjgl.opengl.GL11.GL_FLOAT; import static org.lwjgl.opengl.GL11.GL_FLOAT;
import java.nio.FloatBuffer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@@ -1,13 +1,10 @@
package chess.render; package chess.view.render3D;
import org.lwjgl.*; import org.lwjgl.*;
import org.lwjgl.glfw.*; import org.lwjgl.glfw.*;
import org.lwjgl.opengl.*; import org.lwjgl.opengl.*;
import org.lwjgl.system.*; import org.lwjgl.system.*;
import chess.render.Camera;
import chess.render.Renderer;
import java.nio.*; import java.nio.*;
import static org.lwjgl.glfw.Callbacks.*; import static org.lwjgl.glfw.Callbacks.*;

View File

@@ -1,4 +1,4 @@
package chess.render.shader; package chess.view.render3D.shader;
import org.joml.Matrix4f; import org.joml.Matrix4f;

View File

@@ -1,4 +1,4 @@
package chess.render.shader; package chess.view.render3D.shader;
import java.nio.FloatBuffer; import java.nio.FloatBuffer;
import java.nio.IntBuffer; import java.nio.IntBuffer;