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

📄 javafive.txt

📁 java网络对战超强五子棋 下面的源代码分为4个文件; chessClient.java:客户端主程序。 chessInterface.java:客户端的界面。 chessPad.java:
💻 TXT
📖 第 1 页 / 共 4 页
字号:
      break;
     }
    chessLink=1;
    chessLinkTest=1;
    for(step=1;step<=4;step++)
    {
     for(chessCompare=0;chessCompare<=chessWhiteCount;chessCompare++)
     {
      if((a*20==chessWhite_x[chessCompare]) && ((b+step)*20==chessWhite_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<=chessWhiteCount;chessCompare++)
     {
      if((a*20==chessWhite_x[chessCompare]) && ((b-step)*20==chessWhite_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<=chessWhiteCount;chessCompare++)
       {
        if(((a-step)*20==chessWhite_x[chessCompare]) && ((b+step)*20==chessWhite_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<=chessWhiteCount;chessCompare++)
       {
        if(((a+step)*20==chessWhite_x[chessCompare]) && ((b-step)*20==chessWhite_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<=chessWhiteCount;chessCompare++)
       {
        if(((a+step)*20==chessWhite_x[chessCompare]) && ((b+step)*20==chessWhite_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<=chessWhiteCount;chessCompare++)
       {
        if(((a-step)*20==chessWhite_x[chessCompare]) && ((b-step)*20==chessWhite_y[chessCompare]))
        {
         chessLink++;
         if(chessLink==5)
         {
          return(true);
          }
         }
      }
      if(chessLink==(chessLinkTest+1))
      chessLinkTest++;
      else
      break;
      }
     }
           return(false);
    }

 

 

     public void paint(Graphics g)
     {
   for (int i=40;i<=380;i=i+20)
      {
    g.drawLine(40,i,400,i);
   }
   g.drawLine(40,400,400,400);
         for(int j=40;j<=380;j=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);
      }


      public void chessPaint(int chessPoint_a,int chessPoint_b,int color)
      {
    chessPoint_black chesspoint_black=new chessPoint_black(this);
    chessPoint_white chesspoint_white=new chessPoint_white(this);

    if(color==1 && isMouseEnabled)
    {
     getLocation(chessPoint_a,chessPoint_b,color);
     isWin=checkWin(chessPoint_a,chessPoint_b,color);
     if(isWin==false)
     {
      chessthread.sendMessage("/"+chessPeerName+" /chess "+chessPoint_a+" "+chessPoint_b+" "+color);
      this.add(chesspoint_black);
      chesspoint_black.setBounds(chessPoint_a*20-7,chessPoint_b*20-7,16,16);
      statusText.setText("黑(第"+chessBlackCount+"步)"+chessPoint_a+" "+chessPoint_b+",请白棋下子");
      isMouseEnabled=false;
     }
     else
     {
      chessthread.sendMessage("/"+chessPeerName+" /chess "+chessPoint_a+" "+chessPoint_b+" "+color);
      this.add(chesspoint_black);
      chesspoint_black.setBounds(chessPoint_a*20-7,chessPoint_b*20-7,16,16);
      chessVictory(1);
      isMouseEnabled=false;
     }
    }
    else if(color==-1 && isMouseEnabled)
    {
     getLocation(chessPoint_a,chessPoint_b,color);
     isWin=checkWin(chessPoint_a,chessPoint_b,color);
     if(isWin==false)
     {
      chessthread.sendMessage("/"+chessPeerName+" /chess "+chessPoint_a+" "+chessPoint_b+" "+color);
      this.add(chesspoint_white);
      chesspoint_white.setBounds(chessPoint_a*20-7,chessPoint_b*20-7,16,16);
      statusText.setText("白(第"+chessWhiteCount+"步)"+chessPoint_a+" "+chessPoint_b+",请黑棋下子");
      isMouseEnabled=false;
     }
     else
     {
      chessthread.sendMessage("/"+chessPeerName+" /chess "+chessPoint_a+" "+chessPoint_b+" "+color);
      this.add(chesspoint_white);
      chesspoint_white.setBounds(chessPoint_a*20-7,chessPoint_b*20-7,16,16);
      chessVictory(-1);
      isMouseEnabled=false;
     }
    }
   }


      public void netChessPaint(int chessPoint_a,int chessPoint_b,int color)
      {
    chessPoint_black chesspoint_black=new chessPoint_black(this);
    chessPoint_white chesspoint_white=new chessPoint_white(this);
    getLocation(chessPoint_a,chessPoint_b,color);
    if(color==1)
    {
     isWin=checkWin(chessPoint_a,chessPoint_b,color);
     if(isWin==false)
     {

      this.add(chesspoint_black);
      chesspoint_black.setBounds(chessPoint_a*20-7,chessPoint_b*20-7,16,16);
      statusText.setText("黑(第"+chessBlackCount+"步)"+chessPoint_a+" "+chessPoint_b+",请白棋下子");
      isMouseEnabled=true;
     }
     else
     {
      this.add(chesspoint_black);
      chesspoint_black.setBounds(chessPoint_a*20-7,chessPoint_b*20-7,16,16);
      chessVictory(1);
      isMouseEnabled=true;
     }
    }
    else if(color==-1)
    {
     isWin=checkWin(chessPoint_a,chessPoint_b,color);
     if(isWin==false)
     {
      this.add(chesspoint_white);
      chesspoint_white.setBounds(chessPoint_a*20-7,chessPoint_b*20-7,16,16);
      statusText.setText("白(第"+chessWhiteCount+"步)"+chessPoint_a+" "+chessPoint_b+",请黑棋下子");
      isMouseEnabled=true;
     }
     else
     {
      chessthread.sendMessage("/"+chessPeerName+" /victory "+color);
      this.add(chesspoint_white);
      chesspoint_white.setBounds(chessPoint_a*20-7,chessPoint_b*20-7,16,16);
      chessVictory(-1);
      isMouseEnabled=true;
     }
    }
   }


      public void mousePressed(MouseEvent e)
      {
    if (e.getModifiers()==InputEvent.BUTTON1_MASK)
    {
     chessPoint_x=(int)e.getX();
     chessPoint_y=(int)e.getY();
     int a=(chessPoint_x+10)/20,b=(chessPoint_y+10)/20;
     if(chessPoint_x/20<2||chessPoint_y/20<2||chessPoint_x/20>19||chessPoint_y/20>19)
     {}
     else
     {
      chessPaint(a,b,chessColor);
     }
   }
  }

  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)
  {

  }
}


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,14,14);
 }

 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("请黑棋下子");
//  }
 }
 public void mouseReleased(MouseEvent e){}
 public void mouseEntered(MouseEvent e) {}
 public void mouseExited(MouseEvent e) {}
 public void mouseClicked(MouseEvent e) {}
}


class chessPoint_white extends Canvas implements MouseListener
{
 chessPad chesspad=null;
 chessPoint_white(chessPad p)
 {
  setSize(20,20);
  addMouseListener(this);
  chesspad=p;
 }

 public void paint(Graphics g)
 {
  g.setColor(Color.white);
  g.fillOval(0,0,14,14);
 }

 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("");
//  }
 }
 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);
 }
}


