package client.net;
import java.lang.reflect.InvocationTargetException;
import javax.swing.DefaultListModel;
import javax.swing.SwingUtilities;
import javax.swing.JOptionPane;
import client.data.Data;
import client.manager.IOManager;
import client.manager.ListManager;
import client.manager.MessageManager;
import client.ui.GameFrame;
import client.ui.ChessBoardCanvas;
public class Resolve {
/**
* 解析收到的数据
*/
String readLine;
// 登陆初始化
public void init(String _readLine) {
readLine = _readLine;
String s[] = readLine.split("-");
String name = s[1];
int id = Integer.parseInt(s[0]);
Data.myId = id;
Data.myName = name;
// 更新列表
IOManager.getInstance().getPs().println("LIST:");
}
// 游戏开始命令
public void start(String _readLine){
readLine = _readLine;
if(readLine.substring(0,5).equals("BLACK")){
Data.myChess = Data.BLACK;
Data.oppoChess = Data.WHITE;
Data.turn = Data.BLACK;
Data.started = true;
}
else{
if(readLine.substring(0,5).equals("WHITE")){
Data.myChess = Data.WHITE;
Data.oppoChess = Data.BLACK;
Data.turn = Data.BLACK;
Data.started = true;
}
}
}
// 游戏开始消息
public void startMessage(String _readLine) {
readLine = _readLine;
MessageManager.getInstance().addMessage(readLine);
}
// 落子
public void play(String _readLine){
readLine = _readLine;
int position = Integer.parseInt(readLine);
int chessY = position/15;
int chessX = position - chessY * 15;
new PlayChess().play(chessX, chessY, Data.oppoChess);
}
// 聊天
public void chat(String _readLine){
readLine = _readLine;
String s[] = readLine.split("&");
String message = s[0];
String who = s[1];
MessageManager.getInstance().addMessage(who + "说:" + message);
}
// 操作
public void operation(String _readLine){
readLine = _readLine;
// 悔棋操作
if(readLine.substring(0,5).equals("BACK:")){
Data.wait = false;
if(readLine.substring(5).substring(0,4).equals("ONE:")){
int position = Integer.parseInt(readLine.substring(9));
int y = position / 15;
int x = position - 15 * y;
// 更改棋权
if(Data.turn == Data.myChess){
Data.turn = Data.oppoChess;
MessageManager.getInstance().addMessage("等待对方落棋。。");
}
else{
if(Data.turn == Data.oppoChess){
Data.turn = Data.myChess;
MessageManager.getInstance().addMessage("请您落棋。。");
}
}
// 更新棋盘
Data.chessBoard[x][y] = 0;
ChessBoardCanvas mapCanvas = GameFrame.getInstance().getGamePanel().getMapCanvas();
mapCanvas.paintMapImage();
mapCanvas.repaint();
}
else{
String str = readLine.substring(9);
String [] s = str.split("&");
int position1 = Integer.parseInt(s[0]);
int position2 = Integer.parseInt(s[1]);
int y1 = position1 / 15;
int y2 = position2 / 15;
int x1 = position1 - y1 * 15;
int x2 = position2 - y2 * 15;
Data.chessBoard[x1][y1] = 0;
Data.chessBoard[x2][y2] = 0;
ChessBoardCanvas mapCanvas = GameFrame.getInstance().getGamePanel().getMapCanvas();
mapCanvas.paintMapImage();
mapCanvas.repaint();
}
}
// 对方逃跑
if(readLine.substring(0,5).equals("ESCA:")){
Data.oppoId = 0;
Data.started = false;
Data.ready = false;
Data.chessBoard = new int[15][15];
Data.last = -1;
Data.myChess = 0;
Data.oppoChess = 0;
ChessBoardCanvas mapCanvas = GameFrame.getInstance().getGamePanel().getMapCanvas();
mapCanvas.paintMapImage();
mapCanvas.repaint();
JOptionPane.showMessageDialog(null, "对方逃跑了...");
}
// 对方离开
if(readLine.substring(0,5).equals("QUIT:")){
Data.oppoId = 0;
Data.started = false;
Data.ready = false;
Data.chessBoard = new int[15][15];
Data.last = -1;
Data.myChess = 0;
Data.oppoChess = 0;
ChessBoardCanvas mapCanvas = GameFrame.getInstance().getGamePanel().getMapCanvas();
mapCanvas.paintMapImage();
mapCanvas.repaint();
MessageManager.getInstance().addMessage("对方离开了,你可以重新选择对手!");
}
// 收到挑战
if(readLine.substring(0, 5).equals("CHAL:")){
readLine = readLine.substring(5);
String [] s = readLine.split("-");
int from = Integer.parseInt(s[0]);
int value = JOptionPane.showConfirmDialog(null,"玩家“" + readLine +
"”挑逗你,是否接招?" ,"收到挑战",JOptionPane.YES_NO_OPTION);
// 接受挑战
if(value == JOptionPane.YES_OPTION){
IOManager.getInstance().getPs().println("REPL:CHAL:" + from + "&YES");
Data.oppoId = from;
GameFrame.getInstance().getFunctionPanel().getPlayerPanel().getOpponentInfo().setText("目前对手:" + readLine);
JOptionPane.showMessageDialog(null, "您接受了对方的挑战,请按“开始”按钮开始游戏!");
MessageManager.getInstance().addMessage("您接受了对方的挑战,请按“开始”按钮开始游戏。");
}
// 拒绝挑战
else{
IOManager.getInstance().getPs().println("REPL:CHAL:" + from + "&NO");
JOptionPane.showMessageDialog(null, "你真怂!");
MessageManager.getInstance().addMessage("怂B。。。");
}
}
}
// 回复
public void reply(String _readLine){
readLine = _readLine;
// 悔棋回复
if(readLine.substring(0,5).equals("BACK:")){
MessageManager.getInstance().addMessage("对方拒绝悔棋!");
Data.wait = false;
}
// 挑战回复
if(readLine.substring(0, 5).equals("CHAL:")){
readLine = readLine.substring(5);
String s [] = readLine.split("&");
String challenged = s[0];
String result = s[1];
// 对方接受挑战
if(result.equals("YES")){
String s2 [] = challenged.split("-");
int uid = Integer.parseInt(s2[0]);
JOptionPane.showMessageDialog(null, "玩家“" + challenged + "”接受了您的挑战,请按“开始”按钮开始游戏!");
// 设置对手id
Data.oppoId = uid;
// 设置对手状态栏信息
GameFrame.getInstance().getFunctionPanel().getPlayerPanel().getOpponentInfo().setText("目前对手:" + challenged);
MessageManager.getInstance().addMessage("对方接受了您的挑战,请按“开始”按钮开始游戏。");
}
// 对方拒绝挑战
if(result.equals("NO")){
JOptionPane.showMessageDialog(null, "玩家“" + challenged + "”怂了...不敢接受挑战...");
}
}
}
// 添加玩家
public void addList(String _readLine) {
readLine = _readLine;
try {
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
ListManager.getInstance().addPlayer(readLine);
}
});
} catch (InterruptedException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
// 删除玩家
public void delList(String _readLine) {
readLine = _readLine;
try {
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
ListManager.getInstance().removePlayer(readLine);
}
});
} catch (InterruptedException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
// 更新列表
public void updateList(String _readLine) {
readLine = _readLine;
try {
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
ListManager.getInstance().clearList();
String [] s = readLine.split("&");
for(int i = 0 ; i < s.length; i ++){
ListManager.getInstance().addPlayer(s[i]);
}
}
});
} catch (InterruptedException e) {
e.printStackTrace();
} catch (InvocationTargetE
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
基于java socket网络编程实现的五子棋游戏,可多人在线玩耍,聊天 (106个子文件)
Action.class 9KB
Resolve.class 8KB
FightManager.class 5KB
ChessBoardCanvas.class 4KB
Resolve.class 3KB
HashMapManager.class 3KB
ServerFrame.class 3KB
Receive.class 3KB
GamePanel.class 3KB
MatchsPanel.class 3KB
PlayerPanel.class 2KB
ListListener.class 2KB
QuitListener.class 2KB
Connect.class 2KB
MapListener.class 2KB
ServerThread.class 2KB
ClientPanel.class 2KB
ChallengeListener.class 2KB
EndDeal.class 2KB
Player.class 2KB
ListManager.class 2KB
PlayChess.class 2KB
MessageListener.class 2KB
ConnectListener.class 2KB
NameListener.class 2KB
GameFrame.class 2KB
RestartListener.class 2KB
FunctionPanel.class 1KB
MessagePanel.class 1KB
MessageManager.class 1KB
StartListener.class 1KB
MessageManager.class 1KB
IOManager.class 1KB
BackListener.class 1KB
OperationPanel.class 1KB
Resolve$3.class 986B
Data.class 855B
Check.class 844B
CheckN.class 747B
CheckM.class 747B
Resolve$2.class 741B
Resolve$1.class 738B
CheckX.class 724B
CheckY.class 723B
MessagePanel.class 571B
QuinterGame.class 499B
Server.class 488B
.classpath 301B
Resolve.java 9KB
Action.java 8KB
FightManager.java 5KB
ChessBoardCanvas.java 4KB
Resolve.java 3KB
Receive.java 3KB
MapListener.java 3KB
GamePanel.java 2KB
HashMapManager.java 2KB
PlayerPanel.java 2KB
ServerFrame.java 2KB
QuitListener.java 2KB
MatchsPanel.java 2KB
ClientPanel.java 1KB
ListListener.java 1KB
EndDeal.java 1KB
PlayChess.java 1KB
ChallengeListener.java 1KB
ListManager.java 1KB
Connect.java 1KB
Player.java 1KB
ServerThread.java 1KB
GameFrame.java 1KB
FunctionPanel.java 1014B
RestartListener.java 1008B
NameListener.java 985B
MessagePanel.java 977B
StartListener.java 899B
ConnectListener.java 875B
OperationPanel.java 837B
MessageListener.java 814B
IOManager.java 752B
CheckM.java 729B
CheckN.java 727B
CheckY.java 683B
CheckX.java 681B
MessageManager.java 673B
Data.java 661B
MessageManager.java 626B
BackListener.java 568B
Check.java 550B
MessagePanel.java 307B
QuinterGame.java 222B
Server.java 202B
map.png 375KB
map.png 375KB
black.png 2KB
black.png 2KB
black2.png 2KB
black2.png 2KB
white.png 1KB
white.png 1KB
共 106 条
- 1
- 2
weixin_45586538
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0