Программные объекты и их инициализация
При проектировании интерфейса были введены образы объектов, с которыми может взаимодействовать конечный пользователь. Теперь пришла пора ввести сами объекты. Обычно это одна из самых серьезных задач, требующая, как правило, введения собственных классов, тщательного продумывания свойств, методов и событий, которыми должны обладать объекты класса. Мы же можем обойтись без особых сложностей, поскольку у нас довольно простая задача. Наши объекты, подчиняясь игроку, выполняют лишь некоторые перемещения, число которых ограниченно. Задача программы следить лишь за тем, чтобы эти перемещения соответствовали небольшому числу правил. Заметьте, что это игра человека с самим собой, а не игра человека с компьютером. Нам нет необходимости в реализации какой-либо стратегии игры за компьютер, нам нужно лишь следить за выполнением правил. Мы вообще можем и не уметь решать эту задачу, это должен делать играющий, а не программист, реализующий условия для игры. Такие игры устроены просто и, например, написать сетевой вариант программы игры в шахматы, в которой черными и белыми играют два игрока, также просто, как и нашу игру.
Для реализации игры достаточно ввести 5 переменных, следящих за состоянием перемещаемых объектов: человека, волка, козы, капусты и лодки. Каждый из них может находиться в трех состояниях, быть на левом берегу, правом берегу или в лодке (у объекта Boat всего два состояния). Еще одна переменная будет следить за числом пассажиров в лодке. Вот описания из раздела Declarations стандартного модуля с именем WGCModule, который я создал первым делом:
Листинг 6.1.
(html, txt)
Приведем теперь процедуру InitialStates, которая задает начальные установки для наших переменных и визуальных объектов:
Листинг 6.2.
(html, txt)
Процедура InitialStates будет вызываться в ответ на такие события, как инициализация или активация нашей формы:
Private Sub UserForm_Activate() InitialStates End Sub
Private Sub UserForm_Initialize() InitialStates End Sub
Листинг 6.3.
(html, txt)
on_load_lecture()