@using ConnectFour.Logics
@using System.Drawing
@inject GameState State
@winnerMessage
@errorMessage
@CurrentTurn
@for (var i = 0; i < 42; i++)
{
}
@for (var i = 0; i < 42; i++)
{
}
@code {
private string[] pieces = new string[42];
private string winnerMessage = string.Empty;
private string errorMessage = string.Empty;
private string CurrentTurn => (winnerMessage == string.Empty) ? $"Player {State.PlayerTurn}'s Turn" : "";
private string ResetStyle => (winnerMessage == string.Empty) ? "display: none;" : "";
[Parameter]
public Color BoardColor { get; set; } = ColorTranslator.FromHtml("yellow");
[Parameter]
public Color Player1Color { get; set; } = ColorTranslator.FromHtml("red");
[Parameter]
public Color Player2Color { get; set; } = ColorTranslator.FromHtml("blue");
protected override void OnInitialized()
{
State.ResetBoard();
}
private void PlayPiece(byte col)
{
errorMessage = string.Empty;
try
{
var player = State.PlayerTurn;
var turn = State.CurrentTurn;
var landingRow = State.PlayPiece(col);
pieces[turn] = $"player{player} col{col} drop{landingRow}";
}
catch (ArgumentException ex)
{
errorMessage = ex.Message;
}
winnerMessage = State.CheckForWin() switch
{
GameState.WinState.Player1_Wins => "Player 1 Wins!",
GameState.WinState.Player2_Wins => "Player 2 Wins!",
GameState.WinState.Tie => "It's a tie!",
_ => ""
};
}
private void ResetGame()
{
State.ResetBoard();
winnerMessage = string.Empty;
errorMessage = string.Empty;
pieces = new string[42];
}
}