📄 gamecontroler.java
字号:
import javax.swing.*;
public class GameControler
{
static GameFrame mainFrm;
static GamePane gamePane;
static Game game;
static GameThread gameThread;
public static boolean oneStart = false;
public static Object lockObject = new Object();
public static void getMainFrmInstance(GameFrame gf)
{
mainFrm = gf;
}
public static void getGamePaneInstance(GamePane gp)
{
gamePane = gp;
}
public static void getGameInstance(Game g)
{
game = g;
}
public static void getThreadInstance(GameThread gt)
{
gameThread = gt;
}
public static void showStateInfo(String str)
{
mainFrm.showStateInfo(str);
}
public static void addConnectListener()
{
mainFrm.addConnectListener();
}
public static void removeConnectListener()
{
mainFrm.removeConnectListener();
}
public static void addStartBtnListener()
{
mainFrm.addStartBtnListener();
}
public static void removeStartBtnListener()
{
mainFrm.removeStartBtnListener();
}
public static void addGamePaneListener()
{
mainFrm.addGamePaneListener();
}
public static void removeGamePaneListener()
{
mainFrm.removeGamePaneListener();
}
public static void start()
{
if(oneStart==false)
{
synchronized (lockObject)
{
oneStart = true;
}
showStateInfo("你选择了开始游戏.");
}
else
{
synchronized (lockObject)
{
oneStart = false;
}
game.InitGame();
gamePane.repaint();
//addGamePaneListener();
showStateInfo("游戏开始,对方先下!");
}
gameThread.writeData((byte)GameState.START);
}
public static void revStart()
{
if(oneStart==false)
{
synchronized (lockObject)
{
oneStart = true;
}
showStateInfo("对方已经开始游戏,你还不快开始!");
}
else
{
synchronized (lockObject)
{
oneStart = false;
}
game.InitGame();
gamePane.repaint();
addGamePaneListener();
showStateInfo("游戏开始,你先下!");
}
}
public static void revData(byte data)
{
int col = (int)(data & 0x0F);
int row = (int)(data>>4);
if(row<0) row+=16;
String str = "对方下子位置是(行 "+row+" , "+"列"+col+"),";
game.setBoardState(row, col, -1);
//gamePane.repaint();
gamePane.repaintCurPos();
int endtype = game.isGameEnd();
switch(endtype)
{
case -1://如果输了
str += "呜呜,我输了!";
addStartBtnListener();
break;
case 2:
str += "和棋!";
addStartBtnListener();
break;
/* case 1:
str += "哈哈,我赢了!";
addStartBtnListener();
break;
*/
case 0:
str += "轮到你下!";
addGamePaneListener();
break;
}
showStateInfo(str);
}
/*
* 3=连接
* 4=开始
* 5=结束
*/
public static void doProc(byte data)
{
switch(data)
{
case GameState.CONNECT://客户端连接成功
showStateInfo("与服务端连接成功!");
addStartBtnListener();
break;
case GameState.START://开始
revStart();
break;
case GameState.END://结束
break;
default://棋子的位置
revData(data);
}
}
public static void doProc(int row, int col)
{
if(game.getBoardState(row, col)!=0)
return;
removeGamePaneListener();
String str = "你下棋位置是(行"+row+" , "+"列"+col+"),";
game.setBoardState(row, col, 1);
//gamePane.repaint();
gamePane.repaintCurPos();
//赢了或且...
int endtype = game.isGameEnd();
switch(endtype)
{
/* case -1://如果输了
str += "呜呜,我输了!";
addStartBtnListener();
break;
*/
case 1:
str += "哈哈,我赢了!";
addStartBtnListener();
break;
case 2:
str += "和棋!";
addStartBtnListener();
break;
case 0:
str += "轮到对方下!";
break;
}
showStateInfo(str);
byte data=(byte)((row<<4)|col);
gameThread.writeData(data);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -