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

📄 gameserver.java

📁 双 人 连 机 的 贪吃蛇
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;



public class GameServer {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
         ServerFrame sf=new ServerFrame();
         sf.show();
	}
	

}
class ServerFrame extends JFrame implements KeyListener,WindowListener
{
	  static GamePanel gp;
	  //CounterPanel ct;
	  ServerThread st;
	  static Graphics g;
	   Sender sender=null;
	   Food fd;
	  public Snake snk;
	  public Snake2 yoursnk;
	  
	  
	  ServerFrame()
	  {      setLayout(null);
	  	     setSize(800,700);	  	    
	  	     gp=new GamePanel();	  	   	  	     
	  	     add(gp);
	  	     gp.setBounds(20,20,750,650);	  	     	  	     	  	    
	  	     addWindowListener(this);
	  	     addKeyListener(this);
	  	     st=new ServerThread(5000);
	  	     sender=new Sender("127.0.0.1",5001);
	  	   
	  }
	  public void keyPressed(KeyEvent e)
	  	     {    
	  	         
				  if(e.getKeyCode()==e.VK_UP)
				  {
					    snk.cmdUp();
					    sender.sendCmd("%up%");
				  }
				  if(e.getKeyCode()==e.VK_DOWN)
				  {
					    snk.cmdDown();
					    sender.sendCmd("%down%");
				  }
				  if(e.getKeyCode()==e.VK_LEFT)
				  {
					    snk.cmdLeft();
					    sender.sendCmd("%left%");
				  }
				  if(e.getKeyCode()==e.VK_RIGHT)
				  {
					    snk.cmdRight();
					    sender.sendCmd("%right%");
				  }
	  	          
	  	              
	  	           	
	  	     } 
	  	     public void keyReleased(KeyEvent e)
	  	     {
	  	    	 
	  	     }
	  	     public void keyTyped(KeyEvent e)
	  	     {
	  	     	    
	  	     } 
	  	   private class Sender extends Thread
	  	      {
	  	    	  private DataOutputStream outToClient=null; 	    	  
	  	    	  private Socket sk=null;
	  	    	  private String ip;
	  	    	  private int port;
	  	    	  Sender(String ip,int port)
	  	    	  {
	  	    		this.ip=ip;
	  	    		this.port=port;
	  	    		this.start();
	  	    	  }
	  	    	   public void run()
	  	    	  {
	  	    		while(true)
	  	    		   {	  	    		  
		  	    		   try
		  	    		   {	  	    			   	  	    			   
		  	    			   sk=new Socket(InetAddress.getByName(ip),port);		  	    	
		  	    		   }
		  	    		   catch(Exception e)
		  	    		   {		  	    			  
		  	    			   e.printStackTrace();
		  	    		   }
		  	    		   if(sk!=null)break;
	  	    		   }  
	  	    		   try
	  	    		   {	  	    		      
	  	    			   outToClient=new DataOutputStream(sk.getOutputStream()); 
	  	    		   }
	  	    		   catch(Exception e)
	  	    		   {
	  	    			   e.printStackTrace();
	  	    		   }
	  	    	    
	  	    	  }
	  	    	   
	  	    	   public void sendCmd(String str)
	  	    	   {
	  	    		   try
	  	    		   { 
	  	    		     outToClient.writeUTF(str);
	  	    	         System.out.println(str);
	  	    		   }
	  	    		   catch(Exception e)
	  	    		   {
	  	    			   e.printStackTrace();
	  	    		   }
	  	    	   }   
	  	      }    
	  	 private  class  ServerThread extends Thread
	  	 {
	  	      
	  	 	  private ServerSocket svsk;
	  	 	  private String yourip="127.0.0.1";
	  	 	  private DataInputStream inFromClient;
	  	      Socket sk=null;
	  	      private  int gameport=5000;
	  	      
	  	      public Socket getSocket()
	  	      {
	  	    	   return sk;    
	  	      }
	  	      
	  	      ServerThread(int port)
	  	      {
	  	     	 setPort(port);
	  	     
	  	     	 try
	  	     	 {
	  	     		 svsk=new ServerSocket(gameport);
	  	     	 }
	  	     	 catch(Exception e)
	  	     	 {
	  	               e.printStackTrace();
	  	     	 }
	  	     	 this.start();
	  	      }
	  	      public void gameStart()
	  	      {
	  	    	  
	  	      }
	  	      public void run()
	  	      {
	  	    	
	  	     	 	 try
		  	     	 {
		  	     		 sk=svsk.accept(); 
		  	     	     inFromClient=new DataInputStream(sk.getInputStream());
		  	     	 }
		  	     	 catch(Exception e)
		  	     	 {
		  	     		 e.printStackTrace();
		  	     	 }		  	     	 
		  	     			  	      
	  	     	 fd=new Food();
	  	     	 gp.tdStart();
	  	     	 getCmd();
	  	     	 
	  	      }
	  	      public void wt()
	  	      {
	  	     	
	  	      }
	  	      public void setPort(int newport)
	  	      {
	  	     	 this.gameport=newport;
	  	     	 
	  	      }
	  	      
