Я делаю программу Windows Forms Tic-Tac-Toe, которая имеет размер сетки, заданный значением в файле App.config. Таким образом, если значение равно 9, сетка регулярная 3 х 3, если его 25, св 5 х 5 и т.д.Итерация через массив для .Text значений
У меня есть GameBoard класс, который делает реальные кнопки для массива:
public Gameboard(int numberofButtons) //Constructor method that is referencing the App.config for the dimensions value to make the board
{
buttonArray = new Button[numberofButtons]; //creating an array the size of numberofButtons which is the dimensions value from App.config
Font font = new Font("Times New Roman", 36.0f); //creates an instance of the Font class
int sqrtY = (int) Math.Sqrt(numberofButtons);
int z = 0; //Counter for array
//Create the buttons for the form
for (int x = 0; x < sqrtY; x++)
{
for (int y = 0; y < sqrtY; y++)
{
buttonArray[z] = new Button();
buttonArray[z].Font = font;
buttonArray[z].Size = new System.Drawing.Size(100, 100);
buttonArray[z].Location = new System.Drawing.Point(100*y, 100*x);
buttonArray[z].Click += new EventHandler(button_click);
z++;
}
}
}
Если я хочу проверить победители в массиве, просто проверив значение buttonArray.Text для позиций в buttonArray, как я могу повторить это?
, например, в сетке 4х4, то winlines для горизонтальных выигрышей будет
0,1,2,3
4,5,6,7
8,9,10,11
12,13,14,15
так
x=0, x<sqrt(dimension), x++
buttonArray[x].Text == "X" <-- to test
Я понимаю, что это действительно плохо закодированы и запутанным, но я пытаюсь сделать это с один размерный массив, потому что это то, о чем учил учитель. Я хочу проверить значения buttonArray[]
на значение, сначала проверив строки, затем столбцы, затем диагонали.
Форма не имеет кнопок, поэтому при загрузке формы она заполняет ее кнопками, используемыми для сетки. Он предназначен для игры против компьютера, поэтому, когда вы нажимаете кнопку, текст становится «X», а затем компьютер должен указывать «O» и т. Д.
Таким образом, важный вопрос, я, вероятно, должен сначала спросил. Вам нужно знать, как выиграл X/O, или только победил X или O, или все ячейки были поданы/оттянуты. Например, «X Won (строка 1)» или просто «X Won». Если первый пример, как насчет того, если последняя ячейка для победы сделала полную строку и столбец, действительно ли у вас есть все/все пути, которые они выиграли? –
Хорошо, мне бы хотелось узнать, кто выиграл, а затем изменить цвет фона выигрывающего шаблона или сделать WinLine из координат конечных точек выигрышной линии. По крайней мере, измените .BackColor на что-то вроде IndiaRed, чтобы выделить выигрышные кнопки, которые объединяются, чтобы сделать winline. – BackDoorNoBaby
Это должна быть легкая часть, вы должны проверить, выиграл ли кто-то (более сложная часть) после каждого хода, так что тот, кто повернул его, просто выиграл (если игра - победа). Вы не можете поиграть и проиграть! –