private Style GetEllipseStyle(int i) { if (FirstRow(i)) { return(gameUserControl.FindResource("EllipsePlayer1") as Style); } else if (LastRow(i)) { return(gameUserControl.FindResource("EllipsePlayer2") as Style); } else { return(gameUserControl.FindResource("EllipseNeutron") as Style); } }
public void HandleTokenClick(object sender) { if (sender is Button) { if (IllegalMove(sender)) { return; } UpdateEnumBoard(sender); SetGameVar(); enumMoveDirection = GetMoveDirection(sender); new MoveToken(sender, ellipseSelected, enumMoveDirection); SetLabelsColor(); SetAllButtonsStyleToDefault(); CheckEndGame(); if (ai && !player1Turn && !neutronMoved) { for (int i = 0; i < 5; i++) { Ellipse tokenNeutron; // Display neutron available for (int j = 0; j < 5; j++) { if (enumBoard[j, i] == EnumBoard.NeutronToken) { tokenNeutron = GameUserControl.Instance.GameBoard.Children .OfType <Ellipse>() .Where(e => Grid.GetColumn(e) == j && Grid.GetRow(e) == i) .FirstOrDefault(); SetAllButtonsStyleToDefault(); ellipseSelected = tokenNeutron; DisplayPieceSelected(); break; } } } // move the neutron byte index = 0; List <int> numberOfAvailableMove = new List <int>(); foreach (var item in gameUserControl.GameBoard.Children.OfType <Button>()) { if (item.Style == gameUserControl.FindResource("SelectedButton") as Style) { // AI can Win if (Grid.GetRow(item) == 4) { HandleTokenClick(item); return; } numberOfAvailableMove.Add(index); } index++; } for (int i = 0; i < numberOfAvailableMove.Count; i++) { // remove sucidal play if (numberOfAvailableMove[i] < 5) { numberOfAvailableMove.Remove(numberOfAvailableMove[i]); break; } } // play the neutron randomly Random random = new Random(); int indexMove = random.Next(0, numberOfAvailableMove.Count); index = 0; foreach (var item in gameUserControl.GameBoard.Children.OfType <Button>()) { if (index == numberOfAvailableMove[indexMove]) { HandleTokenClick(item); break; } index++; } // selected a random token from player2 index = 0; Random random2 = new Random(); int indexMove2 = random.Next(0, 4); foreach (var item in gameUserControl.GameBoard.Children.OfType <Ellipse>()) { if (item.Style == gameUserControl.FindResource("EllipsePlayer2") as Style) { if (index == indexMove2) { HandleTokenClick(item); } index++; } } // populate the random list of move for the token index = 0; List <int> numberOfAvailableMove2 = new List <int>(); foreach (var item in gameUserControl.GameBoard.Children.OfType <Button>()) { if (item.Style == gameUserControl.FindResource("SelectedButton") as Style) { numberOfAvailableMove2.Add(index); } index++; } // play the token randomly Random random3 = new Random(); int indexMove3 = random.Next(0, numberOfAvailableMove2.Count); index = 0; foreach (var item in gameUserControl.GameBoard.Children.OfType <Button>()) { if (index == numberOfAvailableMove2[indexMove3]) { HandleTokenClick(item); break; } index++; } } } else if (sender is Ellipse) { if (Player1SelectPlayer2Token(sender) || Player2SelectPlayer1Token(sender)) { return; } if (NeutronMovedAndEllipseIsNotNeutron(sender) || NeutronNotMovedAndEllipseIsNeutron(sender)) { SetAllButtonsStyleToDefault(); gameTimer.StartTimer(); ellipseSelected = sender as Ellipse; DisplayPieceSelected(); } } }