/******************************************************************************************
最后是:chessServer.java
*******************************************************************************************/
import java.io.*;
import java.net.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;

class MessageServer extends Panel //implements ActionListener
{
 TextArea messageBoard=new TextArea("",22,50,TextArea.SCROLLBARS_VERTICAL_ONLY);
 Label statusLabel=new Label("当前连接数:",Label.LEFT);
    Panel boardPanel=new Panel();
    Panel statusPanel=new Panel();

 MessageServer()
 {
  setSize(350,300);
  setBackground(Color.pink);
  setLayout(new BorderLayout());
  boardPanel.setLayout(new FlowLayout());
  boardPanel.setSize(210,210);
  statusPanel.setLayout(new BorderLayout());
  statusPanel.setSize(210,50);
  boardPanel.add(messageBoard);
     statusPanel.add(statusLabel,BorderLayout.WEST);
  add(boardPanel,BorderLayout.CENTER);
  add(statusPanel,BorderLayout.NORTH);
 }
}


class ServerThread extends Thread
{
 Socket clientSocket;
 Hashtable clientDataHash;
 Hashtable clientNameHash;
 Hashtable chessPeerHash;
 MessageServer server;

 boolean isClientClosed=false;

 ServerThread(Socket clientSocket,Hashtable clientDataHash,Hashtable clientNameHash,Hashtable chessPeerHash,MessageServer server)
 {
  this.clientSocket=clientSocket;
  this.clientDataHash=clientDataHash;
  this.clientNameHash=clientNameHash;
  this.chessPeerHash=chessPeerHash;
  this.server=server;
 }

 

