Refactoring
- Simplified FEN-string generation - Made GameConfigurationDialog a utility class
This commit is contained in:
parent
18e708d285
commit
bd523018f7
@ -480,38 +480,17 @@ public class Board implements Cloneable {
|
|||||||
// Piece placement (from white's perspective)
|
// Piece placement (from white's perspective)
|
||||||
for (int i = 0; i < 8; i++) {
|
for (int i = 0; i < 8; i++) {
|
||||||
int emptyCount = 0;
|
int emptyCount = 0;
|
||||||
for (int j = 0; j < 8; j++)
|
for (int j = 0; j < 8; j++) {
|
||||||
if (boardArr[j][i] == null) ++emptyCount;
|
final Piece piece = boardArr[j][i];
|
||||||
|
if (piece == null) ++emptyCount;
|
||||||
else {
|
else {
|
||||||
if (emptyCount != 0) {
|
if (emptyCount != 0) {
|
||||||
sb.append(emptyCount);
|
sb.append(emptyCount);
|
||||||
emptyCount = 0;
|
emptyCount = 0;
|
||||||
}
|
}
|
||||||
char piece;
|
char p = boardArr[j][i].getType().firstChar();
|
||||||
switch (boardArr[j][i].getType()) {
|
sb.append(piece.getColor() == Color.WHITE ? Character.toUpperCase(p) : p);
|
||||||
case KING:
|
|
||||||
piece = 'K';
|
|
||||||
break;
|
|
||||||
case QUEEN:
|
|
||||||
piece = 'Q';
|
|
||||||
break;
|
|
||||||
case ROOK:
|
|
||||||
piece = 'R';
|
|
||||||
break;
|
|
||||||
case KNIGHT:
|
|
||||||
piece = 'N';
|
|
||||||
break;
|
|
||||||
case BISHOP:
|
|
||||||
piece = 'B';
|
|
||||||
break;
|
|
||||||
case PAWN:
|
|
||||||
piece = 'P';
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
piece = '-';
|
|
||||||
}
|
}
|
||||||
if (boardArr[j][i].getColor() == Color.BLACK) piece = Character.toLowerCase(piece);
|
|
||||||
sb.append(piece);
|
|
||||||
}
|
}
|
||||||
if (emptyCount != 0) sb.append(emptyCount);
|
if (emptyCount != 0) sb.append(emptyCount);
|
||||||
if (i < 7) sb.append('/');
|
if (i < 7) sb.append('/');
|
||||||
|
@ -85,7 +85,14 @@ public abstract class Piece implements Cloneable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static enum Type {
|
public static enum Type {
|
||||||
KING, QUEEN, ROOK, KNIGHT, BISHOP, PAWN
|
KING, QUEEN, ROOK, KNIGHT, BISHOP, PAWN;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The first character of this {@link Type} in algebraic notation and lower case
|
||||||
|
*/
|
||||||
|
public char firstChar() {
|
||||||
|
return this == KNIGHT ? 'n' : Character.toLowerCase(this.toString().charAt(0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static enum Color {
|
public static enum Color {
|
||||||
|
@ -36,7 +36,7 @@ public class FENDropTarget extends DropTargetAdapter {
|
|||||||
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
|
try (BufferedReader br = new BufferedReader(new FileReader(file))) {
|
||||||
final GamePane gamePane = mainWindow.addGamePane();
|
final GamePane gamePane = mainWindow.addGamePane();
|
||||||
final String fen = br.readLine();
|
final String fen = br.readLine();
|
||||||
new GameConfigurationDialog((whiteName, blackName) -> {
|
GameConfigurationDialog.show((whiteName, blackName) -> {
|
||||||
final Game game = new Game(gamePane.getBoardPane(), whiteName, blackName, fen);
|
final Game game = new Game(gamePane.getBoardPane(), whiteName, blackName, fen);
|
||||||
gamePane.setGame(game);
|
gamePane.setGame(game);
|
||||||
game.start();
|
game.start();
|
||||||
|
@ -4,6 +4,7 @@ import java.awt.Font;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
import javax.swing.DefaultComboBoxModel;
|
import javax.swing.DefaultComboBoxModel;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
@ -17,14 +18,16 @@ import javax.swing.JLabel;
|
|||||||
* Created: <strong>24.07.2019</strong><br>
|
* Created: <strong>24.07.2019</strong><br>
|
||||||
* Author: <strong>Kai S. K. Engelbart</strong>
|
* Author: <strong>Kai S. K. Engelbart</strong>
|
||||||
*/
|
*/
|
||||||
public class GameConfigurationDialog extends JDialog {
|
public class GameConfigurationDialog {
|
||||||
|
|
||||||
private static final long serialVersionUID = 9080577278529876972L;
|
private GameConfigurationDialog() {}
|
||||||
|
|
||||||
/**
|
public static void show(BiConsumer<String, String> action) {
|
||||||
* Create the dialog.
|
new JDialog() {
|
||||||
*/
|
|
||||||
public GameConfigurationDialog(ActionWithConfiguration action) {
|
private static final long serialVersionUID = -5768339760489440385L;
|
||||||
|
|
||||||
|
{
|
||||||
setTitle("Game Configuration");
|
setTitle("Game Configuration");
|
||||||
setBounds(100, 100, 281, 142);
|
setBounds(100, 100, 281, 142);
|
||||||
setModal(true);
|
setModal(true);
|
||||||
@ -57,7 +60,7 @@ public class GameConfigurationDialog extends JDialog {
|
|||||||
JButton btnStart = new JButton("Start");
|
JButton btnStart = new JButton("Start");
|
||||||
btnStart.addActionListener((evt) -> {
|
btnStart.addActionListener((evt) -> {
|
||||||
dispose();
|
dispose();
|
||||||
action.onConfigurationSet(options.get(cbWhite.getSelectedIndex()), options.get(cbBlack.getSelectedIndex()));
|
action.accept(options.get(cbWhite.getSelectedIndex()), options.get(cbBlack.getSelectedIndex()));
|
||||||
});
|
});
|
||||||
btnStart.setBounds(20, 73, 89, 23);
|
btnStart.setBounds(20, 73, 89, 23);
|
||||||
getContentPane().add(btnStart);
|
getContentPane().add(btnStart);
|
||||||
@ -67,11 +70,7 @@ public class GameConfigurationDialog extends JDialog {
|
|||||||
btnCancel.setBounds(157, 73, 89, 23);
|
btnCancel.setBounds(157, 73, 89, 23);
|
||||||
getContentPane().add(btnCancel);
|
getContentPane().add(btnCancel);
|
||||||
|
|
||||||
setVisible(true);
|
|
||||||
}
|
}
|
||||||
|
}.setVisible(true);
|
||||||
public static interface ActionWithConfiguration {
|
|
||||||
|
|
||||||
void onConfigurationSet(String whiteName, String blackName);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ public class MenuBar extends JMenuBar {
|
|||||||
JMenu gameMenu = new JMenu("Game");
|
JMenu gameMenu = new JMenu("Game");
|
||||||
JMenuItem newGameMenuItem = new JMenuItem("New Game");
|
JMenuItem newGameMenuItem = new JMenuItem("New Game");
|
||||||
newGameMenuItem.addActionListener((evt) -> {
|
newGameMenuItem.addActionListener((evt) -> {
|
||||||
new GameConfigurationDialog((whiteName, blackName) -> {
|
GameConfigurationDialog.show((whiteName, blackName) -> {
|
||||||
GamePane gamePane = mainWindow.addGamePane();
|
GamePane gamePane = mainWindow.addGamePane();
|
||||||
Game game = new Game(gamePane.getBoardPane(), whiteName, blackName);
|
Game game = new Game(gamePane.getBoardPane(), whiteName, blackName);
|
||||||
gamePane.setGame(game);
|
gamePane.setGame(game);
|
||||||
@ -80,7 +80,7 @@ public class MenuBar extends JMenuBar {
|
|||||||
loadFromFENMenuItem.addActionListener((evt) -> {
|
loadFromFENMenuItem.addActionListener((evt) -> {
|
||||||
final GamePane gamePane = mainWindow.addGamePane();
|
final GamePane gamePane = mainWindow.addGamePane();
|
||||||
final String fen = JOptionPane.showInputDialog("Enter a FEN string: ");
|
final String fen = JOptionPane.showInputDialog("Enter a FEN string: ");
|
||||||
new GameConfigurationDialog((whiteName, blackName) -> {
|
GameConfigurationDialog.show((whiteName, blackName) -> {
|
||||||
final Game game = new Game(gamePane.getBoardPane(), whiteName, blackName, fen);
|
final Game game = new Game(gamePane.getBoardPane(), whiteName, blackName, fen);
|
||||||
gamePane.setGame(game);
|
gamePane.setGame(game);
|
||||||
game.start();
|
game.start();
|
||||||
|
@ -19,11 +19,9 @@ import dev.kske.chess.board.Piece;
|
|||||||
*/
|
*/
|
||||||
public class TextureUtil {
|
public class TextureUtil {
|
||||||
|
|
||||||
private static Map<String, Image> textures, scaledTextures;
|
private static Map<String, Image> textures = new HashMap<>(), scaledTextures = new HashMap<>();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
textures = new HashMap<>();
|
|
||||||
scaledTextures = new HashMap<>();
|
|
||||||
loadPieceTextures();
|
loadPieceTextures();
|
||||||
scaledTextures.putAll(textures);
|
scaledTextures.putAll(textures);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user