📄 peopleplayer.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 + -