⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chessclient.java

📁 SciTE
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
      out.writeUTF(inputWords.getText());
      inputWords.setText("");
     }
     catch(Exception ea)
     {
      chatpad.chatLineArea.setText("chessClient:KeyPressed无法连接,建议重新连接 \n");
      userpad.userList.removeAll();
      inputpad.userChoice.removeAll();
      inputWords.setText("");
      controlpad.connectButton.setEnabled(true);
     }
    }
    else
    {
     try
     {
      out.writeUTF("/"+inputpad.userChoice.getSelectedItem()+" "+inputWords.getText());
      inputWords.setText("");
     }
     catch(Exception ea)
     {
      chatpad.chatLineArea.setText("chessClient:KeyPressed无法连接,建议重新连接 \n");
      userpad.userList.removeAll();
      inputpad.userChoice.removeAll();
      inputWords.setText("");
      controlpad.connectButton.setEnabled(true);
     }
    }
     }

  }

  public void keyTyped(KeyEvent e)
  {
  }
  public void keyReleased(KeyEvent e)
  {
  }



  public static void main(String args[])
  {
   chessClient chessClient=new chessClient();
  }
}






/******************************************************************************************
下面是:chessInteface.java
******************************************************************************************/



class userPad extends Panel
{
java.awt.List userList=new java.awt.List(10);

userPad()
{
 setLayout(new BorderLayout());

 for(int i=0;i<50;i++)
 {
  userList.add(i+"."+"没有用户");
 }
 add(userList,BorderLayout.CENTER);

}

}

class chatPad extends Panel
{
TextArea chatLineArea=new TextArea("",18,30,TextArea.SCROLLBARS_VERTICAL_ONLY);

chatPad()
{
 setLayout(new BorderLayout());

 add(chatLineArea,BorderLayout.CENTER);
}

}



class controlPad extends Panel
{
Label IPlabel=new Label("IP",Label.LEFT);
TextField inputIP=new TextField("localhost",10);
Button connectButton=new Button("连接主机");
Button creatGameButton=new Button("建立游戏");
Button joinGameButton=new Button("加入游戏");
Button cancelGameButton=new Button("放弃游戏");
Button exitGameButton=new Button("关闭程序");

controlPad()
{
 setLayout(new FlowLayout(FlowLayout.LEFT));
       setBackground(Color.pink);

 add(IPlabel);
 add(inputIP);
 add(connectButton);
 add(creatGameButton);
 add(joinGameButton);
 add(cancelGameButton);
 add(exitGameButton);
}

}

class inputPad extends Panel
{
TextField inputWords=new TextField("",40);
Choice userChoice=new Choice();

inputPad()
{
 setLayout(new FlowLayout(FlowLayout.LEFT));
 for(int i=0;i<50;i++)
 {
  userChoice.addItem(i+"."+"没有用户");
 }
 userChoice.setSize(60,24);
 add(userChoice);
 add(inputWords);
}
}

/**********************************************************************************************
下面是:chessPad.java
**********************************************************************************************/

class chessThread extends Thread
{
chessPad chesspad;

chessThread(chessPad chesspad)
{
 this.chesspad=chesspad;
}

public void sendMessage(String sndMessage)
{
 try
 {
  chesspad.outData.writeUTF(sndMessage);
 }
 catch(Exception ea)
 {
  System.out.println("chessThread.sendMessage:"+ea);
 }
}


public void acceptMessage(String recMessage)
{
 if(recMessage.startsWith("/chess "))
 {
  StringTokenizer userToken=new StringTokenizer(recMessage," ");
  String chessToken;
  String[] chessOpt={"-1","-1","0"};
  int chessOptNum=0;

  while(userToken.hasMoreTokens())
  {
   chessToken=(String)userToken.nextToken(" ");
   if(chessOptNum>=1 && chessOptNum<=3)
   {
    chessOpt[chessOptNum-1]=chessToken;

   }
   chessOptNum++;
  }
  chesspad.netChessPaint(Integer.parseInt(chessOpt[0]),Integer.parseInt(chessOpt[1]),Integer.parseInt(chessOpt[2]));

 }
 else if(recMessage.startsWith("/yourname "))
 {
  chesspad.chessSelfName=recMessage.substring(10);
 }
 else if(recMessage.equals("/error"))
 {
  chesspad.statusText.setText("错误:没有这个用户,请退出程序,重新加入");
 }
 else
 {
  //System.out.println(recMessage);
 }
}


public void run()
{
    String message="";
    try
    {
  while(true)
  {
   message=chesspad.inData.readUTF();
   acceptMessage(message);
  }
 }
 catch(IOException es)
 {
 }
}

}




class chessPad extends Panel implements MouseListener,ActionListener
{
int chessPoint_x=-1,chessPoint_y=-1,chessColor=1;
int chessBlack_x[]=new int[200];
int chessBlack_y[]=new int[200];
int chessWhite_x[]=new int[200];
int chessWhite_y[]=new int[200];
int chessBlackCount=0,chessWhiteCount=0;
int chessBlackWin=0,chessWhiteWin=0;
boolean isMouseEnabled=false,isWin=false,isInGame=false;
TextField statusText=new TextField("请先连接服务器");

