一个Java围棋程序源代码改进版_明明_新浪博客

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 startbutton=new Button("restart");
 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(startbutton);
  startbutton.setBounds(35,36,60,26);
  startbutton.setEnabled(false);
  startbutton.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(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(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(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().trim();
   whitename=text_4.getText().trim();
   
   if(blackname.length()==0||whitename.length()==0)
   {
    JOptionPane.showMessageDialog(this,"you did not complete the information or you have input the illegal characteristics!","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 if(text_3.getText().equals(text_4.getText()))
   {
    JOptionPane.showMessageDialog(this,"you have input the same name for two different players, please reinput the players name","reminder",JOptionPane.WARNING_MESSAGE);
   }
   else
   {
    inputButton.setEnabled(false);
    text_3.removeFocusListener(this);
    text_3.setEnabled(false);
    text_4.setEnabled(false);
    startbutton.setEnabled(true);
    text_1.setEnabled(true);
    text_1.setText(blackname+" please");
    text_2.setEnabled(true);
   }
  }
  
  else if(e.getSource()==startbutton)
  {
   
   this.removeAll();
   
   inputButton.setEnabled(true);
   text_3.setEnabled(true);
   text_4.setEnabled(true);
   startbutton.setEnabled(false);
   text_1.setEnabled(false);
   text_2.setEnabled(false);
  
   chessColor=1;
  
   add(startbutton);
   startbutton.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);
  }
 }
}

 

已投稿到:
郑重声明:资讯 【一个Java围棋程序源代码改进版_明明_新浪博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——