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

📄 tryclient.java

📁 一个实现双人玩的圈叉游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                 else 
                 {
                 	record[i]=0;
                 	button[i].setIcon(image[0]);
                 	servernum++;
                 	totalnum++;
                 	
                 }
                 if(IsGameOver())             //胜负已经揭晓
                    { 
                     start=true;
                     startAgain();
                   	pressed=true;
                    }
                else if(totalnum==9)
                 {
                 JOptionPane.showMessageDialog(null,"双方不分胜负,此局结束,请重新开始");
                  start=true;	
                  startAgain();
                  pressed=true;  	
                 }
              }
              else if(message.substring(0,7).equals("restart"))
                  {  start=false;
                  	 startAgain();
                  	 
                  }
             
              textArea.setCaretPosition(textArea.getText().length() );
           }
  
          //异常处理
           catch ( ClassNotFoundException classNotFoundException )
            {
              textArea.append( "\nUnknown object type received" );
            }
  
           } while ( !message.equals( "game over" ) );
        }//end_processConnection()
	   
	   //重新开始
	   public void startAgain()
	   {
	   	        int i;
	   	     	for(i=0;i<9;i++)
	   	     	{
	   	     		button[i].setIcon(backcolor);
	   	     		record[i]=-1;
	   	     	
	   	     	}
	   	     		totalnum=0;
	   	     		servernum=0;
	   	     		clientnum=0;
	   	     	if(start) 
	   	      sendData("restart");
	   }
	   //判断游戏是否结束的方法
	   public boolean IsGameOver()
	   {    
	   	     if(record[4]==0)                      //以4为中心,总共有4种取胜的可能
	   	       {
	   	       	 if((record[3]==0&&record[5]==0)||(record[1]==0&&record[7]==0)||(record[0]==0&&record[8]==0)||(record[2]==0&&record[6]==0))
	   	     	  {  
	   	     	   if(imageType==0)
	   	     	  	  	JOptionPane.showMessageDialog(null,"客户端已经获胜,游戏结束,按restart可以重新开始游戏");
	   	     	    else 
	   	     	  	JOptionPane.showMessageDialog(null,"服务器端已经获胜,游戏结束,按restart可以重新开始游戏");
	   	     	    return true;
	   	     	
	   	     	 }
	          }
	   	    else if(record[4]==1)
	   	        { 
	   	         if((record[3]==1&&record[5]==1)||(record[1]==1&&record[7]==1)||(record[0]==1&&record[8]==1)||(record[2]==1&&record[6]==1))
	   	     	    
	   	     	  {  if(imageType==1)
	   	     	      	JOptionPane.showMessageDialog(null,"客户端已经获胜,游戏结束,按restart可以重新开始游戏");
	   	     	     else 
	   	     	  	JOptionPane.showMessageDialog(null,"服务器端已经获胜,游戏结束,按restart可以重新开始游戏");
	   	     	    return true;
	   	     	 
	   	     	 }
	   	     	}
	   	 
	   	  	  //判断四周是否存在获胜组合,共有4种
	   	  	if((record[0]==0&&record[1]==0&&record[2]==0)||(record[0]==0&&record[3]==0&&record[6]==0)
	   	             ||(record[6]==0&&record[7]==0&&record[8]==0)||(record[2]==0&&record[5]==0&&record[8]==0))
	   	         {  
	   	       	     if(imageType==0)
	   	        	  	JOptionPane.showMessageDialog(null,"客户端已经获胜,游戏结束,按restart可以重新开始游戏");
	   	     	     else 
	   	     	  	 JOptionPane.showMessageDialog(null,"服务器端已经获胜,游戏结束,按restart可以重新开始游戏");
	   	     	     return true;
	   	     	 
	   	     	 }
	   	     if((record[0]==1&&record[1]==1&&record[2]==1)||(record[0]==1&&record[3]==1&&record[6]==1)
	   	             ||(record[6]==1&&record[7]==1&&record[8]==1)||(record[2]==1&&record[5]==1&&record[8]==1))
	   	          {
	   	            if(imageType==1)
	   	     	   	JOptionPane.showMessageDialog(null,"客户端已经获胜,游戏结束,按restart可以重新开始游戏");
	   	     	    else 
	   	     	  	JOptionPane.showMessageDialog(null,"服务器端已经获胜,游戏结束,按restart可以重新开始游戏");
	   	     	    return true;
	   	     	 
	   	     	   }
	   	   return false;            //还不分胜负
	   }//end_IsGameOver()
	   
	        //发送数据作为内部方法使用
	       public void sendData(String command)
	       {
     
           //发送消息到
           try {
                output.writeObject( command );
                output.flush();
                textArea.append(command );
              }
  
          //处理发送过程中发生的异常
           catch ( IOException ioException ) 
            {
             textArea.append( "\nError writing object" );
        
            }
	   	
	      }  //end_sendData()
	   
	   //事件监听器类
	   public class Actionhandler implements ActionListener
	   {
	   	    
	   	     public void actionPerformed(ActionEvent e)
	   	     {
	   	       
	   	        if(e.getSource().equals(startgame))
	   	             StartGame();   
	   	     
	   	        else if(e.getSource().equals(exit))
	   	            {
	   	            	sendData("game over");
	   	            	System.exit(0);
	   	            }
	   	        else if(e.getSource().equals(restart))
	   	            {
	   	               if(start)
	   	                  restart();                             //调动重新开始方法
	   	               else 
	   	                 JOptionPane.showMessageDialog(null,"对方已经按下开始键了,可以开始游戏了");
	   	            }
	   	        else                                       //下面处理面板上的按钮的点击事件
	   	         	{    int i;
	   	         		 for(i=0;!(e.getSource().equals(button[i]))&&i<9;i++);
	   	         		 PressHandler(i);
	   	            }
	
	   	     }
	   	     
	   	     //游戏开始的处理方法
	   	     public void StartGame()
	   	     {
	   	     	int m;
	   	     	m=(int)(Math.random()*10);
	   	     	if(m%2==0) {
	   	     		         imageType=0;
	   	     		         textArea.append("客户端选择--圆\n");
	   	     		       }
	   	     	   else { imageType=1;             //随机选择
	   	     	          textArea.append("客户端选择--叉\n");
	   	     	       }
	   	     	sendData("start game:"+imageType+" ");
	   	     	pressed=true;
	   	     	
	   	     }
	   	     //游戏重新开始的处理方法
	   	     public void restart()
	   	     {
	   	     	int i;
	   	     	for(i=0;i<9;i++)
	   	     	{
	   	     		button[i].setIcon(backcolor);
	   	     		record[i]=-1;
	   	     	
	   	     	}
	   	     		totalnum=0;
	   	     		servernum=0;
	   	     		clientnum=0;
	   	          sendData("restart");
	   	         pressed=true;
	   	     }
	   	     //按钮处理方法
	   	     public void PressHandler(int loc)
	   	     {
	   	          if(pressed)
	   	          {
	   	             if(record[loc]==-1)              //如果这个位置原本是空的
	   	     	      {
	   	     	    	button[loc].setIcon(image[imageType]);    //给这个位置设置图标  
	   	     	    	record[loc]=imageType;
	   	     	    	sendData("order:"+loc+" ");
	   	     	    	textArea.append("\nClient>>>order:"+loc);
	   	     	    	clientnum++;
	   	     	    	totalnum++;
	   	     	    	pressed=false;
	   	     	    	if(IsGameOver())
	   	     	    	   { 
	   	     	    	     start=true;
	   	     	    	     startAgain();
	   	     	    	   	 
	   	     	    	  }
	   	     	    	else if(totalnum==9)
	   	     	    	{
	   	     	           JOptionPane.showMessageDialog(null,"双方不分胜负,本局结束,请重新开始");
	   	     	           start=true;
	   	     	           startAgain();
	   	     	         
	   	     	    	}
	   	     	    
	   	     	      }
	   	     	    else JOptionPane.showMessageDialog(null,"此处不能下");
	   	     	  }//end_if(pressed)
	   	     	  else JOptionPane.showMessageDialog(null,"你已经下过一次了");
	   	     	 
	   	     }
	   	     
	   	
	   }
  }	 
	 

⌨️ 快捷键说明

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