If that genuinely works, I'm a genius
continuous-integration/drone/push Build is passing Details

test_old_branch
Jules LASCRET 12 months ago
parent 26c5d7395c
commit a49f7ff23b

@ -207,99 +207,153 @@ namespace QwirkleClassLibrary
return true; return true;
} }
// public bool IsMoveCorrect(Tile t, int x, int y, Board b)
// {
// if (b.HasOccupiedCase() == false)
// {
// return true;
// }
//
// var surroundingCells = new List<Cell?>();
//
// surroundingCells.Add(b.GetCell(x + 1, y));
// surroundingCells.Add(b.GetCell(x - 1, y));
// surroundingCells.Add(b.GetCell(x, y + 1));
// surroundingCells.Add(b.GetCell(x, y - 1));
//
// foreach (var cell in surroundingCells.ToList())
// {
// if (cell?.GetTile == null)
// {
// surroundingCells.Remove(cell);
// continue;
// }
//
// if (cell?.GetTile.GetColor != t.GetColor && cell?.GetTile.GetShape != t.GetShape)
// {
// return false;
// }
// }
//
// if(surroundingCells.Count == 0) return false;
//
// foreach (var cell in surroundingCells.ToList())
// {
// var extendedCells = new List<Cell?>();
//
// if (cell?.GetX == x && cell?.GetY == y + 1)
// {
// for (int i = 1; i < 7; i++)
// {
// if (b.GetCell(x, y + i)?.GetTile != null)
// {
// extendedCells.Add(b.GetCell(x, y + i));
// }
// }
// }
//
// else if (cell?.GetX == x && cell?.GetY == y - 1)
// {
// for (int i = 1; i < 7; i++)
// {
// if (b.GetCell(x, y - i)?.GetTile != null)
// {
// extendedCells.Add(b.GetCell(x, y - i));
// }
// }
// }
//
// else if (cell?.GetX == x + 1 && cell?.GetY == y)
// {
// for (int i = 1; i < 7; i++)
// {
// if (b.GetCell(x + i, y)?.GetTile != null)
// {
// extendedCells.Add(b.GetCell(x + i, y));
// }
// }
// }
//
// else if (cell?.GetX == x - 1 && cell?.GetY == y)
// {
// for (int i = 1; i < 7; i++)
// {
// if (b.GetCell(x - i, y)?.GetTile != null)
// {
// extendedCells.Add(b.GetCell(x - i, y));
// }
// }
// }
//
// foreach (var e in extendedCells)
// {
// if (e?.GetTile?.GetColor != t.GetColor && e?.GetTile?.GetShape != t.GetShape)
// {
// return false;
// }
// }
//
// if (extendedCells.Count == 6)
// {
// return false;
// }
// }
//
// return true;
// }
public bool IsMoveCorrect(Tile t, int x, int y, Board b) public bool IsMoveCorrect(Tile t, int x, int y, Board b)
{ {
if (b.HasOccupiedCase() == false) if (!b.HasOccupiedCase())
{ {
return true; return true;
} }
var surroundingCells = new List<Cell?>(); var surroundingCells = new[]
{
surroundingCells.Add(b.GetCell(x + 1, y)); b.GetCell(x + 1, y),
surroundingCells.Add(b.GetCell(x - 1, y)); b.GetCell(x - 1, y),
surroundingCells.Add(b.GetCell(x, y + 1)); b.GetCell(x, y + 1),
surroundingCells.Add(b.GetCell(x, y - 1)); b.GetCell(x, y - 1)
};
foreach (var cell in surroundingCells.ToList()) foreach (var cell in surroundingCells)
{ {
if (cell?.GetTile == null) if (cell?.GetTile == null)
{ {
surroundingCells.Remove(cell);
continue; continue;
} }
if (cell?.GetTile.GetColor != t.GetColor && cell?.GetTile.GetShape != t.GetShape) if (cell.GetTile.GetColor != t.GetColor && cell.GetTile.GetShape != t.GetShape)
{ {
return false; return false;
} }
}
if(surroundingCells.Count == 0) return false; var dx = cell.GetX - x;
var dy = cell.GetY - y;
foreach (var cell in surroundingCells.ToList()) for (int i = 1; i < 7; i++)
{
var extendedCells = new List<Cell?>();
if (cell?.GetX == x && cell?.GetY == y + 1)
{ {
for (int i = 1; i < 7; i++) var extendedCell = b.GetCell(x + i * dx, y + i * dy);
{
if (b.GetCell(x, y + i)?.GetTile != null)
{
extendedCells.Add(b.GetCell(x, y + i));
}
}
}
else if (cell?.GetX == x && cell?.GetY == y - 1) if (extendedCell?.GetTile == null)
{
for (int i = 1; i < 7; i++)
{ {
if (b.GetCell(x, y - i)?.GetTile != null) break;
{
extendedCells.Add(b.GetCell(x, y - i));
}
} }
}
else if (cell?.GetX == x + 1 && cell?.GetY == y) if (extendedCell.GetTile.GetColor != t.GetColor && extendedCell.GetTile.GetShape != t.GetShape)
{
for (int i = 1; i < 7; i++)
{ {
if (b.GetCell(x + i, y)?.GetTile != null) return false;
{
extendedCells.Add(b.GetCell(x + i, y));
}
}
}
else if (cell?.GetX == x - 1 && cell?.GetY == y)
{
for (int i = 1; i < 7; i++)
{
if (b.GetCell(x - i, y)?.GetTile != null)
{
extendedCells.Add(b.GetCell(x - i, y));
}
} }
}
foreach (var e in extendedCells) if (i == 6)
{
if (e?.GetTile?.GetColor != t.GetColor && e?.GetTile?.GetShape != t.GetShape)
{ {
return false; return false;
} }
} }
if (extendedCells.Count == 6)
{
return false;
}
} }
return true; return surroundingCells.Any(cell => cell?.GetTile != null);
} }

Loading…
Cancel
Save