Mauscursor als Spielfigur und kleinere Dinge

devGameUi
Matias 2025-06-11 18:18:59 +02:00
parent d470b84703
commit b4a826ae31
1 changed files with 96 additions and 34 deletions

View File

@ -18,8 +18,15 @@ import javax.swing.JPanel;
import javax.swing.JSplitPane; import javax.swing.JSplitPane;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Color; import java.awt.Color;
import java.awt.Cursor;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.awt.GridLayout; import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Point;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SpielFrame extends JFrame { public class SpielFrame extends JFrame {
@ -28,8 +35,10 @@ public class SpielFrame extends JFrame {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private JPanel contentPane; private JPanel contentPane;
private ArrayList<JButton> buttons = new ArrayList<>(); private ArrayList<JButton> buttons = new ArrayList<>();
private HashMap<JButton, String> belegungen = new HashMap<>();
private JPanel panelLinks, panelRechts; private JPanel panelLinks, panelRechts;
private Game game; private Game game;
private String symbolChoosed;
/** /**
* Launch the application. * Launch the application.
@ -54,7 +63,7 @@ public class SpielFrame extends JFrame {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 1920, 1080); setBounds(100, 100, 1920, 1080);
setTitle("Spiel"); setTitle("Schach");
setAlwaysOnTop(true); setAlwaysOnTop(true);
JPanel contentPane = new JPanel(); JPanel contentPane = new JPanel();
@ -96,28 +105,81 @@ public class SpielFrame extends JFrame {
b.setForeground(Color.WHITE); b.setForeground(Color.WHITE);
b.setBorderPainted(false); b.setBorderPainted(false);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//wenn gerade Figur ausgewählt wird...
JButton clickedButton = (JButton) e.getSource();
symbolChoosed = belegungen.get(clickedButton);
//System.out.println(symbolChoosed+" wurde gewählt.");
//setzt cursor auf spielfigur für die animation
String pfad = "src/main/resources/" + (int) symbolChoosed.toCharArray()[2] + ".png";
// Bild laden und Cursor im gesamten Frame setzen
Image image = Toolkit.getDefaultToolkit().getImage(pfad);
Image scaled = image.getScaledInstance(32, 32, Image.SCALE_SMOOTH);
Cursor figurCursor = Toolkit.getDefaultToolkit().createCustomCursor(scaled, new Point(0, 0), "figurCursor");
//wenn richtiger spieler dran:
setCursor(figurCursor);
//Button Icon zurücksetzen
//Buttonposition merken (in MoveListe oder so)
//wenn Button platzierd werden soll...
//neuen Button in Moveliste eintragen
//Icon ändern
//Modus auf auswählen setzen und spielerwechsel markieren
}
});
panelLinks.add(b); panelLinks.add(b);
buttons.add(b); buttons.add(b);
} }
game = new Game(); game = new Game();
ladeBrett(); ladeBrett();
} }
/**
* holt sich FEN-Zeichenkette und extrahiert daraus die Positionen der Figuren
*/
public void ladeBrett() { public void ladeBrett() {
System.out.println(game.toFEN()); //System.out.println(game.toFEN());
char[] fen = game.toFEN().replaceAll("/", "").split(" ")[0].toCharArray(); char[] fen = game.toFEN().replaceAll("/", "").split(" ")[0].toCharArray();
int i = 0; int i = 0;
for (int j = 0; j < fen.length; j++) { for (int j = 0; j < fen.length; j++) {
if (Character.isDigit(fen[j])) { if (Character.isDigit(fen[j])) {
i += Character.getNumericValue(fen[j]); i += Character.getNumericValue(fen[j]);
belegungen.put(buttons.get(i),"n-n"); //n steht fuer ein leeres Feld
continue; continue;
} }
if(fen[j] >= 65 && fen[j] <= 90) { //ein Großbuchstabe
belegungen.put(buttons.get(i), "w-"+fen[j]);
}else if(fen[j] >= 97 && fen[j] <= 122) { //ein Kleinbuchstabe
belegungen.put(buttons.get(i), "b-"+fen[j]);
}
buttons.get(i).setIcon(new ImageIcon("src/main/resources/" + (int) fen[j] + ".png")); buttons.get(i).setIcon(new ImageIcon("src/main/resources/" + (int) fen[j] + ".png"));
//System.out.println(fen[j]);
i++; i++;
}
}
} }
//System.out.println(belegungen.toString());
}
}