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

📄 peopleplayer.java

📁 java写的五子棋游戏
💻 JAVA
字号:
package like.wuziqi;

import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.event.ItemListener;
import java.util.EventListener;

public class PeoplePlayer  
{
	QiBan qb;
	
	//套接字(UDP)
	DatagramSocket ds;
	
	//发送IP
	String sendIP;
	
	//发送端口
	int sendPort = 3000;
	
	//是否已经连接
	boolean ifConnect;
	
	Thread connect,next;
	
	public PeoplePlayer(QiBan qb)
	{
		this.qb = qb;
		this.ifConnect = false;
		try
     	{
       		ds = new DatagramSocket(3000);
     	}
     	catch(Exception e)
     	{
     		e.printStackTrace();
     	}
     	this.connection();
	}
		
	//启动连接线程
	public void connection()
	{
		connect = new Thread(new Runnable()
		{
			public void run()
			{	
				while(!ifConnect)
				{	
					int i = receive();
				
					//请求游戏,你同意吗?
					if(i == -1)
					{
						int j = javax.swing.JOptionPane.showConfirmDialog(qb.game,"玩家"+sendIP+"请求与你联机,是否同意","联机对战",JOptionPane.YES_NO_OPTION);
						
						//同意回应并开始游戏
						if(j == javax.swing.JOptionPane.YES_OPTION)
						{
							qb.setIfBlack(true);
							qb.game.startGame2();
							send(-2);
							return;
						}
						
						//不同意回应
						else
						{
							send(-3);
						}
					}
					
					//对方同意开始游戏拉
					else if(i == -2)
					{
						//javax.swing.JOptionPane.showMessageDialog(qb.game,"对方同意开始游戏了:)","best wishs",javax.swing.JOptionPane.DEFAULT_OPTION);
						ifConnect = true;
						return;
					}
					
					//很遗憾,对方不想跟你玩
					else if(i == -3)
					{
						javax.swing.JOptionPane.showMessageDialog(qb.game,"对方不想跟你联机:)","很遗憾",javax.swing.JOptionPane.DEFAULT_OPTION);	
					}
					else
						System.out.println("wo na dao shu ju le");		
				}
			}
		});
		connect.start();	
	}
	
	//开始游戏
	public void start()
	{
		qb.setIfBlack(false);
		this.sendIP = JOptionPane.showInputDialog(this.qb.game,"输入连接方IP","联机对战",JOptionPane.YES_OPTION);
		this.send(-1);
		/*new Thread(new Runnable()
		{
			public void run()
			{
				for(int i=0;i<10;i++)
				{
					try
					{
						Thread.sleep(500);
					}
					catch(Exception e)
					{
						e.printStackTrace();
					}
					if(ifConnect)
					{
						qb.ifBlack = true;
						break;
					}
				}
				if(ifConnect==false)
					JOptionPane.showMessageDialog(qb.game,"连接失败","网络对战",JOptionPane.ERROR_MESSAGE);
			}
		}).start()*/;
	}
	
	//收发的数据是int型的
	public void send(int position)
	{
		String str = ""+position;
		try
		{
			DatagramPacket dpSend = new DatagramPacket(
   				str.getBytes(),str.getBytes().length,
   				InetAddress.getByName(this.sendIP),this.sendPort);
			ds.send(dpSend);
			System.out.println("发送到"+this.sendIP+":"+str);
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}
	}
	
	public int receive()
	{
		byte[] buf = new byte[4];
		DatagramPacket dpReceive = new DatagramPacket
			(buf,buf.length);
		try
		{
			ds.receive(dpReceive);
		}
		catch(Exception e)
		{
			if(ds.isClosed())
				return -3;
			e.printStackTrace();
		}
		
		sendIP = dpReceive.getAddress().getHostAddress();
		sendPort = dpReceive.getPort();
		//this.chatPanel.setIP(sendIP,name);
		String str = new String(buf,0,dpReceive.getLength());
		int i = Integer.parseInt(str);
		System.out.println("接收于"+sendIP+":"+i);
		return i; 
	}
	
	public void next()
	{
		next = null;
		next = new Thread(new Runnable()
		{
			public void run()
			{
				connect = null;
				if(qb.lastQiZi>-1)
					send(15*qb.qiZis[qb.lastQiZi].x+qb.qiZis[qb.lastQiZi].y);
				if(qb.gameOver)
				{
					connection();
					return;
				}
				int i = receive();
				qb.putDown(new ZuoBiao(i/15,i%15),!qb.ifBlack);
				qb.canPutBen = true;
				if(qb.gameOver)
				{
					connection();
					return;
				}
			}
		});
		next.start();
		
	}
	
	public void back()
	{
		
	}
	
	public void change()
	{
	}
	
	public void loss()
	{
	}
	
	public void qiuHe()
	{
	}
	
	public void exit()
	{
		
	}	
}

/*class MyPanel extends Panel implements ItemListener
{
	
	CheckboxGroup gp;
	Checkbox waitCbx,connectCbx;
	Label label;
	TextField IPText;
	
	public MyPanel()
	{
		gp = new CheckboxGroup();
		waitCbx = new Checkbox("等待另一方",true,gp);
		connectCbx = new Checkbox("连接到等待方",false,gp);
		waitCbx.addItemListener(this);
		connectCbx.addItemListener(this);
		label = new Label("输入等待方IP:");
		IPText = new TextField(15);
		IPText.setEditable(false);
		this.add(waitCbx);
		this.add(connectCbx);
		this.add(label);
		this.add(IPText);
		this.setSize(230,200);
		
	}
	
	public static void main(String [] args)
	{
		JFrame f = new JFrame("测试");
		f.setSize(400,400);
		f.setLayout(null);
		MyPanel m = new MyPanel();
		f.add(m);
		m.setLocation(50,50);
		f.setVisible(true);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JOptionPane.showConfirmDialog(f,m,"a",JOptionPane.YES_NO_OPTION);
	}

	public void itemStateChanged(ItemEvent e)
	{
		if(this.waitCbx.getState())
			this.IPText.setEditable(false);
		else
			this.IPText.setEditable(true);
	}
}*/

⌨️ 快捷键说明

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