 public void messageTransfer(String message)
 {
  String clientName,peerName;

  if(message.startsWith("/"))
  {

   if(message.startsWith("/changename "))
   {
    clientName=message.substring(12);
    if( clientName.length()<=0             || clientName.length()>20                   ||
     clientName.startsWith("/")         || clientNameHash.containsValue(clientName) ||
        clientName.startsWith("changename")|| clientName.startsWith("list")            ||
        clientName.startsWith("[inchess]") || clientName.startsWith("creatgame")       ||
        clientName.startsWith("joingame")  || clientName.startsWith("yourname")        ||
        clientName.startsWith("userlist")  || clientName.startsWith("chess")           ||
        clientName.startsWith("OK")        || clientName.startsWith("reject")          ||
        clientName.startsWith("peer")      || clientName.startsWith("peername")        ||
        clientName.startsWith("giveup")    || clientName.startsWith("youwin")          ||
        clientName.startsWith("所有人"))
    {
     message="无效命令";
     Feedback(message);
    }
    else
    {
     if(clientNameHash.containsValue(("[inchess]"+(String)clientNameHash.get(clientSocket))))
     {
      synchronized(clientNameHash)
      {
       clientNameHash.put((Socket)getHashKey(clientNameHash,("[inchess]"+clientNameHash.get(clientSocket))),
            ("[inchess]"+clientName));
       chessPeerTalk(("[inchess]"+clientName),("/yourname "+("[inchess]"+clientName)));
      }
     }
     else if(chessPeerHash.containsKey(clientNameHash.get(clientSocket)))
     {
      //游戏客户端改名字
      synchronized(clientNameHash)
      {
       clientNameHash.put((Socket)getHashKey(clientNameHash,("[inchess]"+clientNameHash.get(clientSocket))),
            ("[inchess]"+clientName));
      }

      synchronized(chessPeerHash)
      {
       //chessPeerHash添加新名字映射
       chessPeerHash.put(clientName,chessPeerHash.get(clientNameHash.get(clientSocket)));
       //chessPeerHash删除旧映射
       chessPeerHash.remove(clientNameHash.get(clientSocket));
      }
      //向游戏客户端发送新名字
      chessPeerTalk(("[inchess]"+clientName),("/yourname "+("[inchess]"+clientName)));
      //向peer游戏客户端发送
      chessPeerTalk((String)chessPeerHash.get(clientName),("/peer "+"[inchess]"+clientName));

     }
     else if(chessPeerHash.containsValue(clientNameHash.get(clientSocket)))
     {
      synchronized(clientNameHash)
      {
       //游戏客户端改名字
       clientNameHash.put((Socket)getHashKey(clientNameHash,("[inchess]"+clientNameHash.get(clientSocket))),
                  ("[inchess]"+clientName));
      }
      synchronized(chessPeerHash)
      {
       //chessPeerHash重新映射
       chessPeerHash.put((String)getHashKey(chessPeerHash,clientNameHash.get(clientSocket)),clientName);
       //向游戏客户端发送新名字
       chessPeerTalk(("[inchess]"+clientName),("/yourname "+("[inchess]"+clientName)));
      }
      //向peer游戏客户端发送
      chessPeerTalk((String)getHashKey(chessPeerHash,clientName),("/peer "+"[inchess]"+clientName));

     }

     message=clientNameHash.get(clientSocket)+"改名为:"+clientName;
     synchronized(clientNameHash)
     {
      clientNameHash.put(clientSocket,clientName);
     }
     publicTalk(message);
     Feedback("/yourname "+(String)clientNameHash.get(clientSocket));
     publicTalk(getUserList());

    }

   }
   else if(message.equals("/list"))

⌨️ 快捷键说明

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