Fixed some minor issues
Signed-off-by: Pablu23 <43807157+Pablu23@users.noreply.github.com>
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user