Изображение 1.C# как проверить, заказаны ли куски?
Изображение 2.
Я сделал метод для проверки, если все части находятся в основании или цели, если да, то возвращает истину, теперь я нужен другой метод ,
Если это похоже на рисунке 1. Мне нужно изменить количество бросков на 3, если его заказать, как на картинке 2, я могу разрешить только 1 бросок.
У меня есть 4 цели и 4 штуки, и нужно проверить, правильно ли они упорядочены на них из 54-51 позиций пути (путь - массив из 55 полей 0-54), если да, верните true, если не вернете false.
Я новичок в C# никогда не имел возможности работать с проверкой заказа до сих пор.
Я пытался сделать это с помощью 3-х целых позиций цели (заполненных позициями 51,52,53,54 пути), штукОпозиции (заполнены позициями фигур с методом getPosition()) и piecesOnGoal (зарезервированы для подсчета фрагментов на цели). но не повезло с этим.
Я добавлю код. Часть класса игрока с тем, что списки и метод для проверки частей в цель или базу
class Player {
protected PieceSet[] pieces;
Color color;
int numberOfThrows;
Dice dice;
public List<int> goalPositions;
public List<int> piecePositions;
public List<int> piecesOnGoal;
public enum Color
{
Yellow, Green, Blue, Red
}
public Player(Color color)
{
int[] path = new int[55];
this.color = color;
dice = new Dice();
numberOfThrows = 3;
switch (color)
{
case Color.Yellow:
path = BoardHelper.getYellowPath();
break;
case Color.Green:
path = BoardHelper.getGreenPath();
break;
case Color.Blue:
path = BoardHelper.getBluePath();
break;
case Color.Red:
path = BoardHelper.getRedPath();
break;
}
pieces = new PieceSet[4];
pieces[0] = new PieceSet(path, 0);
pieces[1] = new PieceSet(path, 1);
pieces[2] = new PieceSet(path, 2);
pieces[3] = new PieceSet(path, 3);
piecePositions = new List<int>(4);
piecePositions.Add(pieces[0].getPosition());
piecePositions.Add(pieces[1].getPosition());
piecePositions.Add(pieces[2].getPosition());
piecePositions.Add(pieces[3].getPosition());
goalPositions = new List<int>(4);
goalPositions.Add(51);
goalPositions.Add(52);
goalPositions.Add(53);
goalPositions.Add(54);
piecesOnGoal =new List<int>();
}
public bool isAllPiecesInBaseOrGoal()
{
if ((pieces[0].getPosition() < 4 || pieces[0].getPosition() > 50) &&
(pieces[1].getPosition() < 4 || pieces[1].getPosition() > 50) &&
(pieces[2].getPosition() < 4 || pieces[2].getPosition() > 50) &&
(pieces[3].getPosition() < 4 || pieces[3].getPosition() > 50))
return true;
else
return false;
}
И это, как я думал, чтобы решить мою проблему: Проверьте, если goalPositions
содержит piecePositions
. Если да, добавьте эту позицию в piecesOnGoal
. Теперь мне нужно как-то проверить, заказаны ли эти piecesOnGoal
. Если да, верните true. Если нет, то ложь.
Я открыт для любого предложения.
public bool isAllPiecesAreOrderedInGoal()
{
for (int i = 0; i < 4; i++)
{
if (goalPositions.Contains(piecePositions[i]))
{
piecesOnGoal.Add(piecePositions[i]);
}
}
}
Любая помощь приветствуется.
Почему бы не сделать класс плитки или объект, который будет обрабатывать подобные вещи? У вас может быть подкласс «Тип цели». Ваша плитка будет содержать объект, который был бы нулевым или Piece. –
извините, я не знаю, как это сделать, я новичок в C# –