public void UpdateMovePreview(int column) { if (Game.Finished || GetCurrentPlayerType == PlayerType.Computer) { return; } var row = GetEmptyRowIndex(column); if (row == -1) { return; } if (Preview == null) { Preview = new ChipViewModel(); Chips.Add(Preview); } var previewChip = Preview.Chip; previewChip.Column = column; previewChip.Row = row; previewChip.Player = Game.CurrentPlayer; }
/// <summary> /// Perform a move for the <see cref="Game.CurrentPlayer"/> /// </summary> /// <param name="column">Index between 0 (inclusive) and <see cref="Game.COLUMNS"/>(exlusive)</param> private void DoMove(int column) { if (Game.Finished) { return; } var row = GetEmptyRowIndex(column); if (row == -1) { return; } Game.Board[column, row] = Game.CurrentPlayer; if (Preview == null) { Preview = new ChipViewModel(); Chips.Add(Preview); } var chip = Preview.Chip; chip.Row = row; chip.Column = column; chip.Player = Game.CurrentPlayer; if (HasCurrentPlayerWon()) { Game.Finished = true; return; } Preview = null; Game.Turn++; // Immediately perform the move for the AI if (GetCurrentPlayerType == PlayerType.Computer) { // Determine best move var rand = new Random(); var col = rand.Next(0, COLUMNS); DoMove(col); } }