|
|
|
Теперь «подключим» процедуру подсчета очков – в каждую из процедур Click-а для ячеек нижней строки:
Private Sub Label7_Click()
If firstset = 0 Then Save_Color 'Запомнить цвет фона
If firstset = 0 Then Label7.BackColor = &HFF0000 'Поставить цвет фона маркера (синий)
If firstset = 0 Then firstset = 1 'Больше не обрабатывать
markersave = 0 'Указывает на ячейку, в которую установлен маркер
Set_Marker_Count ‘Скорректировать счет
End Sub
Для остальных ячеек нижней строки – точно так же.
Теперь напишем процедуру подсчета очков при сдвиге ячеек сверху – вниз.
Процедура будет выглядеть чрезвычайно просто:
Private Sub Dn_Count()
'Подсчитать очки при сдвиге сверху - вниз
n = 0 ‘Временно разрешить работу процедуры Set_Marker_Count
Set_Marker_Count ‘Процедура подсчета очков при постановке маркера
End Sub
Курсовая бесплатно
Для демонстрации работы процедуры вставим ее вызов в процедуру сдвига рядов ячеек сверху – вниз Frame1_Click():
Private Sub Frame1_Click()
Num_Move 'Сдвинуть номиналы всех ячеек сверху - вниз
Up_Str_App 'Заполнить верхнюю строку игрового поля новыми номиналами
Marker_Reset 'Восстановить маркер
Dn_Count 'Подсчитать очки при сдвиге сверху - вниз
End Sub
Полный VB-проект с этого этапа разработки игры - в файле vbg6.zip
Создадим процедуру работы цветного линейного индикатора. Добавим на форму таймер Timer1 и сразу «разрешим» его. Листинг процедуры.
Можно посмотреть, как индикатор работает.
Теперь таймер нужно «задизейблить» и разрешать только после того, как маркер будет поставлен в нижнюю строку игрового поля. Разрешение таймера вставим в процедуру постановки маркера на нижней строке игрового поля (а точнее – в процедуру подсчета очков после установки маркера Set_Marker_Count(), т.к. она общая для всех ячеек нижнего уровня). В конце процедуры Set_Marker_Count() появится строка:
Timer1.Enabled = True 'Разрешить таймер, т.к. маркер поставлен
Полный VB-проект с этого этапа разработки игры - в файле vbg7.zip
Когда цветной линейный индикатор полностью исчезнет, необходимо сдвинуть все строки с ячейками игрового поля сдвинуть вниз (процедура Frame1_Click() ), на маркер, подсчитать очки и заполнить верхнюю строку игрового поля новыми значениями номиналов.
Процедура работы таймера Timer1 будет выглядеть следующим образом:
Private Sub Timer1_Timer()
IndLent = IndLent + 1
If IndLent = 9 Then
IndLent = 0
Timer1.Interval = 500
Frame1_Click 'Сдвинуть уровни
End If
Print_Ind 'Нарисовать индикатор
End Sub
Теперь нужно написать обработку нажатий клавиш и перемещения маркера вправо-влево по нижней строке ячеек игрового поля.
Разместим на форме Form1 еще один таймер Timer2. Поставим интервал времени для Timer2 = 50 и поместим в процедуру работы принтера код проверки состояния клавиш. Объявим нужное для работы процедуры:
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Собственно код обработки - см. листинг.
Курсовая работа
Надписи в заголовке формы "Left" и "Right" выводятся только для отладки. Переменная markersave однозначно показывает в какой ячейке нижней строки игрового поля стоит маркер. Напишем процедуру перемещения маркера вправо-влево по нижней строке - см. листинг.
Теперь нужно сделать всего одну процедуру – процедуру сдвига нумерации текущих игровых уровней |Level|:
Private Sub Level_Count()
Label6.Caption = Label6.Caption + 1
Label5.Caption = Label6.Caption + 1
Label4.Caption = Label5.Caption + 1
Label3.Caption = Label4.Caption + 1
Label2.Caption = Label3.Caption + 1
End Sub
Подключим процедуру сдвига слоев к работе, например так:
Private Sub Dn_Count()
'Подсчитывать очки при сдвиге сверху вниз
n = 0
Set_Marker_Count
Level_Count 'Сдвинуть уровни Level
End Sub
Полный VB-проект с этого этапа разработки игры - в файле vbg8.zip
Один из финальных вариантов игры из 2-й части руководства (с системой бонусов, с процедурами усложнения, с доступом к Internet) - в файле vbg15.zip
Показательный момент – написаны все процедуры для software-реализации игры Oflameron. Т.е. Вы создали совершенно работоспособную игровую программу на Visual Basic. Представлять ее как коммерческий продукт рано – еще много «шероховатостей». Например, если Click-нуть на объекте Frame, то игра начнется без установки маркера.
Устранению таких «шероховатостей», приданию программе коммерческого вида будет посвящена 2-я часть руководства. В 3-ей части руководства описан процесс конвертирования игры в графический вариант.
|
|