//白子类
public class ChessPoint_white extends Canvas implements MouseListener{
ChessPad chesspad=null;
ChessPoint_white(ChessPad p) {
setSize(20,20);
chesspad=p;
addMouseListener(this);
}
public void paint(Graphics g){
g.setColor(Color.white);
g.fillOval(0,0,20,20);
}
public void mousePressed(MouseEvent e){
if(e.getModifiers()==InputEvent.BUTTON3_MASK){
chesspad.remove(this);
chesspad.flag=false;
chesspad.text2.setText("White First");
chesspad.text1.setText("");
}
}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){
if(e.getClickCount()>=2)
chesspad.remove(this);
}
}
//黑子类
public class ChessPoint_black extends Canvas implements MouseListener{
ChessPad chesspad=null;
ChessPoint_black(ChessPad p) {
setSize(20,20);
chesspad=p;
addMouseListener(this);
}
@Override
public void paint(Graphics g){
g.setColor(Color.black);
g.fillOval(0,0,20,20);
}
public void mousePressed(MouseEvent e){
if(e.getModifiers()==InputEvent.BUTTON3_MASK){
chesspad.remove(this);
chesspad.flag=true;
chesspad.text2.setText("");
chesspad.text1.setText("Black First");
}
}
@Override
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){
if(e.getClickCount()>=2)
chesspad.remove(this);
}
}
//棋盘类
public class ChessPad extends Panel implements MouseListener, ActionListener {
int x = -1, y = -1;
public boolean flag = true;
Button button = new Button("Replay");
public TextField text1 = new TextField("Black First");
public TextField text2 = new TextField("");
/** Creates new form ChessPad */
public ChessPad() {
setSize(440, 440);
setLayout(null);
setBackground(Color.orange);
addMouseListener(this);
add(button);
button.setBounds(10, 5, 60, 26);
button.addActionListener(this);
add(text1);
text1.setBounds(90, 5, 90, 24);
add(text2);
text2.setBounds(290, 5, 60, 24);
text1.setEditable(false);
text2.setEditable(false);
}
public void paint(Graphics g) {
for (int i = 40; i <= 380; i += 20) {
g.drawLine(40, i, 400, i);
}
g.drawLine(40, 400, 400, 400);
for (int j = 40; j <= 380; j += 20) {
g.drawLine(j, 40, j, 400);
}
g.drawLine(400, 40, 400, 400);
g.fillOval(97, 97, 6, 6);
g.fillOval(337, 97, 6, 6);
g.fillOval(97, 337, 6, 6);
g.fillOval(337, 337, 6, 6);
g.fillOval(217, 217, 6, 6);
}
@Override
public void mousePressed(MouseEvent e) {
if (e.getModifiers() == InputEvent.BUTTON1_MASK) {
x = (int) (e.getX());
y = (int) (e.getY());
ChessPoint_black chesspoint_black = new ChessPoint_black(this);
ChessPoint_white chesspoint_white = new ChessPoint_white(this);
int a = (x + 10) / 20, b = (y + 10) / 20;
if (x / 20 < 2 || y / 20 < 2 || x / 20 > 19 || y / 20 > 19) {
} else {
if (flag) {
this.add(chesspoint_black);
chesspoint_black.setBounds(a * 20 - 10, b * 20 - 10, 20, 20);
flag = false;
text2.setText("White First");
text1.setText("");
} else if (flag==false) {
this.add(chesspoint_white);
chesspoint_white.setBounds(a * 20 - 10, b * 20 - 10, 20, 20);
flag = true;
text1.setText("Black First");
text2.setText("");
}
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
this.removeAll();
flag = true;
add(button);
button.setVisible(true);
button.setBackground(Color.red);
button.setBounds(10, 5, 60, 26);
add(text1);
text1.setBounds(90, 5, 90, 24);
add(text2);
text2.setText("");
text1.setText("Black First");
text2.setBounds(290, 5, 90, 24);
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 477, Short.MAX_VALUE));
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 359, Short.MAX_VALUE));
}// </editor-fold>
// Variables declaration - do not modify
// End of variables declaration
@Override
public void mouseClicked(MouseEvent e) {
}
}
//主类
public class Chess extends Frame {
ChessPad chesspad=new ChessPad();
public Chess() {
setVisible(true);
setLayout(null);
Label label=new Label("click start,double eat",Label.CENTER);
add(label);
label.setBounds(70,55,440,26);
// label.setBackground(Color.orange);
add(chesspad);
chesspad.setBounds(70,90,440, 440);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
pack();
setSize(600,550);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 592, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Chess.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Chess.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Chess.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Chess.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
Chess chess=new Chess();
}
// Variables declaration - do not modify
// End of variables declaration
}
评论