	  	      public void getCmd()
	  	      {
	  	     	 
	  	     	 	  	     	 
	  	     	 String str=null;
	  	     	   
	  	     	 while(true) 
	  	     	 {
	  	     	   try
	  	     	   { 	  	     		   	  	     	       
	  	     	       str=inFromClient.readUTF();
	  	     	       System.out.println(str);
	  	     	   }
	  	     	   catch(Exception e)
	  	     	   {
	  	     		   e.printStackTrace();
	  	     	   }
	  	     	  
	  	     	   if(str!=null)
	  	     	   {
	  	     		   if(str.equals("%break%"))
	  	     		   {
	  	     			   try{
	  	     			   inFromClient.close();sk.close();
	  	     			   }
	  	     			   catch(IOException e)
	  	     			   {
	  	     				   e.printStackTrace();
	  	     			   }
	  	     			   break;
	  	     		   }
	  	     		  else cmd(str);          		   
	  	     	   }
	  	     	 } 
	  	          
	  	     	  
	  	      }
	  	      private void cmd(String str)
	  	      {
	  	     	  if(str.equals("%down%"))
	  	     	  {
	  	     		   ServerFrame.this.yoursnk.cmdDown();   
	  	     	  }
	  	     	  if(str.equals("%up%"))
	  	     	  {
	  	     		  ServerFrame.this.yoursnk.cmdUp();
	  	     	  }
	  	     	  if(str.equals("%left%"))
	  	     	  {
	  	     		  ServerFrame.this.yoursnk.cmdLeft();
	  	     	  }
	  	     	  if(str.equals("%right%"))
	  	     	  {
	  	     		  ServerFrame.this.yoursnk.cmdRight();
	  	     	  }
	  	     	  
	  	      }
	  	     
	  	      
	  	 }
	  	class Food 
	  	 {
	  	 	  int i;
	  	 	  int j;
	  	 	  int x;
	  	 	  int y;	  	 	 	  	 	  
	  	 	  Food()
	  	 	  {	  	 	    
	  	 	     Map map=new Map();
	  	 	     double e=10000*Math.random();
	  	 	     double f=10000*Math.random();
	  	 	     int a=(int)e;
	  	 	     int b=(int)f;	  	 	    
	  	 	     int i=a%35;
	  	 	     int j=b%20;
	  	 	     x=map.x[i];
	  	 	     y=map.y[j];
	  	 	     sender.sendCmd("%x%"+Integer.toString(x)+"%y%"+Integer.toString(y));	  	 	     
	  	 	  }	  
	  	 }
	  private class GamePanel extends JPanel implements Runnable
	  {        
	  	      Thread thread=new Thread(this); 
	  	       public YourSnake yoursnake;
	  	       public MySnake mysnake;
	  	      
	  	      GamePanel()
	  	      {              
             snk=new Snake(100,100);
             yoursnk=new Snake2(500,400);                                                    		  	      	    
	  	      }
	  	     private class YourSnake implements Runnable
	  	     {
	  	    	 Thread thread;
	  	    	 YourSnake()
	  	    	 {
	  	    		  thread=new Thread(this);
	  	    		 thread.start();
	  	    	 }
	  	    	 
	  	    	 public void run()
	  	    	 {
	  	    		while(true) 
		  	           {  
		  	           	 try
		  	           	 {thread.sleep(yoursnk.gamespeed);}
		  	           	 catch(InterruptedException e)
		  	           	 {
		  	           	    System.out.println(e);	
		  	           	 }
		  	           	 yoursnk.move();
		  	           	 
		  	           if(yoursnk.bd[0].x<0||yoursnk.bd[0].x>680||yoursnk.bd[0].y<0||yoursnk.bd[0].y>540)
		  	           	 {
			  	           	snk=new Snake(100,100);
		  	           	    yoursnk=new Snake2(500,400);
		  	           	    sender.sendCmd("%youdie%");
		  	           	    fd=new Food(); 
		  	           	 }
		  	           	 for(int i=1;i<yoursnk.length;i++)
		  	           	 {
		  	           	      if(yoursnk.bd[0].x==yoursnk.bd[i].x&&yoursnk.bd[0].y==yoursnk.bd[i].y)
		  	           	       { 
		  	           	    	 yoursnk=new Snake2(500,400);
		  	           	         fd=new Food();
		  	           	         sender.sendCmd("%youdie%");
		  	           	         snk=new Snake(100,100);  
		  	           	       }	
		  	           	 }
		  	           for(int i=0;i<snk.length;i++)
		  	           	 {
		  	           		  if(yoursnk.bd[0].x==snk.bd[i].x&&yoursnk.bd[0].y==snk.bd[i].y)
		  	           		  {
		  	           			  sender.sendCmd("%youdie%");
		  	           			  snk=new Snake(100,100);fd=new Food();yoursnk=new Snake2(500,400);
		  	           		  }
		  	           	 }
		  	           	 if(yoursnk.bd[0].x==fd.x&&snk.bd[0].y==fd.y)
		  	           	 {
		  	           		 yoursnk.eat();
		  	           	     fd=new Food();
		  	           	  }

⌨️ 快捷键说明

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