Я создаю версию игры Qwixx в C# для классного проекта. В настоящее время у меня есть кнопки от P1R2 до P1R12 подряд слева направо. Когда нажата кнопка «Завершение поворота», она отключает все кнопки, которые имеют X или - вместо числа.
private void P1R2_Click(object sender, EventArgs e)
{
if (P1R2Clicked == false)
{
P1R2.Text = "X";
P1R2Clicked = true;
}
else
{
P1R2.Text = "2";
P1R2Clicked = false;
}
}
private void P1R3_Click(object sender, EventArgs e)
{
if (P1R3Clicked == false)
{
P1R3.Text = "X";
if (P1R2.Text == "2")
{
P1R2.Text = "-";
}
P1R3Clicked = true;
}
else
{
P1R3.Text = "3";
if (P1R2.Text == "-")
{
P1R2.Text = "2";
}
P1R3Clicked = false;
}
}
private void P1R4_Click(object sender, EventArgs e)
{
if (P1R4Clicked == false)
{
P1R4.Text = "X";
if (P1R3.Text == "3")
{
P1R3.Text = "-";
}
if (P1R2.Text == "2")
{
P1R2.Text = "-";
}
P1R4Clicked = true;
}
else
{
P1R4.Text = "4";
if (P1R3.Text == "-")
{
P1R3.Text = "3";
}
if (P1R2.Text == "-")
{
P1R2.Text = "2";
}
P1R4Clicked = false;
}
}
Используя приведенный выше код, я проверяю, может ли пользователь нажимать кнопку несколько раз и изменяет текст на кнопках слева, если они отображают номер. Я пытаюсь найти способ выполнить эти проверки через метод в другом классе, где я могу выполнить итерацию по al oop. Проблема в том, что я не могу найти способ проверить переменную P1R # Кликнул на pu sh через al oop. Или как запустить P1R # .Text через. Мысли?
Редактировать: Красная строка
private void P1Red_Click(object sender, EventArgs e)
{
var index = Array.IndexOf(P1RedButtons, sender);
if (index == 10)
{
foreach (Button s in P1RRow.Controls.OfType<Button>())
{
if (s.Text == "X")
{
P1NoRed++;
}
}
P1RedButtons[index].Text = P1NoRed < 5 ? (index + 2).ToString() : "X";
P1RedClicked[index] = P1NoRed < 5 ? !P1RedClicked[index] : P1RedClicked[index];
P1RedX[index] = P1NoRed < 5 ? !P1RedX[index] : P1RedX[index];
P1NoRed = 0;
}
else
{
P1RedButtons[index].Text = P1RedClicked[index] ? (index + 2).ToString() : "X";
}
if (index != 0)
{
if (P1RedClicked[index - 1] == false)
{
int red1found = Array.LastIndexOf(P1RedX, true, index - 1);
for (int j = index - 1; j > red1found; j--)
{
P1RedButtons[j].Text = P1RedClicked[index] ? (j + 2).ToString() : "-";
}
}
}
P1RedClicked[index] = !P1RedClicked[index];
P1RedX[index] = !P1RedX[index];
}
В этом коде P1NoRed является счетчиком, чтобы проверить, были ли нажаты хотя бы 5 кнопок и имеют «X». " на них. Это не позволит нажать цифру 12, пока в строке не будет 5 других «Х». В настоящее время все работает, в том числе ставит "-" слева от числа, по которому щелкнули, и отменяет его, если щелкнуть снова. Кнопка «Конец поворота» блокирует эти кнопки и блокирует любые кнопки «X» или «-». В настоящее время я работаю над поиском способа отслеживания количества кнопок, нажимаемых за ход до нажатия кнопки «Завершение хода». В соответствии с правилами игры, на вашем ходу можно нажать 2 кнопки, 1 кнопку, если это не ваш ход. Я знаю, что где-то в событии мне нужен счетчик, возможно, сканирующий массив P1RedClicked на предмет истинных значений. Я думаю, что когда нажимается второй x, чтобы отключить любую кнопку от самого дальнего правого «X» в ряду до левого конца. Я был бы открыт для предложений, поскольку я работаю над этим. Большое спасибо @Enigmativity за всю помощь.