mirror of
https://github.com/peterosterlund2/droidfish.git
synced 2025-12-11 00:22:41 +01:00
Convert project to Android Studio.
This commit is contained in:
437
CuckooChess/src/main/java/gui/AppletGUI.java
Normal file
437
CuckooChess/src/main/java/gui/AppletGUI.java
Normal file
@@ -0,0 +1,437 @@
|
||||
/*
|
||||
CuckooChess - A java chess program.
|
||||
Copyright (C) 2011 Peter Österlund, peterosterlund2@gmail.com
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package gui;
|
||||
|
||||
import guibase.ChessController;
|
||||
import guibase.GUIInterface;
|
||||
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import chess.ComputerPlayer;
|
||||
import chess.Move;
|
||||
import chess.Position;
|
||||
|
||||
/** The main class for the chess GUI. */
|
||||
public class AppletGUI extends javax.swing.JApplet implements GUIInterface {
|
||||
private static final long serialVersionUID = 7357610346389734323L;
|
||||
ChessBoardPainter cbp;
|
||||
ChessController ctrl;
|
||||
final static int ttLogSize = 19; // Use 2^19 hash entries.
|
||||
String moveListStr = "";
|
||||
String thinkingStr = "";
|
||||
|
||||
/** Initializes the applet AppletGUI */
|
||||
@Override
|
||||
public void init() {
|
||||
ctrl = new ChessController(this);
|
||||
try {
|
||||
java.awt.EventQueue.invokeAndWait(new Runnable() {
|
||||
public void run() {
|
||||
initComponents();
|
||||
cbp = (ChessBoardPainter)ChessBoard;
|
||||
ctrl.newGame(PlayerWhite.isSelected(), ttLogSize, true);
|
||||
ctrl.startGame();
|
||||
}
|
||||
});
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Entry point for the GUI version of the chess program.
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
javax.swing.JApplet theApplet = new AppletGUI();
|
||||
theApplet.init();
|
||||
javax.swing.JFrame window = new javax.swing.JFrame(ComputerPlayer.engineName);
|
||||
window.setContentPane(theApplet);
|
||||
window.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
|
||||
window.pack();
|
||||
window.setVisible(true);
|
||||
}
|
||||
|
||||
/** This method is called from within the init() method to
|
||||
* initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is
|
||||
* always regenerated by the Form Editor.
|
||||
*/
|
||||
private void initComponents() {
|
||||
|
||||
PlayerColor = new javax.swing.ButtonGroup();
|
||||
MainPanel = new javax.swing.JPanel();
|
||||
ChessBoardPanel = new javax.swing.JPanel();
|
||||
ChessBoard = new ChessBoardPainter();
|
||||
jPanel1 = new javax.swing.JPanel();
|
||||
NewGame = new javax.swing.JButton();
|
||||
SettingsPanel = new javax.swing.JPanel();
|
||||
PlayerWhite = new javax.swing.JRadioButton();
|
||||
PlayerBlack = new javax.swing.JRadioButton();
|
||||
TimeLabel = new javax.swing.JLabel();
|
||||
TimeSlider = new javax.swing.JSlider();
|
||||
ShowThinking = new javax.swing.JCheckBox();
|
||||
FlipBoard = new javax.swing.JCheckBox();
|
||||
jScrollPane1 = new javax.swing.JScrollPane();
|
||||
LogTextArea = new javax.swing.JTextPane();
|
||||
StatusLine = new javax.swing.JTextField();
|
||||
Forward = new javax.swing.JButton();
|
||||
Backward = new javax.swing.JButton();
|
||||
|
||||
ChessBoardPanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
|
||||
ChessBoardPanel.setPreferredSize(new java.awt.Dimension(500, 500));
|
||||
|
||||
ChessBoard.addMouseListener(new java.awt.event.MouseAdapter() {
|
||||
public void mousePressed(java.awt.event.MouseEvent evt) {
|
||||
ChessBoardMousePressed(evt);
|
||||
}
|
||||
public void mouseReleased(java.awt.event.MouseEvent evt) {
|
||||
ChessBoardMouseReleased(evt);
|
||||
}
|
||||
});
|
||||
ChessBoard.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
|
||||
public void mouseDragged(java.awt.event.MouseEvent evt) {
|
||||
ChessBoardMouseDragged(evt);
|
||||
}
|
||||
});
|
||||
|
||||
javax.swing.GroupLayout ChessBoardPanelLayout = new javax.swing.GroupLayout(ChessBoardPanel);
|
||||
ChessBoardPanel.setLayout(ChessBoardPanelLayout);
|
||||
ChessBoardPanelLayout.setHorizontalGroup(
|
||||
ChessBoardPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(ChessBoard, javax.swing.GroupLayout.DEFAULT_SIZE, 500, Short.MAX_VALUE)
|
||||
);
|
||||
ChessBoardPanelLayout.setVerticalGroup(
|
||||
ChessBoardPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(ChessBoard, javax.swing.GroupLayout.DEFAULT_SIZE, 500, Short.MAX_VALUE)
|
||||
);
|
||||
|
||||
jPanel1.setFocusable(false);
|
||||
|
||||
NewGame.setText("New Game");
|
||||
NewGame.setFocusable(false);
|
||||
NewGame.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
NewGameActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
SettingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Settings"));
|
||||
SettingsPanel.setFocusable(false);
|
||||
|
||||
PlayerColor.add(PlayerWhite);
|
||||
PlayerWhite.setSelected(true);
|
||||
PlayerWhite.setText("Play White");
|
||||
PlayerWhite.setFocusable(false);
|
||||
|
||||
PlayerColor.add(PlayerBlack);
|
||||
PlayerBlack.setText("Play Black");
|
||||
PlayerBlack.setFocusable(false);
|
||||
|
||||
TimeLabel.setText("Thinking Time");
|
||||
|
||||
TimeSlider.setMajorTickSpacing(15);
|
||||
TimeSlider.setMaximum(60);
|
||||
TimeSlider.setMinorTickSpacing(5);
|
||||
TimeSlider.setPaintLabels(true);
|
||||
TimeSlider.setPaintTicks(true);
|
||||
TimeSlider.setValue(5);
|
||||
TimeSlider.setFocusable(false);
|
||||
TimeSlider.addChangeListener(new javax.swing.event.ChangeListener() {
|
||||
public void stateChanged(javax.swing.event.ChangeEvent evt) {
|
||||
TimeSliderStateChanged(evt);
|
||||
}
|
||||
});
|
||||
|
||||
ShowThinking.setText("Show Thinking");
|
||||
ShowThinking.setFocusable(false);
|
||||
ShowThinking.addChangeListener(new javax.swing.event.ChangeListener() {
|
||||
public void stateChanged(javax.swing.event.ChangeEvent evt) {
|
||||
ShowThinkingStateChanged(evt);
|
||||
}
|
||||
});
|
||||
|
||||
FlipBoard.setText("Flip Board");
|
||||
FlipBoard.setFocusable(false);
|
||||
FlipBoard.addChangeListener(new javax.swing.event.ChangeListener() {
|
||||
public void stateChanged(javax.swing.event.ChangeEvent evt) {
|
||||
FlipBoardStateChanged(evt);
|
||||
}
|
||||
});
|
||||
|
||||
javax.swing.GroupLayout SettingsPanelLayout = new javax.swing.GroupLayout(SettingsPanel);
|
||||
SettingsPanel.setLayout(SettingsPanelLayout);
|
||||
SettingsPanelLayout.setHorizontalGroup(
|
||||
SettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(ShowThinking, javax.swing.GroupLayout.PREFERRED_SIZE, 157, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGroup(SettingsPanelLayout.createSequentialGroup()
|
||||
.addComponent(PlayerWhite)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 104, Short.MAX_VALUE)
|
||||
.addComponent(FlipBoard)
|
||||
.addContainerGap())
|
||||
.addGroup(SettingsPanelLayout.createSequentialGroup()
|
||||
.addComponent(TimeLabel)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(TimeSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addComponent(PlayerBlack)
|
||||
);
|
||||
SettingsPanelLayout.setVerticalGroup(
|
||||
SettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(SettingsPanelLayout.createSequentialGroup()
|
||||
.addGroup(SettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(PlayerWhite)
|
||||
.addComponent(FlipBoard))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(PlayerBlack)
|
||||
.addGap(18, 18, 18)
|
||||
.addGroup(SettingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(TimeLabel)
|
||||
.addComponent(TimeSlider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(ShowThinking)
|
||||
.addContainerGap())
|
||||
);
|
||||
|
||||
LogTextArea.setEditable(false);
|
||||
LogTextArea.setVerifyInputWhenFocusTarget(false);
|
||||
jScrollPane1.setViewportView(LogTextArea);
|
||||
|
||||
StatusLine.setEditable(false);
|
||||
StatusLine.setFocusable(false);
|
||||
|
||||
Forward.setText("->");
|
||||
Forward.setDefaultCapable(false);
|
||||
Forward.setFocusPainted(false);
|
||||
Forward.setFocusable(false);
|
||||
Forward.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
ForwardActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
Backward.setText("<-");
|
||||
Backward.setDefaultCapable(false);
|
||||
Backward.setFocusPainted(false);
|
||||
Backward.setFocusable(false);
|
||||
Backward.addActionListener(new java.awt.event.ActionListener() {
|
||||
public void actionPerformed(java.awt.event.ActionEvent evt) {
|
||||
BackwardActionPerformed(evt);
|
||||
}
|
||||
});
|
||||
|
||||
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
|
||||
jPanel1.setLayout(jPanel1Layout);
|
||||
jPanel1Layout.setHorizontalGroup(
|
||||
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(jPanel1Layout.createSequentialGroup()
|
||||
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 319, Short.MAX_VALUE)
|
||||
.addComponent(StatusLine, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 319, Short.MAX_VALUE)
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
|
||||
.addGroup(jPanel1Layout.createSequentialGroup()
|
||||
.addComponent(NewGame)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(Backward)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(Forward))
|
||||
.addComponent(SettingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
|
||||
.addContainerGap())
|
||||
);
|
||||
jPanel1Layout.setVerticalGroup(
|
||||
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(jPanel1Layout.createSequentialGroup()
|
||||
.addComponent(SettingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||
.addComponent(NewGame)
|
||||
.addComponent(Forward)
|
||||
.addComponent(Backward))
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 283, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(StatusLine, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||
);
|
||||
|
||||
javax.swing.GroupLayout MainPanelLayout = new javax.swing.GroupLayout(MainPanel);
|
||||
MainPanel.setLayout(MainPanelLayout);
|
||||
MainPanelLayout.setHorizontalGroup(
|
||||
MainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(MainPanelLayout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addComponent(ChessBoardPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 502, Short.MAX_VALUE)
|
||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addContainerGap())
|
||||
);
|
||||
MainPanelLayout.setVerticalGroup(
|
||||
MainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, MainPanelLayout.createSequentialGroup()
|
||||
.addContainerGap()
|
||||
.addGroup(MainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
.addComponent(ChessBoardPanel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 502, Short.MAX_VALUE))
|
||||
.addContainerGap())
|
||||
);
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
|
||||
getContentPane().setLayout(layout);
|
||||
layout.setHorizontalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(MainPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
);
|
||||
layout.setVerticalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(MainPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||
);
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
private void ChessBoardMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_ChessBoardMousePressed
|
||||
if (ctrl.humansTurn()) {
|
||||
int sq = cbp.eventToSquare(evt);
|
||||
Move m = cbp.mousePressed(sq);
|
||||
if (m != null) {
|
||||
ctrl.humanMove(m);
|
||||
}
|
||||
}
|
||||
}//GEN-LAST:event_ChessBoardMousePressed
|
||||
|
||||
private void FlipBoardStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_FlipBoardStateChanged
|
||||
cbp.setFlipped(FlipBoard.isSelected());
|
||||
}//GEN-LAST:event_FlipBoardStateChanged
|
||||
|
||||
private void NewGameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_NewGameActionPerformed
|
||||
ctrl.newGame(PlayerWhite.isSelected(), ttLogSize, true);
|
||||
ctrl.startGame();
|
||||
}//GEN-LAST:event_NewGameActionPerformed
|
||||
|
||||
private void ShowThinkingStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_ShowThinkingStateChanged
|
||||
ctrl.setMoveList();
|
||||
}//GEN-LAST:event_ShowThinkingStateChanged
|
||||
|
||||
private void BackwardActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_BackwardActionPerformed
|
||||
ctrl.takeBackMove();
|
||||
}//GEN-LAST:event_BackwardActionPerformed
|
||||
|
||||
private void ForwardActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ForwardActionPerformed
|
||||
ctrl.redoMove();
|
||||
}//GEN-LAST:event_ForwardActionPerformed
|
||||
|
||||
private void TimeSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_TimeSliderStateChanged
|
||||
ctrl.setTimeLimit();
|
||||
}//GEN-LAST:event_TimeSliderStateChanged
|
||||
|
||||
private void ChessBoardMouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_ChessBoardMouseDragged
|
||||
if (ctrl.humansTurn()) {
|
||||
cbp.mouseDragged(evt);
|
||||
}
|
||||
}//GEN-LAST:event_ChessBoardMouseDragged
|
||||
|
||||
private void ChessBoardMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_ChessBoardMouseReleased
|
||||
if (ctrl.humansTurn()) {
|
||||
int sq = cbp.eventToSquare(evt);
|
||||
Move m = cbp.mouseReleased(sq);
|
||||
if (m != null) {
|
||||
ctrl.humanMove(m);
|
||||
}
|
||||
}
|
||||
}//GEN-LAST:event_ChessBoardMouseReleased
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JButton Backward;
|
||||
private javax.swing.JLabel ChessBoard;
|
||||
private javax.swing.JPanel ChessBoardPanel;
|
||||
private javax.swing.JCheckBox FlipBoard;
|
||||
private javax.swing.JButton Forward;
|
||||
private javax.swing.JTextPane LogTextArea;
|
||||
private javax.swing.JPanel MainPanel;
|
||||
private javax.swing.JButton NewGame;
|
||||
private javax.swing.JRadioButton PlayerBlack;
|
||||
private javax.swing.ButtonGroup PlayerColor;
|
||||
private javax.swing.JRadioButton PlayerWhite;
|
||||
private javax.swing.JPanel SettingsPanel;
|
||||
private javax.swing.JCheckBox ShowThinking;
|
||||
private javax.swing.JTextField StatusLine;
|
||||
private javax.swing.JLabel TimeLabel;
|
||||
private javax.swing.JSlider TimeSlider;
|
||||
private javax.swing.JPanel jPanel1;
|
||||
private javax.swing.JScrollPane jScrollPane1;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
|
||||
public void setPosition(Position pos) {
|
||||
cbp.setPosition(pos);
|
||||
}
|
||||
|
||||
public void setSelection(int sq) {
|
||||
cbp.setSelection(sq);
|
||||
}
|
||||
|
||||
public void setStatusString(String str) {
|
||||
StatusLine.setText(str);
|
||||
}
|
||||
|
||||
public void setMoveListString(String str) {
|
||||
moveListStr = str;
|
||||
str = moveListStr + "\n" + thinkingStr;
|
||||
if (!str.equals(LogTextArea.getText())) {
|
||||
LogTextArea.setText(str);
|
||||
}
|
||||
}
|
||||
|
||||
public void setThinkingString(String str) {
|
||||
thinkingStr = str;
|
||||
str = moveListStr + "\n" + thinkingStr;
|
||||
if (!str.equals(LogTextArea.getText())) {
|
||||
LogTextArea.setText(str);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public final int timeLimit() {
|
||||
return Math.max(25, TimeSlider.getValue() * 1000);
|
||||
}
|
||||
|
||||
public final boolean showThinking() {
|
||||
return ShowThinking.isSelected();
|
||||
}
|
||||
|
||||
public void requestPromotePiece() {
|
||||
runOnUIThread(new Runnable() {
|
||||
public void run() {
|
||||
Object[] options = { "Queen", "Rook", "Bishop", "Knight" };
|
||||
int choice = JOptionPane.showOptionDialog(
|
||||
cbp, "Promote pawn to?", "Pawn Promotion",
|
||||
0, JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
|
||||
ctrl.reportPromotePiece(choice);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void runOnUIThread(Runnable runnable) {
|
||||
SwingUtilities.invokeLater(runnable);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean randomMode() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reportInvalidMove(Move m) {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user