private void getSignedOutGame() { List <SqlParameter> spParams = new List <SqlParameter>(); spParams.Add(new SqlParameter("@gameName", searchText.Value)); spParams.Add(new SqlParameter("@stdName", searchText.Value)); DataSet ds = new DataSet(); ds = DBHelper.ExecuteBySPName("GameReturnSearch", spParams.ToArray()); GameReturn.DataSource = ds.Tables[0]; GameReturn.DataBind(); }
public static GameReturn GetReturnMessage(BattleGladiator gladiator, int turnCount) { var result = new GameReturn() { MailType = "gamereturn", GOneHealth = gladiator.Health.ToString(), GTwoHealth = gladiator.Health.ToString(), //Turn = "gladiatorOne", TurnCount = turnCount.ToString(), Winner = "None", Buffs = new List<string>() }; foreach (Buff buff in gladiator.Buffs) { result.Buffs.Add(buff.Name.ToLower()); } return result; }
public static ActorMeth GameManager(PID pid) { BattleGladiator gladiatorOne = new BattleGladiator(); gladiatorOne.Name = "gladiatorOne"; BattleGladiator gladiatorTwo = new BattleGladiator(); gladiatorTwo.Name = "gladiatorTwo"; int turnCount = 0; PID parent = pid; PID playerOne = new PID(); PID playerTwo = new PID(); bool isFinished = false; ActorMeth behaviour = (rt, self, _, msg) => { GameReturn pOneMsg = new GameReturn(); GameReturn pTwoMsg = new GameReturn(); switch (msg.mtype) { case Symbol.Init: playerOne = msg.content[0]; playerTwo = msg.content[1]; var startOneMsg = GameManagerService.GetStartMessage(gladiatorOne, gladiatorTwo, playerOne); GameManagerService.SendStartMessage(rt.GetWebSocket(playerOne), startOneMsg); var startTwoMsg = GameManagerService.GetStartMessage(gladiatorTwo, gladiatorOne, playerOne); GameManagerService.SendStartMessage(rt.GetWebSocket(playerTwo), startTwoMsg); break; case Symbol.GameAction: GameAction gAction = msg.content; var skills = new SkillRepository(); if ((turnCount & 1) == 0) // gladiator a { if (new PID(long.Parse(gAction.PId)).ToString() == playerOne.ToString()) { skills.UseSkill(gAction.Action, gladiatorOne, gladiatorTwo); //deactive then remove buff if the turns == zero if (gladiatorOne.Buffs.Count > 0) { foreach (Buff buff in gladiatorOne.Buffs) { buff.Turns--; if (buff.Turns <= 0) { buff.DeActivate(gladiatorOne); } } gladiatorOne.Buffs.RemoveAll(x => x.Turns <= 0); } } else { //send back msg to sync? } } else if ((turnCount & 1) != 0) // gladiator b { if (new PID(long.Parse(gAction.PId)).ToString() == playerTwo.ToString()) { skills.UseSkill(gAction.Action, gladiatorTwo, gladiatorOne); if (gladiatorTwo.Buffs.Count > 0) { foreach (Buff buff in gladiatorTwo.Buffs) { buff.Turns--; if (buff.Turns <= 0) { buff.DeActivate(gladiatorTwo); } } gladiatorTwo.Buffs.RemoveAll(x => x.Turns <= 0); } } else { //send back msg to sync? } } turnCount++; //send synced userdata back to user pOneMsg = GameManagerService.GetReturnMessage(gladiatorOne, turnCount); pTwoMsg = GameManagerService.GetReturnMessage(gladiatorTwo, turnCount); if ((turnCount & 1) == 0) { pOneMsg.Turn = playerOne.ToString(); pTwoMsg.Turn = playerOne.ToString(); pOneMsg.GOneHealth = gladiatorOne.Health.ToString(); pTwoMsg.GOneHealth = gladiatorTwo.Health.ToString(); pOneMsg.GTwoHealth = gladiatorTwo.Health.ToString(); pTwoMsg.GTwoHealth = gladiatorOne.Health.ToString(); } else if ((turnCount & 1) != 0) { pOneMsg.Turn = playerTwo.ToString(); pTwoMsg.Turn = playerTwo.ToString(); pOneMsg.GOneHealth = gladiatorOne.Health.ToString(); pTwoMsg.GOneHealth = gladiatorTwo.Health.ToString(); pOneMsg.GTwoHealth = gladiatorTwo.Health.ToString(); pTwoMsg.GTwoHealth = gladiatorOne.Health.ToString(); } if (!isFinished) { if (gladiatorOne.Health <= 0) { pOneMsg.Winner = gladiatorTwo.Name; pTwoMsg.Winner = gladiatorTwo.Name; isFinished = true; } if (gladiatorTwo.Health <= 0) { pOneMsg.Winner = gladiatorOne.Name; pTwoMsg.Winner = gladiatorOne.Name; isFinished = true; } } GameManagerService.SendReturnMessage(rt.GetWebSocket(playerOne), pOneMsg); GameManagerService.SendReturnMessage(rt.GetWebSocket(playerTwo), pTwoMsg); if (isFinished) { PID[] players = new PID[] { playerOne, playerTwo }; rt.Send(parent, new Mail(Symbol.Killed, players)); rt.Die(); } break; default: break; } return(null); }; return(behaviour); }
private GameReturn GameLoop(string gameName, bool displayBoard, NeuralNetwork a, NeuralNetwork b, Client cA, Client cB) { var checkCountA = 0; var moveCountA = 0; var totalTimeA = new Stopwatch(); var checkCountB = 0; var moveCountB = 0; var totalTimeB = new Stopwatch(); var gameEnded = false; var skipA = false; while (!gameEnded) { if (!skipA) { do { } while (!Board.PlayerOneTurn); totalTimeA.Start(); Console.Title = Board.FiftyMoveRule.ToString(); if (Board.FiftyMoveRule >= 50) { break; } var moveA = a.Output; var messageA = cA.SendMessage(Packet.Packets.Game, "MOVE", gameName, moveA.Item1.ToString(), moveA.Item2.ToString(), true.ToString()); if (messageA.Item1.Code == Packet.Packets.Error) { Console.WriteLine("[X:" + ((moveA.Item1 % 8) + 1) + " Y:" + (8 - (moveA.Item1 / 8)) + "](" + moveA.Item1 + ") -> " + "[X:" + ((moveA.Item2 % 8) + 1) + " Y:" + (8 - (moveA.Item2 / 8)) + "](" + moveA.Item2 + ") AI1"); gameEnded = !RefreshBoard(cA, gameName); if (displayBoard) { DrawBoard(); } continue; } _lastPlayerOneMove = moveA; totalTimeA.Stop(); //Thread.Sleep(1000); gameEnded = !RefreshBoard(cA, gameName); if (Board.CheckCheck(Board.WhiteColour)) { checkCountA++; } moveCountA++; if (displayBoard) { DrawBoard(); } } skipA = false; if (Board.CheckCheckMate(Board.WhiteColour) || Board.CheckCheckMate(Board.BlackColour)) { break; } if (gameEnded) { break; } do { } while (Board.PlayerOneTurn); totalTimeB.Start(); Console.Title = Board.FiftyMoveRule.ToString(); if (Board.FiftyMoveRule >= 50) { break; } var moveB = b.Output; var messageB = cB.SendMessage(Packet.Packets.Game, "MOVE", gameName, moveB.Item1.ToString(), moveB.Item2.ToString(), false.ToString()); if (messageB.Item1.Code == Packet.Packets.Error) { Console.WriteLine("[X:" + ((moveB.Item1 % 8) + 1) + " Y:" + (8 - (moveB.Item1 / 8)) + "](" + moveB.Item1 + ") -> " + "[X:" + ((moveB.Item2 % 8) + 1) + " Y:" + (8 - (moveB.Item2 / 8)) + "](" + moveB.Item2 + ") AI2"); gameEnded = !RefreshBoard(cA, gameName); skipA = true; if (displayBoard) { DrawBoard(); } continue; } _lastPlayerTwoMove = moveB; totalTimeB.Stop(); //Thread.Sleep(1000); gameEnded = !RefreshBoard(cB, gameName); if (Board.CheckCheck(Board.BlackColour)) { checkCountB++; } moveCountB++; if (displayBoard) { DrawBoard(); } } totalTimeA.Stop(); totalTimeB.Stop(); if (Board.PlayerOneTurn) { MovePiece(_lastPlayerOneMove.Item1, _lastPlayerOneMove.Item2); } else { MovePiece(_lastPlayerTwoMove.Item1, _lastPlayerTwoMove.Item2); } var returnInfo = new GameReturn { WhiteCheckMate = Board.CheckCheckMate(Board.BlackColour), BlackCheckMate = Board.CheckCheckMate(Board.WhiteColour), AmountCheckW = checkCountA, AmountCheckB = checkCountB, MoveCountW = moveCountA, MoveCountB = moveCountB, TotalTimeW = totalTimeA.ElapsedMilliseconds, TotalTimeB = totalTimeB.ElapsedMilliseconds, Draw = (Board.FiftyMoveRule >= 50) }; return(returnInfo); }
public static void SendReturnMessage(WebSocket socket, GameReturn msg) { string json = JsonSerializer.Serialize(msg); WebSocketClient.SendMessage(socket, json); }