//拒绝悔棋 public void DisAgree() { //发送回答 Hashtable values = new Hashtable(); values.Add("name", "piece"); values.Add("FromX", -1); values.Add("FromY", -1); values.Add("ToX", -1); values.Add("ToY", -1); values.Add("Move", "str"); values.Add("YidongOrChizi", "YidongOrChizi"); values.Add("Regame", 0); values.Add("GoBack", 0);//申请悔棋,0不申请不同意,1申请,2同意 GobangClient.send(GameSerialize.toBytes(values)); gameObject.transform.parent.gameObject.SetActive(false); //拒绝悔棋开始计时 TimeManager TM; GameObject obj = GameObject.Find("Timer") as GameObject; TM = obj.GetComponent <TimeManager>(); TM.bStartCul = true; }
// 匹配成功时,自动调用 onResync 方法 protected override void onResync(byte fromIndex) { // 同步玩家的 名字 { Debug.Log(GameManager.nickname); // 交换名字,头像,握手 { Hashtable values = new Hashtable(); values.Add("name", "handshake"); values.Add("v", GameManager.nickname); values.Add("ImgStr", HeadManager.ImgStr); GobangClient.send(GameSerialize.toBytes(values)); } // 先进入房间的玩家 为红方 string chess = ""; if (getInt("client-index") == 0) { chess = "红方"; } else { chess = "黑方"; } GameObject Player = GameObject.Find("PlayerName"); UILabel label = Player.GetComponent <UILabel>(); label.text = GameManager.nickname + " (" + chess + ")"; } }
//同意悔棋 public void Agree() { //发送回答 Hashtable values = new Hashtable(); values.Add("name", "piece"); values.Add("FromX", -1); values.Add("FromY", -1); values.Add("ToX", -1); values.Add("ToY", -1); values.Add("Move", "str"); values.Add("YidongOrChizi", "YidongOrChizi"); values.Add("Regame", 0); values.Add("GoBack", 2);//申请悔棋,0不申请不同意,1申请,2同意 // 悔棋后,切换回合 if (GameManager.curTurn == "Red") { GameManager.curTurn = "Black"; } else { GameManager.curTurn = "Red"; } GobangClient.send(GameSerialize.toBytes(values)); CC.IloveHUIQI(); gameObject.transform.parent.gameObject.SetActive(false); //同意悔棋重置计时 TimeManager TM; GameObject obj = GameObject.Find("Timer") as GameObject; TM = obj.GetComponent <TimeManager>(); TM.bStartCul = true; TM.Timer.value = 1; }
void Start() { ui = GameObject.Find("UI"); myClient = new GobangClient(); // 天梯实时对战服务 初始化 // init(),第一个参数为 appKey。 // appKey 可以直接在后台创建。 GobangClient.init("acd17643930c7363", 2); // 配置 GobangClient.config("debug-level", "7"); // 可以隐藏 玩家输入名字+登录 界面,直接匹配 // GobangClient.connect(8); // 如果存储的名字不存在,弹出输入昵称UI // 有昵称时,直接匹配 string nickname = PlayerPrefs.GetString("nickname"); if (nickname == "") { GameObject mainObj = ui.transform.Find("Main").gameObject; mainObj.SetActive(true); } else { // 赋值 GameManager 昵称 GameManager.nickname = nickname; // 有昵称时,直接匹配 GobangClient.connect(8); } }
public void onButtonClick(string name) { if (name == "") { return; } GameObject mainObj = ui.transform.Find("Main").gameObject; switch (name) { case "level": // 昵称不能为空 GameObject textObj = mainObj.transform.Find("InputField/Text").gameObject; GameObject errorTipObj = mainObj.transform.Find("ErrorTip").gameObject; string nickname = textObj.GetComponent <Text> ().text; if (nickname == "") { errorTipObj.SetActive(true); return; } GameManager.nickname = nickname; // 记录 nickname PlayerPrefs.SetString("nickname", nickname); errorTipObj.SetActive(false); mainObj.SetActive(false); // 等级匹配 GobangClient.connect(8); break; case "retry": //GobangClient.disconnect (); GameObject start = GameObject.Find("Start") as GameObject; ReGame RG = start.GetComponent <ReGame>(); RG.ChessPostion(); // 结果通知给对方 Hashtable values = new Hashtable(); values.Add("name", "piece"); values.Add("FromX", -1); values.Add("FromY", -1); values.Add("ToX", -1); values.Add("ToY", -1); values.Add("Move", "红方走"); values.Add("YidongOrChizi", "Yidong"); values.Add("Regame", 1); values.Add("GoBack", 0); GobangClient.send(GameSerialize.toBytes(values)); GameObject resultObj = ui.transform.Find("Result").gameObject; resultObj.SetActive(false); break; } }
// public void updateChess() { // 胜利 if (blackclick.str == "红色方胜利" || blackclick.str == "黑色方胜利") { // 结果通知给对方 Hashtable values = new Hashtable(); values.Add("name", "lose"); values.Add("v", (byte)1); GobangClient.send(GameSerialize.toBytes(values)); // UI GameObject ui = GameObject.Find("UI"); GameObject resultObj = ui.transform.Find("Result").gameObject; GameObject gameoverObj = resultObj.transform.Find("GameOver").gameObject; gameoverObj.GetComponentInChildren <Text>().text = "完胜"; TM.bStartCul = false; TM.Timer.value = 1; resultObj.SetActive(true); } // 超时失败 if (TM.bGameOver) { // 结果通知给对方 Hashtable values = new Hashtable(); values.Add("name", "lose"); values.Add("v", (byte)2); GobangClient.send(GameSerialize.toBytes(values)); // UI GameObject ui = GameObject.Find("UI"); GameObject resultObj = ui.transform.Find("Result").gameObject; GameObject gameoverObj = resultObj.transform.Find("GameOver").gameObject; gameoverObj.GetComponentInChildren <Text>().text = "超时失败"; TM.bStartCul = false; TM.Timer.value = 1; resultObj.SetActive(true); } }
public void RequestGoBack() { //己方落子对方未落子时可以申请悔棋 if (GameManager.curTurn != GameManager.userColor) { //发送请求 Hashtable values = new Hashtable(); values.Add("name", "piece"); values.Add("FromX", -1); values.Add("FromY", -1); values.Add("ToX", -1); values.Add("ToY", -1); values.Add("Move", "str"); values.Add("YidongOrChizi", "YidongOrChizi"); values.Add("Regame", 0); values.Add("GoBack", 1);//申请悔棋,0不申请不同意,1申请,2同意 Label.gameObject.SetActive(true); Label.text = "对方考虑中..."; GobangClient.send(GameSerialize.toBytes(values)); } }
public void SendMoveMessage(int x1, int y1, int x2, int y2) { //停止计时 TM.StopTime(); YidongOrChizi = "Yidong"; if ((GameManager.curTurn == GameManager.userColor) && TrueOrFalse) { // 发送消息通知对手,落子位置 { KingPosition.JiangJunCheck(); Hashtable values = new Hashtable(); values.Add("name", "piece"); values.Add("FromX", x1); values.Add("FromY", y1); values.Add("ToX", x2); values.Add("ToY", y2); values.Add("Move", str); values.Add("YidongOrChizi", YidongOrChizi); values.Add("Regame", 0); values.Add("GoBack", 0); GobangClient.send(GameSerialize.toBytes(values)); } //检查游戏是否结束 Game.updateChess(); // 落子后,切换回合 if (GameManager.curTurn == "Red") { GameManager.curTurn = "Black"; } else { GameManager.curTurn = "Red"; } } }
public void IsClickCheck() { if (TrueOrFalse == false) { return; } if (!bIsOnline) { GameObject obj = UICamera.hoveredObject; BlackNameOrRedName(obj);//是否点击到棋子 如果是 就得到棋子 if (obj.name.Substring(0, 1) != "i") { obj = obj.gameObject.transform.parent.gameObject;//得到他的父容器 } int x = System.Convert.ToInt32((obj.transform.localPosition.x + 263) / 195); int y = System.Convert.ToInt32(Mathf.Abs((obj.transform.localPosition.y - 302) / 192)); int Result = IsBlackOrRed(x, y);//判断点击到了什么 switch (Result) { case 0: //点击到了空 是否要走棋 //如果点击到了空格 就把对象清空 for (int i = 1; i <= 90; i++) { GameObject Clear = GameObject.Find("prefabs" + i.ToString()); Destroy(Clear); } ToY = y; ToX = x; if (ChessMove) { //红色走 if (RedName == null) { return; } string sssRed = RedName; //记录红色棋子的名字 bool ba = rules.IsValidMove(Board.chess, FromX, FromY, ToX, ToY); if (!ba) { return; } int a = Board.chess[FromY, FromX]; int b = Board.chess[ToY, ToX]; chzh.AddChess(ChessChongzhi.Count, FromX, FromY, ToX, ToY, true, a, b); str = "黑方走"; IsMove(RedName, obj, FromX, FromY, ToX, ToY); //走了 KingPosition.JiangJunCheck(); ChessMove = false; //getString(); if (str == "红色棋子胜利") { return; //因为没有携程关系 每次进入黑色走棋的时候都判断 棋局是否结束 } BlackName = null; RedName = null; return; //执行走棋 } else { //黑色走 if (BlackName == null) { return; } bool ba = rules.IsValidMove(Board.chess, FromX, FromY, ToX, ToY); if (!ba) { return; } //ChessChongzhi chzh = new ChessChongzhi(); int a = Board.chess[FromY, FromX]; int b = Board.chess[ToY, ToX]; chzh.AddChess(ChessChongzhi.Count, FromX, FromY, ToX, ToY, true, a, b); str = "红方走"; IsMove(BlackName, obj, FromX, FromY, ToX, ToY); //黑色走棋 ChessMove = true; KingPosition.JiangJunCheck(); } break; case 1: //点击到了黑色 是否选中 还是 红色要吃子 if (!ChessMove) { FromX = x; FromY = y; for (int i = 1; i <= 90; i++) { GameObject Clear = GameObject.Find("prefabs" + i.ToString()); Destroy(Clear); } can.ClickChess(FromX, FromY); } else { for (int i = 1; i <= 90; i++) { GameObject Clear = GameObject.Find("prefabs" + i.ToString()); Destroy(Clear); } if (RedName == null) { return; } ToX = x; ToY = y; bool ba = rules.IsValidMove(Board.chess, FromX, FromY, ToX, ToY); if (!ba) { return; } int a = Board.chess[FromY, FromX]; int b = Board.chess[ToY, ToX]; chzh.AddChess(ChessChongzhi.Count, FromX, FromY, ToX, ToY, true, a, b); //看看是否能播放音乐 IsEat(RedName, BlackName, FromX, FromY, ToX, ToY); ChessMove = false; //红色吃子 变黑色走 str = "黑方走"; KingPosition.JiangJunCheck(); if (str == "红色棋子胜利") { return; //因为没有携程关系 每次进入黑色走棋的时候都判断 棋局是否结束 } RedName = null; BlackName = null; return; } break; case 2: //点击到了红色 是否选中 还是黑色要吃子 if (ChessMove) { FromX = x; FromY = y; for (int i = 1; i <= 90; i++) { GameObject Clear = GameObject.Find("prefabs" + i.ToString()); Destroy(Clear); } can.ClickChess(FromX, FromY); } else { for (int i = 1; i <= 90; i++) { GameObject Clear = GameObject.Find("prefabs" + i.ToString()); Destroy(Clear); } if (BlackName == null) { return; } ToX = x; ToY = y; bool ba = rules.IsValidMove(Board.chess, FromX, FromY, ToX, ToY); if (!ba) { return; } //ChessChongzhi chzh = new ChessChongzhi(); int a = Board.chess[FromY, FromX]; int b = Board.chess[ToY, ToX]; chzh.AddChess(ChessChongzhi.Count, FromX, FromY, ToX, ToY, true, a, b); //看看是否能播放音乐 IsEat(BlackName, RedName, FromX, FromY, ToX, ToY); RedName = null; BlackName = null; ChessMove = true; str = "红方走"; KingPosition.JiangJunCheck(); } break; } } else { if (!GobangClient.isConnected()) { return; } if ((GameManager.curTurn == GameManager.userColor) && TrueOrFalse) { GameObject obj = UICamera.hoveredObject; BlackNameOrRedName(obj);//是否点击到棋子 如果是 就得到棋子 if (obj.name.Substring(0, 1) != "i") { obj = obj.gameObject.transform.parent.gameObject;//得到他的父容器 } int x = System.Convert.ToInt32((obj.transform.localPosition.x + 263) / 195); int y = System.Convert.ToInt32(Mathf.Abs((obj.transform.localPosition.y - 302) / 192)); int Result = IsBlackOrRed(x, y);//判断点击到了什么 switch (Result) { case 0: //点击到了空 是否要走棋 //如果点击到了空格 就把对象清空 for (int i = 1; i <= 90; i++) { GameObject Clear = GameObject.Find("prefabs" + i.ToString()); Destroy(Clear); } ToY = y; ToX = x; if (ChessMove) { //红色走 if (RedName == null) { return; } string sssRed = RedName; //记录红色棋子的名字 bool ba = rules.IsValidMove(Board.chess, FromX, FromY, ToX, ToY); if (!ba) { return; } int a = Board.chess[FromY, FromX]; int b = Board.chess[ToY, ToX]; chzh.AddChess(ChessChongzhi.Count, FromX, FromY, ToX, ToY, true, a, b); str = "黑方走"; IsMove(RedName, obj, FromX, FromY, ToX, ToY); //走了 KingPosition.JiangJunCheck(); ChessMove = false; //getString(); if (str == "红色棋子胜利") { return; //因为没有携程关系 每次进入黑色走棋的时候都判断 棋局是否结束 } BlackName = null; RedName = null; SendMoveMessage(FromX, FromY, ToX, ToY); return; //执行走棋 } else { //黑色走 if (BlackName == null) { return; } bool ba = rules.IsValidMove(Board.chess, FromX, FromY, ToX, ToY); if (!ba) { return; } //ChessChongzhi chzh = new ChessChongzhi(); int a = Board.chess[FromY, FromX]; int b = Board.chess[ToY, ToX]; chzh.AddChess(ChessChongzhi.Count, FromX, FromY, ToX, ToY, true, a, b); str = "红方走"; IsMove(BlackName, obj, FromX, FromY, ToX, ToY); //黑色走棋 ChessMove = true; KingPosition.JiangJunCheck(); SendMoveMessage(FromX, FromY, ToX, ToY); } break; case 1: //点击到了黑色 是否选中 还是 红色要吃子 if (!ChessMove) { FromX = x; FromY = y; for (int i = 1; i <= 90; i++) { GameObject Clear = GameObject.Find("prefabs" + i.ToString()); Destroy(Clear); } can.ClickChess(FromX, FromY); } else { for (int i = 1; i <= 90; i++) { GameObject Clear = GameObject.Find("prefabs" + i.ToString()); Destroy(Clear); } if (RedName == null) { return; } ToX = x; ToY = y; bool ba = rules.IsValidMove(Board.chess, FromX, FromY, ToX, ToY); if (!ba) { return; } int a = Board.chess[FromY, FromX]; int b = Board.chess[ToY, ToX]; chzh.AddChess(ChessChongzhi.Count, FromX, FromY, ToX, ToY, true, a, b); //红色吃子 变黑色走 str = "黑方走"; IsEat(RedName, BlackName, FromX, FromY, ToX, ToY); ChessMove = false; KingPosition.JiangJunCheck(); if (str == "红色棋子胜利") { return; //因为没有携程关系 每次进入黑色走棋的时候都判断 棋局是否结束 } RedName = null; BlackName = null; SendEatMessage(FromX, FromY, ToX, ToY); return; } break; case 2: //点击到了红色 是否选中 还是黑色要吃子 if (ChessMove) { FromX = x; FromY = y; for (int i = 1; i <= 90; i++) { GameObject Clear = GameObject.Find("prefabs" + i.ToString()); Destroy(Clear); } can.ClickChess(FromX, FromY); } else { for (int i = 1; i <= 90; i++) { GameObject Clear = GameObject.Find("prefabs" + i.ToString()); Destroy(Clear); } if (BlackName == null) { return; } ToX = x; ToY = y; bool ba = rules.IsValidMove(Board.chess, FromX, FromY, ToX, ToY); if (!ba) { return; } //ChessChongzhi chzh = new ChessChongzhi(); int a = Board.chess[FromY, FromX]; int b = Board.chess[ToY, ToX]; chzh.AddChess(ChessChongzhi.Count, FromX, FromY, ToX, ToY, true, a, b); str = "红方走"; IsEat(BlackName, RedName, FromX, FromY, ToX, ToY); RedName = null; BlackName = null; ChessMove = true; KingPosition.JiangJunCheck(); SendEatMessage(FromX, FromY, ToX, ToY); } break; } } } }