   Socket chessSocket;
DataInputStream inData;
DataOutputStream outData;

String chessSelfName=null;
String chessPeerName=null;
String host=null;
int port=4331;
chessThread chessthread=new chessThread(this);

   chessPad()
   {
 setSize(440,440);
    setLayout(null);
    setBackground(Color.pink);
    addMouseListener(this);
    add(statusText);
    statusText.setBounds(40,5,360,24);
    statusText.setEditable(false);
   }


 public boolean connectServer(String ServerIP,int ServerPort) throws Exception
 {
  try
  {
   chessSocket=new Socket(ServerIP,ServerPort);
   inData=new DataInputStream(chessSocket.getInputStream());
   outData=new DataOutputStream(chessSocket.getOutputStream());
    chessthread.start();
   return true;
  }
  catch(IOException ex)
  {
   statusText.setText("chessPad:connectServer:无法连接 \n");
  }
  return false;
 }


    public void chessVictory(int chessColorWin)
    {
   this.removeAll();
    for(int i=0;i<=chessBlackCount;i++)
   {
    chessBlack_x[i]=0;
         chessBlack_y[i]=0;
   }
   for(int i=0;i<=chessWhiteCount;i++)
   {
    chessWhite_x[i]=0;
         chessWhite_y[i]=0;
   }
   chessBlackCount=0;
   chessWhiteCount=0;
   add(statusText);
   statusText.setBounds(40,5,360,24);

        if(chessColorWin==1)
  { chessBlackWin++;
   statusText.setText("黑棋胜,黑:白为"+chessBlackWin+":"+chessWhiteWin+",重新开局,等待白棋下子...");
  }
     else if(chessColorWin==-1)
     {
   chessWhiteWin++;
   statusText.setText("白棋胜,黑:白为"+chessBlackWin+":"+chessWhiteWin+",重新开局,等待黑棋下子...");
  }
 }



    public void getLocation(int a,int b,int color)
    {

  if(color==1)
  {
   chessBlack_x[chessBlackCount]=a*20;
   chessBlack_y[chessBlackCount]=b*20;
   chessBlackCount++;
  }
  else if(color==-1)
  {
   chessWhite_x[chessWhiteCount]=a*20;
   chessWhite_y[chessWhiteCount]=b*20;
   chessWhiteCount++;
  }
 }


    public boolean checkWin(int a,int b,int checkColor)
    {
  int step=1,chessLink=1,chessLinkTest=1,chessCompare=0;
  if(checkColor==1)
  {
   chessLink=1;
   for(step=1;step<=4;step++)
   {
    for(chessCompare=0;chessCompare<=chessBlackCount;chessCompare++)
    {
     if(((a+step)*20==chessBlack_x[chessCompare]) && ((b*20)==chessBlack_y[chessCompare]))
     {
      chessLink=chessLink+1;
      if(chessLink==5)
      {
       return(true);
      }
     }
     }
     if(chessLink==(chessLinkTest+1))
     chessLinkTest++;
     else
     break;
    }
   for(step=1;step<=4;step++)
   {
    for(chessCompare=0;chessCompare<=chessBlackCount;chessCompare++)
    {
     if(((a-step)*20==chessBlack_x[chessCompare]) && (b*20==chessBlack_y[chessCompare]))
     {
      chessLink++;
      if(chessLink==5)
      {
       return(true);
      }
      }
     }
     if(chessLink==(chessLinkTest+1))
     chessLinkTest++;
     else
     break;
    }
   chessLink=1;
   chessLinkTest=1;
   for(step=1;step<=4;step++)
   {
    for(chessCompare=0;chessCompare<=chessBlackCount;chessCompare++)
    {
     if((a*20==chessBlack_x[chessCompare]) && ((b+step)*20==chessBlack_y[chessCompare]))
     {
      chessLink++;
      if(chessLink==5)
      {
       return(true);
      }
      }
        }
        if(chessLink==(chessLinkTest+1))
        chessLinkTest++;
        else
        break;
    }
   for(step=1;step<=4;step++)
   {
    for(chessCompare=0;chessCompare<=chessBlackCount;chessCompare++)
    {
     if((a*20==chessBlack_x[chessCompare]) && ((b-step)*20==chessBlack_y[chessCompare]))
     {
      chessLink++;
      if(chessLink==5)
      {
       return(true);
      }
      }
     }
     if(chessLink==(chessLinkTest+1))
     chessLinkTest++;
     else
     break;
    }
     chessLink=1;
     chessLinkTest=1;
     for(step=1;step<=4;step++)
     {
      for(chessCompare=0;chessCompare<=chessBlackCount;chessCompare++)
      {
       if(((a-step)*20==chessBlack_x[chessCompare]) && ((b+step)*20==chessBlack_y[chessCompare]))
       {
        chessLink++;
      if(chessLink==5)
      {
       return(true);
       }
        }
    }
    if(chessLink==(chessLinkTest+1))
    chessLinkTest++;
    else
    break;
     }
     for(step=1;step<=4;step++)
     {
      for(chessCompare=0;chessCompare<=chessBlackCount;chessCompare++)
      {
       if(((a+step)*20==chessBlack_x[chessCompare]) && ((b-step)*20==chessBlack_y[chessCompare]))
       {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -