public static bool StartAIEngine(GameDV game, UserDV user, DeskData data) { if (InProgress.Keys.Any(x => x.GameId == game.GameId)) { return(false); } InProgress.TryAdd(game, 0); Task.Run(new Action(() => { try { Solver solver = new Solver(); PointData pd = solver.GetNextMove(data); JsonPlayRequest request = new JsonPlayRequest(); request.gameToken = game.GameToken; request.userToken = user.Token; request.positionX = pd.X; request.positionY = pd.Y; JsonCommunication.Play(request); // ignore response int outval; InProgress.TryRemove(game, out outval); } catch (Exception ex) { int outval; InProgress.TryRemove(game, out outval); } })); return(true); }
private void UcDesk_PointClicked(int x, int y) { if (DataContext is Data data) { try { if (data.AutomaticMode) { return; } UserDV user = data.UsersPanelDV.UserListDV.SelectedUser; GameDV game = user.SelectedGame; JsonPlayRequest request = new JsonPlayRequest(); request.gameToken = game.GameToken; request.userToken = user.Token; request.positionX = x; request.positionY = y; JsonCommunication.Play(request); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } }
private BulkSolveDataItem CreateGame() { if (DataContext is Data data) { UserDV selectedUser = data.UsersPanelDV.UserListDV.SelectedUser; if (selectedUser == null) { return(null); } JsonConnectRequest request = new JsonConnectRequest(); request.userToken = selectedUser.Token; JsonConnectResponse response = JsonCommunication.Connect(request); GameDV game = new GameDV(); game.GameId = response.gameId; game.GameToken = response.gameToken; if (!selectedUser.Games.Any(x => x.GameId == game.GameId)) { selectedUser.Games.Add(game); } BulkSolveDataItem bsdi = new BulkSolveDataItem(); bsdi.DeskData = new DeskData(); bsdi.DeskData.SquareSize = 5; bsdi.Game = game; bsdi.User = selectedUser; return(bsdi); } return(null); }
private void Button_Click_1(object sender, RoutedEventArgs e) { if (DataContext is Data data) { try { UserDV user = data.UsersPanelDV.UserListDV.SelectedUser; GameDV game = user.SelectedGame; AIEngine.StartAIEngine(game, user, data.DeskData); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } }
private void ShowSelectedGame() { try { if (DataContext is Data data) { foreach (var bsdi in data.BulkSolveData.Data) { Task.Run(() => { UserDV user = bsdi.User; GameDV game = bsdi.Game; if (game == null) { return; } JsonCheckStatusRequest checkStatusRequest = new JsonCheckStatusRequest(); checkStatusRequest.userToken = user.Token; checkStatusRequest.gameToken = game.GameToken; JsonCheckStatusResponse response = JsonCommunication.CheckStatus(checkStatusRequest); if (response.winnerId != null) { DeskData dd = bsdi.DeskData.Copy(); if (response.winnerId == user.Id) { dd.Winner = user.Nickname; } else { dd.Winner = "Opponent"; } bsdi.DeskData = dd; } else { DeskData dd = new DeskData(); bool isMyTurn = user.Id == response.actualPlayerId; ESymbol mySymbol; if (isMyTurn) { mySymbol = response.actualPlayerId == response.playerCircleId ? ESymbol.Circle : ESymbol.Cross; } else { mySymbol = response.actualPlayerId == response.playerCircleId ? ESymbol.Cross : ESymbol.Circle; } dd.SquareSize = 5; dd.Fill(response, mySymbol, isMyTurn); bsdi.DeskData = dd; if (isMyTurn) { AIEngine.StartAIEngine(game, user, dd); } } }); } } } catch (Exception ex) { } }
private void Play() { try { if (DataContext is Data data) { foreach (var d in data.BulkSolveData.Data) { if (d.DeskData.Winner != null) { if (RemoveCounter.ContainsKey(d)) { RemoveCounter[d]++; } else { RemoveCounter.Add(d, 0); } if (RemoveCounter[d] >= 5) { data.BulkSolveData.Data.Remove(d); RemoveCounter.Remove(d); } } } if (!stop) { while (data.BulkSolveData.Data.Count < 24) { BulkSolveDataItem bsdi = CreateGame(); data.BulkSolveData.Data.Add(bsdi); } } foreach (var item in data.BulkSolveData.Data) { Task.Run(() => { try { UserDV user = item.User; GameDV game = item.Game; if (game == null) { return; } JsonCheckStatusRequest checkStatusRequest = new JsonCheckStatusRequest(); checkStatusRequest.userToken = user.Token; checkStatusRequest.gameToken = game.GameToken; JsonCheckStatusResponse response = JsonCommunication.CheckStatus(checkStatusRequest); if (response.winnerId != null) { DeskData dd = item.DeskData.Copy(); if (response.winnerId == user.Id) { dd.Winner = user.Nickname; } else { dd.Winner = "Opponent"; } item.DeskData = dd; } else { DeskData dd = new DeskData(); bool isMyTurn = user.Id == response.actualPlayerId; ESymbol mySymbol; if (isMyTurn) { mySymbol = response.actualPlayerId == response.playerCircleId ? ESymbol.Circle : ESymbol.Cross; } else { mySymbol = response.actualPlayerId == response.playerCircleId ? ESymbol.Cross : ESymbol.Circle; } dd.SquareSize = 5; dd.Fill(response, mySymbol, isMyTurn); item.DeskData = dd; if (isMyTurn) { AIEngine.StartAIEngine(game, user, dd); } } } catch (Exception ex) { } }); } } } catch (Exception ex) { } }