Modified Board Creation + Game because fun
continuous-integration/drone/push Build is failing Details

test_old_branch
Jules LASCRET 12 months ago
parent 64c950a5b4
commit 1302714adb

@ -12,20 +12,37 @@ namespace QwirkleClassLibrary
{ {
public ReadOnlyCollection<Cell> ReadCells => cells.AsReadOnly(); public ReadOnlyCollection<Cell> ReadCells => cells.AsReadOnly();
private readonly List<Cell> cells = new(); private readonly List<Cell> cells = new();
private int Rows { get; }
private int Columns { get; }
public Board() public Board(int rows, int cols)
{ {
Rows = rows;
for (int i = 0; i < 12; i++) Columns = cols;
for (int a = 0; a < Rows; a++)
{ {
for (int j = 0; j < 12; j++) for (int b = 0; b < Columns; b++)
{ {
Cell localcell = new(i, j); Cell localcell = new(a, b);
cells.Add(localcell); cells.Add(localcell);
} }
} }
} }
public bool HasOccupiedCase()
{
foreach (var cell in cells)
{
if (cell.IsFree == false)
{
return true;
}
}
return false;
}
public bool AddTileInCell(int x, int y, Tile tile) public bool AddTileInCell(int x, int y, Tile tile)
{ {
for (int i = 0; i < cells.Count; i++) for (int i = 0; i < cells.Count; i++)
@ -49,5 +66,17 @@ namespace QwirkleClassLibrary
{ {
return ReadCells; return ReadCells;
} }
public Cell? GetCell(int x, int y)
{
for (int i = 0; i < cells.Count; i++)
{
if (this.cells[i].GetX == x && this.cells[i].GetY == y)
{
return cells[i];
}
}
return null;
}
} }
} }

@ -11,7 +11,7 @@ namespace QwirkleClassLibrary
{ {
public class Game : IPlayer, IRules public class Game : IPlayer, IRules
{ {
private readonly TileBag bag; private TileBag bag;
public bool GameRunning { get; private set; } public bool GameRunning { get; private set; }
private Board board; private Board board;
@ -23,7 +23,7 @@ namespace QwirkleClassLibrary
public Game() public Game()
{ {
bag = new TileBag(3); bag = CreateTileBag(3);
board = CreateBoard(); board = CreateBoard();
} }
@ -61,18 +61,21 @@ namespace QwirkleClassLibrary
public Board CreateBoard() public Board CreateBoard()
{ {
board = new Board(); board = new Board(12, 12);
return board; return board;
} }
public TileBag CreateTileBag(int nbSet)
{
bag = new TileBag(nbSet);
return bag;
}
public bool StartGame() public bool StartGame()
{ {
if(players.Count>= 2 && players.Count < 5) if (players.Count < 2 || players.Count >= 5) return false;
{ this.GameRunning = true;
this.GameRunning = true; return true;
return true;
}
return false;
} }
public Player GetPlayingPlayer() public Player GetPlayingPlayer()
@ -202,14 +205,39 @@ namespace QwirkleClassLibrary
return true; return true;
} }
public bool IsMoveCorrect(Tile t, Board b) public bool IsMoveCorrect(Tile t, int x, int y, Board b)
{ {
return false; if (b.HasOccupiedCase() == false)
{
return true;
}
var surroundingTiles = new List<Tile?>();
surroundingTiles.Add(b.GetCell(x + 1, y)?.GetTile);
surroundingTiles.Add(b.GetCell(x - 1, y)?.GetTile);
surroundingTiles.Add(b.GetCell(x, y + 1)?.GetTile);
surroundingTiles.Add(b.GetCell(x, y - 1)?.GetTile);
foreach (var tile in surroundingTiles)
{
if (tile == null)
{
continue;
}
if (tile.GetColor != t.GetColor && tile.GetShape != t.GetShape)
{
return false;
}
}
return true;
} }
public bool IsGameOver() public bool IsGameOver()
{ {
throw new NotImplementedException(); return false;
} }
} }
} }
Loading…
Cancel
Save