import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
public class Chess extends Frame
ChessPad chesspad= new ChessPad();
Chess()
add(chesspad);
chesspad.setBounds(70,90,440,440);
Label label=new Label("click to
point,doubled_click to remove,right click to
back",Label.CENTER);
add(label);
label.setBounds(70,55,440,24);
label.setBackground(Color.orange);
addWindowListener
new
WindowAdapter()
public
void windowClosing(WindowEvent e)
System.exit(0);
}
setLayout(null);
setVisible(true);
setSize(600,550);
public static void main(String args[])
Chess chess=new Chess();
}
class ChessPad extends Panel implements MouseListener, ActionListener,FocusListener int x = -1, y = -1, chessColor = 1; String blackname="",whitename="";
Button button=new Button("start");
Button inputButton=new Button("input");
TextField text_1=new TextField("black
please"),
text_2=new TextField(""),//white please
text_3=new TextField("black'name"),
text_4=new TextField("white'name");
ChessPad()
add(inputButton);
inputButton.setBounds(35,5,60,26);
inputButton.addActionListener(this);
inputButton.addFocusListener(this);
add(text_3);
text_3.setBounds(115,5,90,24);
text_3.addFocusListener(this);
text_3.setEditable(true);
add(text_4);
text_4.setBounds(315,5,90,24);
text_4.addFocusListener(this);
text_4.setEditable(true);
add(button);
button.setBounds(35,36,60,26);
button.setEnabled(false);
button.addActionListener(this);
add(text_1);
text_1.setBounds(115,36,90,24);
text_1.setEnabled(false);
text_1.setEditable(false);
add(text_2);
text_2.setBounds(315,36,90,24);
text_2.setEnabled(false);
text_2.setEditable(false);
setSize(440,440);
setLayout(null);
setBackground(Color.orange);
addMouseListener(this);
public void paint(Graphics g)
for(int
i=80;i<=400;i=i+20)
g.drawLine(40,i,400,i);
g.drawLine(40,420,400,420);
for(int
j=40;j<=380;j=j+20)
g.drawLine(j,80,j,420);
g.drawLine(400,80,400,420);
g.fillOval(97,137,6,6);
g.fillOval(337,137,6,6);
g.fillOval(97,377,6,6);
g.fillOval(337,377,6,6);
g.fillOval(217,257,6,6);
public void focusGained(FocusEvent e)
Component
com=(Component)e.getSource();
if(com==text_3)
text_3.setText("");
else if(com==text_4)
text_4.setText("");
public void focusLost(FocusEvent e)
public void mousePressed(MouseEvent e)
{
if(blackname.length()==0||whitename.length()==0)
JOptionPane.showMessageDialog(this,"please
input the player's name,and click input button before you start
chess!","reminder",JOptionPane.WARNING_MESSAGE);
else
if(blackname.equals("black'name"))
JOptionPane.showMessageDialog(this,"please
input the black player's name,and click input
button","reminder",JOptionPane.WARNING_MESSAGE);
else
if(whitename.equals("white'name"))
JOptionPane.showMessageDialog(this,"please
input the white player's name,and click input
button","reminder",JOptionPane.WARNING_MESSAGE);
else
if(e.getModifiers()==InputEvent.BUTTON1_MASK)
x =
(int)e.getX();
y =
(int)e.getY();
int
a=(x+10)/20,b=(y+10)/20;
ChessPoint_black
chesspoint_black=new ChessPoint_black(this);
ChessPoint_white
chesspoint_white=new ChessPoint_white(this);
if(x/20<2||y/20<4||x/20>19||y/20>20)
else
if(chessColor==1)
this.add(chesspoint_black);
chesspoint_black.setBounds(a*20-10,b*20-10,20,20);
chessColor=chessColor*(-1);
text_2.setText(this.whitename+"
please");
text_1.setText("");
else
if(chessColor==-1)
this.add(chesspoint_white);
chesspoint_white.setBounds(a*20-10,b*20-10,20,20);
chessColor=chessColor*(-1);
text_1.setText(this.blackname+"
please");
text_2.setText("");
}
}
public void mouseReleased(MouseEvent e)
public void mouseEntered(MouseEvent e)
public void mouseExited(MouseEvent e)
public void mouseClicked(MouseEvent e)
public void actionPerformed(ActionEvent e)
if(e.getSource()==inputButton)
blackname=text_3.getText();
whitename=text_4.getText();
if(blackname.length()==0||whitename.length()==0)
JOptionPane.showMessageDialog(this,"you
did not complete the
information!","reminder",JOptionPane.WARNING_MESSAGE);
else
if(blackname.equals("black'name"))
JOptionPane.showMessageDialog(this,"please
input the black player's
name","reminder",JOptionPane.WARNING_MESSAGE);
else
if(whitename.equals("white'name"))
JOptionPane.showMessageDialog(this,"please
input the white player's
name","reminder",JOptionPane.WARNING_MESSAGE);
else
inputButton.setEnabled(false);
text_3.removeFocusListener(this);
text_3.setEnabled(false);
text_4.setEnabled(false);
button.setEnabled(true);
text_1.setEnabled(true);
text_1.setText(blackname+"
please");
text_2.setEnabled(true);
}
else
if(e.getSource()==button)
inputButton.setEnabled(true);
text_3.setEnabled(true);
text_4.setEnabled(true);
button.setEnabled(false);
text_1.setEnabled(false);
text_2.setEnabled(false);
this.removeAll();
chessColor=1;
add(button);
button.setBounds(35,36,60,26);
add(text_1);
text_1.setBounds(115,36,90,24);
text_1.setText("black
please");
add(text_2);
text_2.setBounds(315,36,90,24);
text_2.setText("");
add(inputButton);
inputButton.setBounds(35,5,60,26);
add(text_3);
text_3.setText("black'name");
text_3.addFocusListener(this);
text_3.setBounds(115,5,90,24);
add(text_4);
text_4.setText("white'name");
text_4.setBounds(315,5,90,24);
blackname="";
whitename="";
}
class ChessPoint_black extends Canvas implements
MouseListener
ChessPad chesspad=null;
ChessPoint_black(ChessPad p)
setSize(20,20);
chesspad=p;
addMouseListener(this);
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.chessColor=1;
chesspad.text_2.setText("");
chesspad.text_1.setText(chesspad.blackname+"
please");
}
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);
}
}
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.chessColor=-1;
chesspad.text_1.setText("");
chesspad.text_2.setText(chesspad.whitename+"
please");
}
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);
}
}
PS:功能介绍
游戏操作:左击下子,右击悔棋,双击吃子(本程序还无程序判断能力)
输入:输入选手名,然后点击“input”即可开始游戏,点击“Start”从新开始。