Это для крестики нолики игры, где сетка может быть размером для любого числа (3x3 4x4 8x8 и т.д.)Как исследовать массив для .Text значений
При загрузке формы, метод считывает размер сетки и заполняет форму с помощью множества кнопок в 1-мерном кнопочном массиве. Массив называется buttonArray.
С помощью 1-мерного ButtonArray и без использования LINQ, как я могу сравнить значения .Text кнопок в buttonArray, чтобы увидеть, являются ли они «X» или «O» для функции CheckWinner().
После создания кнопки сетки, у меня есть обработчик событий для нажатия кнопок:
private void button_click(object sender, EventArgs e)
{
Button b = (Button)sender;
b.Text = "X";
b.Enabled = false;
CheckWinner(buttonArray);
}
Я тогда призывающего свою функцию CheckWinner и проходящий в массиве buttonArray.
Опять же, я просто ищу примитивный способ проверить/сравнить значения без использования LINQ. Если я знаю длину каждой стороны сетки, могу сказать, что для горизонтальных выигрышных линий я ищу много кнопок в строке с «X» в качестве их .Text-свойства.
Итак, если у меня есть сетка 5x5, и у меня есть 25 кнопок в buttonArray, как я могу проверить каждые 5, начиная с индекса 0 сетки, чтобы их значения .Text были «X», а затем печатали сообщение, если 5 в строке одинаковы или «X» в этом случае.
for (int z = 0; z < root; z++) //increments the column to start on
{
vCount = 0; //Starts the win counter at zero when moving to the next column
for (int i = z; i < arrLength; i=i+root) //starts at the first column and increments it by root to test the next button in the column
{
string bText = buttonArray[i].Text;
if (bText == "X")
vCount++;
if (vCount == root)
{
MessageBox.Show("Vertical row winner found !");
break;
}
}
}//end of vertical column test
Я сделал вертикальное испытание, как это? Но я думаю, что объединение их в один будет лучше.
Считаете ли вы диагональные или только горизонтальные и вертикальные условия выигрышные? –
Да, абсолютно, но я подумал, что только начинать с простой горизонтали было бы самым простым, и я мог бы пойти оттуда. – BackDoorNoBaby
Хорошо, что это условие победы для 5x5? Только полная диагональ? –