Использование 2D-массива для крестиков-ноликов в Visual Basic

Мне нужно сделать игру в крестики-нолики для моего класса Visual Basic, который использует массив для отслеживания состояния игры, но я понятия не имею, как настроить этот массив. Предполагается, что программа имеет 2 представления (графический интерфейс, который я уже сделал, и текстовое представление с использованием консоли, которое я понятия не имею, как это сделать), имеет два контроллера (пользователь может нажать кнопку, где он хочет играть, или они могут использовать клавиши 1-9 на клавиатуре, чтобы выбрать свою позицию), и в нее нужно играть между человеком и компьютером.

Это не так много, но вот что у меня есть на данный момент:

  Module Module1
Const intMAX_ROWS As Integer = 2
Const intMAX_COL As Integer = 2
Public gameArray(intMAX_ROWS, intMAX_COL) As String

Button1.Text = gameArray(0,0) 
Button2.Text = gameArray(0,1)
Button3.Text = gameArray(0,2)
Button4.Text = gameArray(1,0)
Button5.Text = gameArray(1,1)
Button6.Text = gameArray(1,2)
Button7.Text = gameArray(2,0)
Button8.Text = gameArray(2,1)
Button9.Text = gameArray(2,2)

End Module

Я получаю сообщение об ошибке во всех строках Button.Text

Declaration expected

Любые идеи о том, как это исправить?

Будем признательны за любую помощь или предложения.


person Community    schedule 09.04.2014    source источник


Ответы (1)


Чтобы программа скомпилировала операторы, в которых вы присваиваете значения кнопкам, они должны находиться внутри функции:

Sub SetButtons()
    Button1.Text = gameArray(0, 0)
    Button2.Text = gameArray(0, 1)
    Button3.Text = gameArray(0, 2)
    Button4.Text = gameArray(1, 0)
    Button5.Text = gameArray(1, 1)
    Button6.Text = gameArray(1, 2)
    Button7.Text = gameArray(2, 0)
    Button8.Text = gameArray(2, 1)
    Button9.Text = gameArray(2, 2)
End Sub

Поскольку вам нужно 2 представления, графический интерфейс и текстовое представление, я бы рекомендовал закончить с 3 проектами:

  • библиотека TicTacToe для игровой логики (для совместного использования)
  • приложение WinForms или WPF для представления GUI (которое ссылается на библиотеку)
  • консольное приложение для текстового представления (которое ссылается на библиотеку)

Вот пример рисования платы в консольном приложении:

Dim board(3, 3) As Char
' Set a O in the middle
board(1, 1) = "O"
' Set an X at the bottom right
board(2, 2) = "X"
' Show board
Console.WriteLine(board(0, 0) + "|" + board(1, 0) + "|" + board(2, 0))
Console.WriteLine("-----")
Console.WriteLine(board(0, 1) + "|" + board(1, 1) + "|" + board(2, 1))
Console.WriteLine("-----")
Console.WriteLine(board(0, 2) + "|" + board(1, 2) + "|" + board(2, 2))

который дает:

 | |
-----
 |O|
-----
 | |X

Для небольшого вдохновения на стороне GUI, вот короткий пример Silverlight (написанный в F#): Крестики-нолики

person Phillip Trelford    schedule 09.04.2014