Nummerierungen des Spielfeldes nun sichtbar

devShowFieldNumbers
Matias Mas Viehl 2025-06-24 16:38:52 +02:00
parent 82a10a46fc
commit 2a7d7dd16b
1 changed files with 109 additions and 59 deletions

View File

@ -31,6 +31,7 @@ import javax.swing.JPanel;
import javax.swing.JScrollPane; import javax.swing.JScrollPane;
import javax.swing.JSplitPane; import javax.swing.JSplitPane;
import javax.swing.JTextArea; import javax.swing.JTextArea;
import javax.swing.SwingConstants;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Color; import java.awt.Color;
@ -145,26 +146,34 @@ public class SpielFrame extends JFrame {
int leerfelder = Character.getNumericValue(fen[j]); int leerfelder = Character.getNumericValue(fen[j]);
for (int k = 0; k < leerfelder; k++) { for (int k = 0; k < leerfelder; k++) {
int idx; int idx;
if(game.isRotieren()) idx = wechsel ? mirrowedGrid(i) : i; if (game.isRotieren())
else idx = i; idx = wechsel ? mirrowedGrid(i) : i;
else
idx = i;
belegungen.put(buttons.get(idx), "n-n"); belegungen.put(buttons.get(idx), "n-n");
i++; i++;
} }
continue; continue;
} else if (fen[j] >= 65 && fen[j] <= 90) { // Großbuchstabe = weiß } else if (fen[j] >= 65 && fen[j] <= 90) { // Großbuchstabe = weiß
int idx; int idx;
if(game.isRotieren()) idx = wechsel ? mirrowedGrid(i) : i; if (game.isRotieren())
else idx = i; idx = wechsel ? mirrowedGrid(i) : i;
else
idx = i;
belegungen.put(buttons.get(idx), "w-" + fen[j]); belegungen.put(buttons.get(idx), "w-" + fen[j]);
} else if (fen[j] >= 97 && fen[j] <= 122) { // Kleinbuchstabe = schwarz } else if (fen[j] >= 97 && fen[j] <= 122) { // Kleinbuchstabe = schwarz
int idx; int idx;
if(game.isRotieren()) idx = wechsel ? mirrowedGrid(i) : i; if (game.isRotieren())
else idx = i; idx = wechsel ? mirrowedGrid(i) : i;
else
idx = i;
belegungen.put(buttons.get(idx), "b-" + fen[j]); belegungen.put(buttons.get(idx), "b-" + fen[j]);
} }
int idx; int idx;
if(game.isRotieren()) idx = wechsel ? mirrowedGrid(i) : i; if (game.isRotieren())
else idx = i; idx = wechsel ? mirrowedGrid(i) : i;
else
idx = i;
buttons.get(idx).setIcon(new ImageIcon("src/main/resources/" + (int) fen[j] + ".png")); buttons.get(idx).setIcon(new ImageIcon("src/main/resources/" + (int) fen[j] + ".png"));
buttons.get(idx).setDisabledIcon(new ImageIcon("src/main/resources/" + (int) fen[j] + ".png")); buttons.get(idx).setDisabledIcon(new ImageIcon("src/main/resources/" + (int) fen[j] + ".png"));
i++; i++;
@ -187,7 +196,7 @@ public class SpielFrame extends JFrame {
// style // style
b.setFocusPainted(false); b.setFocusPainted(false);
b.setFont(new Font("Arial", Font.PLAIN, 30)); b.setFont(new Font("Arial", Font.PLAIN, 20));
b.setForeground(Color.WHITE); b.setForeground(Color.WHITE);
b.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1)); b.setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
b.setName(i + ""); b.setName(i + "");
@ -201,79 +210,120 @@ public class SpielFrame extends JFrame {
* Sets the default background color for the buttons in the grid. * Sets the default background color for the buttons in the grid.
*/ */
private void setDefaultBackground() { private void setDefaultBackground() {
int counter = 8;
for (int i = 0; i < 64; i++) { for (int i = 0; i < 64; i++) {
JButton b = buttons.get(i); JButton b = buttons.get(i);
if ((i / 8 + i % 8) % 2 == 0) { if ((i / 8 + i % 8) % 2 == 0) {
// logger.info("Helles Feld erstellt." + i); // logger.info("Helles Feld erstellt." + i);
b.setBackground(new Color(90, 90, 90)); b.setBackground(new Color(90, 90, 90));
} else { } else {
// logger.info("Dunkles Feld erstellt." + i); // logger.info("Dunkles Feld erstellt." + i);
b.setBackground(new Color(65, 65, 65)); b.setBackground(new Color(65, 65, 65));
} }
if(i % 8 == 0) {
b.setHorizontalAlignment(SwingConstants.CENTER);
b.setVerticalAlignment(SwingConstants.CENTER);
b.setHorizontalTextPosition(SwingConstants.RIGHT); // Text rechts vom Icon
b.setVerticalTextPosition(SwingConstants.BOTTOM);
b.setIconTextGap(5);
b.setText(String.valueOf(counter)+b.getText());
counter--;
}
} }
char buchstabe = 'a';
for(int j=0;j<8;j++) {
JButton button = buttons.get(mirrowedGrid(j));
button.setHorizontalAlignment(SwingConstants.CENTER);
button.setVerticalAlignment(SwingConstants.CENTER);
button.setHorizontalTextPosition(SwingConstants.RIGHT); // Text rechts vom Icon
button.setVerticalTextPosition(SwingConstants.BOTTOM);
button.setIconTextGap(5);
button.setText(String.valueOf(buchstabe));
buchstabe++;
}
} }
/* /*
* Switches the button actions depending on the boardmode * Switches the button actions depending on the boardmode
*/ */
public void setButtonsActions() { public void setButtonsActions() {
List<Square> selectables; List<Square> selectables;
switch (this.mode) { switch (this.mode) {
case normal: case normal:
selectables = game.getAllLegalMoveableSquares(); selectables = game.getAllLegalMoveableSquares();
for (Square square : selectables) { for (Square square : selectables) {
int idx; int idx;
if(game.isRotieren()) idx = wechsel ? square.ordinal() : mirrowedGrid(square.ordinal()); if (game.isRotieren())
else idx = this.mirrowedGrid(square.ordinal()); idx = wechsel ? square.ordinal() : mirrowedGrid(square.ordinal());
else
idx = this.mirrowedGrid(square.ordinal());
JButton b = buttons.get(idx); JButton b = buttons.get(idx);
b.setEnabled(true); b.setEnabled(true);
b.addActionListener(new ButtonSelectPieceListener(this, square)); b.addActionListener(new ButtonSelectPieceListener(this, square));
} }
break; break;
case pieceSelected: case pieceSelected:
int idxSelected; int idxSelected;
if(game.isRotieren())idxSelected = wechsel ? selectedSquare.ordinal() : mirrowedGrid(selectedSquare.ordinal()); if (game.isRotieren())
else idxSelected = mirrowedGrid(selectedSquare.ordinal()); idxSelected = wechsel ? selectedSquare.ordinal() : mirrowedGrid(selectedSquare.ordinal());
else
idxSelected = mirrowedGrid(selectedSquare.ordinal());
JButton s = buttons.get(idxSelected); JButton s = buttons.get(idxSelected);
s.setEnabled(true); s.setEnabled(true);
s.setBackground(new Color(165, 42, 42)); s.setBackground(new Color(165, 42, 42));
s.addActionListener(new ButtonToNormalListener(this)); s.addActionListener(new ButtonToNormalListener(this));
selectables = game.getLegalMoveableSquares(selectedSquare); selectables = game.getLegalMoveableSquares(selectedSquare);
for (Square square : selectables) { for (Square square : selectables) {
int idx; int idx;
if(game.isRotieren()) idx = wechsel ? square.ordinal() : mirrowedGrid(square.ordinal()); if (game.isRotieren())
else idx = mirrowedGrid(square.ordinal()); idx = wechsel ? square.ordinal() : mirrowedGrid(square.ordinal());
final Move move = new Move(selectedSquare, square); else
JButton b = buttons.get(idx); idx = mirrowedGrid(square.ordinal());
b.setEnabled(true); final Move move = new Move(selectedSquare, square);
b.setBackground(new Color(230, 100, 100)); JButton b = buttons.get(idx);
b.addActionListener(new ButtonMovePieceListener(this, this.game, move)); b.setEnabled(true);
} b.setBackground(new Color(230, 100, 100));
break; b.addActionListener(new ButtonMovePieceListener(this, this.game, move));
}
break;
case finished: case finished:
clearButtons(); clearButtons();
break; break;
case gameEnd: case gameEnd:
panelLinks.setEnabled(false); panelLinks.setEnabled(false);
panelRechts.setEnabled(false); panelRechts.setEnabled(false);
break; break;
default: default:
break; break;
} }
for (JButton b : buttons) { for (JButton b : buttons) {
panelLinks.add(b); panelLinks.add(b);
} }
} }
public void showWin(int player) { public void showWin(int player) {