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++)
{
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);
b._fields[i].State = FieldState.Empty;
b.Fields[i].State = FieldState.Empty;
if (Symbol == FieldState.PlayerX && val > bestVal)
{
bestMove = i;
@@ -58,11 +58,11 @@ namespace TicTacToe.Players
int maxEval = int.MinValue;
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);
b._fields[i].State = FieldState.Empty;
b.Fields[i].State = FieldState.Empty;
maxEval = Math.Max(maxEval, eval);
}
}
@@ -73,11 +73,11 @@ namespace TicTacToe.Players
int minEval = int.MaxValue;
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);
b._fields[i].State = FieldState.Empty;
b.Fields[i].State = FieldState.Empty;
minEval = Math.Min(minEval, eval);
}
}

View File

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

View File

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