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

📄 gamecontroler.java

📁 一个CS模式的网络五子棋游戏,用JAVA写的,源码版式不好,也共享出来,希望大家看后给些编程方面意见或建议.
💻 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 + -