added tttBrain
This commit is contained in:
parent
2492dfc796
commit
0edb73d8a3
|
|
@ -16,7 +16,7 @@ namespace ProjectGrid.Data
|
|||
}
|
||||
|
||||
|
||||
public Models.TicTacTocBoard GetBoard()
|
||||
public Models.TicTacTocBrain GetBoard()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ namespace ProjectGrid.Data
|
|||
{
|
||||
public interface ITicTacToctRepository
|
||||
{
|
||||
TicTacTocBoard GetBoard();
|
||||
TicTacTocBrain GetBoard();
|
||||
|
||||
bool AddPiece(TicTacTocRequest user);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,68 @@
|
|||
using ProjectGrid.Models;
|
||||
using ProjectGrid.TicTacToc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace ProjectGrid.AI
|
||||
{
|
||||
public class TicTacTocBrain
|
||||
{
|
||||
private TicTacTocBoard _board;
|
||||
private int _player;
|
||||
|
||||
private List<int> _prio;
|
||||
|
||||
public TicTacTocBrain(TicTacTocBoard board, Player player)
|
||||
{
|
||||
_board = board;
|
||||
_player = (int)player;
|
||||
|
||||
var rand = new Random();
|
||||
_prio = (new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8 }).OrderBy(i => rand.Next()).ToList();
|
||||
}
|
||||
|
||||
public int Turn()
|
||||
{
|
||||
if (_board.Field[5] == (int)Player.EMPTY)
|
||||
{
|
||||
//_board.SetFieldValue(_player, 5);
|
||||
return 5;
|
||||
}
|
||||
|
||||
for (int x = 0; x < TicTacTocBoard._winning.GetLength(0); x++)
|
||||
{
|
||||
var _1 = TicTacTocBoard._winning[x, 0];
|
||||
var _2 = TicTacTocBoard._winning[x, 1];
|
||||
var _3 = TicTacTocBoard._winning[x, 2];
|
||||
|
||||
int result = Match2(_1, _2, _3);
|
||||
if (result > 0)
|
||||
{
|
||||
//_board.SetFieldValue(_player, );
|
||||
return TicTacTocBoard._winning[x, result];
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var i in _prio)
|
||||
if (_board.Field[i] == 0)
|
||||
return i;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
private int Match2(int _1, int _2, int _3)
|
||||
{
|
||||
if (_1 == _player && _2 == _player && _3 == 0)
|
||||
return 3;
|
||||
|
||||
if (_1 == _player && _2 == 0 && _3 == _player)
|
||||
return 2;
|
||||
|
||||
if (_1 == 0 && _2 == _player && _3 == _player)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -11,7 +11,7 @@ namespace ProjectGrid.Models
|
|||
{
|
||||
private List<int> _field;
|
||||
public List<int> Field => _field;
|
||||
|
||||
|
||||
private int _lastSetValue;
|
||||
public int LastSetValue => _lastSetValue;
|
||||
|
||||
|
|
@ -38,7 +38,7 @@ namespace ProjectGrid.Models
|
|||
// 0 1 2
|
||||
// 3 4 5
|
||||
// 6 7 8
|
||||
private static readonly int[,] _winning = new int[,] {
|
||||
public static readonly int[,] _winning = new int[,] {
|
||||
{ 0, 1, 2 },
|
||||
{ 3, 4, 5 },
|
||||
{ 6, 7 ,8 },
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using ProjectGrid.Models;
|
||||
using ProjectGrid.TicTacToc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
|
|
@ -6,7 +7,7 @@ namespace ProjectGrid
|
|||
{
|
||||
public interface ITicTacTocManager
|
||||
{
|
||||
public void Restart();
|
||||
public void Restart(Mode mode);
|
||||
public TicTacTocResponse NextMove(TicTacTocRequest move);
|
||||
|
||||
public TicTacTocResponse GetBoard();
|
||||
|
|
@ -35,7 +36,7 @@ namespace ProjectGrid
|
|||
{
|
||||
//_repo = repo;
|
||||
_currentPlayer = 1;
|
||||
Restart();
|
||||
Restart(Mode.TWO_PLAYER);
|
||||
}
|
||||
|
||||
public TicTacTocResponse NextMove(TicTacTocRequest move)
|
||||
|
|
@ -64,7 +65,7 @@ namespace ProjectGrid
|
|||
}
|
||||
|
||||
|
||||
public void Restart()
|
||||
public void Restart(Mode mode)
|
||||
{
|
||||
_currentPlayer = new Random().Next(1, 2);
|
||||
_board = new TicTacTocBoard();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
using ProjectGrid.Models;
|
||||
|
||||
namespace ProjectGrid.TicTacToc
|
||||
{
|
||||
public enum Mode
|
||||
{
|
||||
TWO_PLAYER,
|
||||
CROSS_PLAYER,
|
||||
CIRCLE_PLAYER,
|
||||
}
|
||||
|
||||
public enum Player
|
||||
{
|
||||
EMPTY = 0;
|
||||
CROSS = 1,
|
||||
CIRCLE = 2,
|
||||
}
|
||||
}
|
||||
|
|
@ -47,7 +47,7 @@ namespace ProjectGrid
|
|||
|
||||
// Manager
|
||||
services.AddSingleton<TicTacTocManager>(new TicTacTocManager());
|
||||
services.AddScoped<ITicTacTocManager, TicTacTocManager>();
|
||||
services.AddScoped<TicTacTocTypes, TicTacTocManager>();
|
||||
|
||||
// DataAccess
|
||||
services.AddScoped<ITicTacToctRepository, DataAccessContext>();
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ class Game {
|
|||
|
||||
}
|
||||
|
||||
|
||||
changeTurn() {
|
||||
this.currentTurn = this.currentTurn == this.players[0].sign ? this.players[1].sign : this.players[0].sign;
|
||||
}
|
||||
|
|
@ -46,7 +45,6 @@ class Game {
|
|||
x.setPosition();
|
||||
})
|
||||
|
||||
|
||||
if (this.players[0].positions.length > 2 || this.players[1].positions.length > 2) {
|
||||
|
||||
let player1_combinations = this.getCombination(this.players[0].positions, 3, 0);
|
||||
|
|
|
|||
Loading…
Reference in New Issue