Fixed some minor issues

Signed-off-by: Pablu23 <43807157+Pablu23@users.noreply.github.com>
This commit is contained in:
Pablu23
2021-10-25 17:28:38 +02:00
committed by Pablu23
parent 7e799a477f
commit bebd114c09
3 changed files with 42 additions and 43 deletions

View File

@@ -26,11 +26,11 @@ namespace TicTacToe.Players
for (int i = 0; i < 9; i++) for (int i = 0; i < 9; i++)
{ {
if (b._fields[i].State == FieldState.Empty) if (b.Fields[i].State == FieldState.Empty)
{ {
b._fields[i].State = Symbol; b.Fields[i].State = Symbol;
int val = MiniMax(b, -1, _enemyFieldState); int val = MiniMax(b, -1, _enemyFieldState);
b._fields[i].State = FieldState.Empty; b.Fields[i].State = FieldState.Empty;
if (Symbol == FieldState.PlayerX && val > bestVal) if (Symbol == FieldState.PlayerX && val > bestVal)
{ {
bestMove = i; bestMove = i;
@@ -58,11 +58,11 @@ namespace TicTacToe.Players
int maxEval = int.MinValue; int maxEval = int.MinValue;
for (int i = 0; i < 9; i++) for (int i = 0; i < 9; i++)
{ {
if (b._fields[i].State == FieldState.Empty) if (b.Fields[i].State == FieldState.Empty)
{ {
b._fields[i].State = FieldState.PlayerX; b.Fields[i].State = FieldState.PlayerX;
int eval = MiniMax(b, depth - 1, FieldState.PlayerO); int eval = MiniMax(b, depth - 1, FieldState.PlayerO);
b._fields[i].State = FieldState.Empty; b.Fields[i].State = FieldState.Empty;
maxEval = Math.Max(maxEval, eval); maxEval = Math.Max(maxEval, eval);
} }
} }
@@ -73,11 +73,11 @@ namespace TicTacToe.Players
int minEval = int.MaxValue; int minEval = int.MaxValue;
for (int i = 0; i < 9; i++) for (int i = 0; i < 9; i++)
{ {
if (b._fields[i].State == FieldState.Empty) if (b.Fields[i].State == FieldState.Empty)
{ {
b._fields[i].State = FieldState.PlayerO; b.Fields[i].State = FieldState.PlayerO;
int eval = MiniMax(b, depth - 1, FieldState.PlayerX); int eval = MiniMax(b, depth - 1, FieldState.PlayerX);
b._fields[i].State = FieldState.Empty; b.Fields[i].State = FieldState.Empty;
minEval = Math.Min(minEval, eval); minEval = Math.Min(minEval, eval);
} }
} }

View File

@@ -68,7 +68,7 @@ namespace TicTacToe
{ {
for (int i = 0; i < 2; i++) for (int i = 0; i < 2; i++)
{ {
bool placed = true; bool placed;
do do
{ {
placed = _board.TryPlace(Players[i].MakeMove(_board), Players[i], round); placed = _board.TryPlace(Players[i].MakeMove(_board), Players[i], round);

View File

@@ -1,19 +1,18 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using TicTacToe.Players; using TicTacToe.Players;
namespace TicTacToe namespace TicTacToe
{ {
public class TicTacToeBoard public class TicTacToeBoard
{ {
public Field[] _fields = new Field[9]; public Field[] Fields = new Field[9];
public TicTacToeBoard() public TicTacToeBoard()
{ {
for (int i = 0; i < _fields.Length; i++) for (int i = 0; i < Fields.Length; i++)
{ {
_fields[i] = new Field(Convert.ToChar((i+1).ToString())); Fields[i] = new Field(Convert.ToChar((i+1).ToString()));
} }
} }
@@ -21,33 +20,33 @@ namespace TicTacToe
{ {
Console.Clear(); Console.Clear();
Console.WriteLine( Console.WriteLine(
$"{_fields[0].Symbol} | " + $"{Fields[0].Symbol} | " +
$"{_fields[1].Symbol} | " + $"{Fields[1].Symbol} | " +
$"{_fields[2].Symbol}\n--------\n" + $"{Fields[2].Symbol}\n--------\n" +
$"{_fields[3].Symbol} | " + $"{Fields[3].Symbol} | " +
$"{_fields[4].Symbol} | " + $"{Fields[4].Symbol} | " +
$"{_fields[5].Symbol}\n--------\n" + $"{Fields[5].Symbol}\n--------\n" +
$"{_fields[6].Symbol} | " + $"{Fields[6].Symbol} | " +
$"{_fields[7].Symbol} | " + $"{Fields[7].Symbol} | " +
$"{_fields[8].Symbol}"); $"{Fields[8].Symbol}");
} }
public bool TryPlace(int pos, Player player, int round) public bool TryPlace(int pos, Player player, int round)
{ {
if (pos < 0 || pos > 9) return false; if (pos < 0 || pos > 9) return false;
if (_fields[pos].State != FieldState.Empty) return false; if (Fields[pos].State != FieldState.Empty) return false;
switch (player.Symbol) switch (player.Symbol)
{ {
case FieldState.PlayerX: case FieldState.PlayerX:
_fields[pos].State = FieldState.PlayerX; Fields[pos].State = FieldState.PlayerX;
_fields[pos].Symbol = 'X'; Fields[pos].Symbol = 'X';
_fields[pos].Round = round; Fields[pos].Round = round;
break; break;
case FieldState.PlayerO: case FieldState.PlayerO:
_fields[pos].State = FieldState.PlayerO; Fields[pos].State = FieldState.PlayerO;
_fields[pos].Symbol = 'O'; Fields[pos].Symbol = 'O';
_fields[pos].Round = round; Fields[pos].Round = round;
break; break;
default: default:
throw new Exception("Player Symbol was not recognised"); throw new Exception("Player Symbol was not recognised");
@@ -58,14 +57,14 @@ namespace TicTacToe
public int[] GetBoardHistory() public int[] GetBoardHistory()
{ {
int[] history = new int[_fields.Length]; int[] history = new int[Fields.Length];
for (int i = 0; i < history.Length; i++) for (int i = 0; i < history.Length; i++)
{ {
history[i] = -1; history[i] = -1;
} }
int index = 0; int index = 0;
foreach (var field in _fields) foreach (var field in Fields)
{ {
if (field.Round >= 0 && field.Round <= history.Length) if (field.Round >= 0 && field.Round <= history.Length)
{ {
@@ -81,7 +80,7 @@ namespace TicTacToe
{ {
//return !_fields.Any(x => x.State == FieldState.Empty); //return !_fields.Any(x => x.State == FieldState.Empty);
bool isBoardFull = true; bool isBoardFull = true;
foreach (var field in _fields) foreach (var field in Fields)
{ {
if (field.State == FieldState.Empty) if (field.State == FieldState.Empty)
{ {
@@ -97,12 +96,12 @@ namespace TicTacToe
winner = FieldState.Empty; winner = FieldState.Empty;
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++)
{ {
FieldState first = _fields[i * 3].State; FieldState first = Fields[i * 3].State;
winner = first; winner = first;
if (first == FieldState.Empty) continue; if (first == FieldState.Empty) continue;
for (int j = 0; j < 3; j++) for (int j = 0; j < 3; j++)
{ {
if (_fields[i * 3 + j].State == first) if (Fields[i * 3 + j].State == first)
{ {
if (j == 2) if (j == 2)
{ {
@@ -124,12 +123,12 @@ namespace TicTacToe
winner = FieldState.Empty; winner = FieldState.Empty;
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++)
{ {
FieldState first = _fields[i].State; FieldState first = Fields[i].State;
winner = first; winner = first;
if (first == FieldState.Empty) continue; if (first == FieldState.Empty) continue;
for (int j = 0; j < 3; j++) for (int j = 0; j < 3; j++)
{ {
if (_fields[j * 3 + i].State == first) if (Fields[j * 3 + i].State == first)
{ {
if (j == 2) if (j == 2)
{ {
@@ -148,10 +147,10 @@ namespace TicTacToe
private bool Diagonal(out FieldState winner) private bool Diagonal(out FieldState winner)
{ {
winner = _fields[4].State; winner = Fields[4].State;
return _fields[4].State != FieldState.Empty && return Fields[4].State != FieldState.Empty &&
(_fields[0].State == _fields[4].State && _fields[4].State == _fields[8].State || (Fields[0].State == Fields[4].State && Fields[4].State == Fields[8].State ||
_fields[2].State == _fields[4].State && _fields[4].State == _fields[6].State); Fields[2].State == Fields[4].State && Fields[4].State == Fields[6].State);
} }
public bool IsGameFinished(out FieldState winner) public bool IsGameFinished(out FieldState winner)
@@ -180,7 +179,7 @@ namespace TicTacToe
{ {
var output = new FieldState[9]; var output = new FieldState[9];
int index = 0; int index = 0;
foreach (var field in _fields) foreach (var field in Fields)
{ {
output[index] = field.State; output[index] = field.State;
index++; index++;
@@ -202,7 +201,7 @@ namespace TicTacToe
{ {
for (int i = 0; i < 9; i++) for (int i = 0; i < 9; i++)
{ {
_fields[i] = fields[i]; Fields[i] = fields[i];
} }
} }
} }