Руководство по разработке динамической логической игры на Visual Basic 6.0
Рефераты >> Программирование и компьютеры >> Руководство по разработке динамической логической игры на Visual Basic 6.0

If IndLent = 6 Then Label50.Visible = False ‘Загасить элемент индикатора

If IndLent = 7 Then Label49.Visible = False ‘Загасить элемент индикатора

If IndLent = 7 Then Timer1.Interval = 100 ‘Уменьшить интервал, чтобы индикатор

‘восстанавливался побыстрее

If IndLent = 0 Then ‘Нарисовать индикатор полностью

Label55.Visible = True

Label54.Visible = True

Label53.Visible = True

Label52.Visible = True

Label51.Visible = True

Label50.Visible = True

Label49.Visible = True

End If

End Sub

Можно посмотреть, как индикатор работает.

Теперь таймер нужно «задизейблить» и разрешать только после того, как маркер будет поставлен в нижнюю строку игрового поля. Разрешение таймера вставим в процедуру постановки маркера на нижней строке игрового поля (а точнее – в процедуру подсчета очков после установки маркера 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

И собственно код обработки:

Private Sub Timer2_Timer()

'Обработка нажатия клавиш "стрелка влево" и "стрелка вправо"

If (GetAsyncKeyState(vbKeyLeft)) Then

' Кнопка влево

Form1.Caption = "Left"

ElseIf (GetAsyncKeyState(vbKeyRight)) Then

' Кнопка вправо

Form1.Caption = "Right"

End If

End Sub

Надписи в заголовке формы "Left" и "Right" выводятся только для отладки.

Переменная markersave однозначно показывает в какой ячейке нижней строки игрового поля стоит маркер. Напишем процедуру перемещения маркера вправо-влево по нижней строке:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

'Обработка нажатия клавиш «стрелка вправо» и «стрелка влево»

If (GetAsyncKeyState(vbKeyLeft)) Then

' Кнопка влево

Form1.Caption = "Left"

Move_Point_Left 'Переместить маркер влево

ElseIf (GetAsyncKeyState(vbKeyRight)) Then

' Кнопка вправо

Form1.Caption = "Right"

Move_Point_Right 'Переместить маркер вправо

End If

End Sub

Private Sub Move_Point_Left()

If markersave = 0 Then 'Если самая левая ячейка нижней строки

markersave = 7 'Левее самой левой ячейки – самая ПРАВАЯ (циклический переход)

firstset = 0 'Временно разрешить рисование маркера

Label7.BackColor = savecolor(0) 'Восстановить цвет фона ячейки, где БЫЛ маркер

Label14_Click 'Переместить маркер (самая правая ячейка!)

vt = markersave

markersave = 10 'Запретить ложные срабатывания (значение 10 не соответствует

‘никакой ячейке)

End If

If markersave = 1 Then

markersave = 0 'Поместить левее

firstset = 0 'Временно разрешить рисование маркера

Label8.BackColor = savecolor(1) 'Восстановить цвет ячейки, где БЫЛ маркер

Label7_Click 'Переместить маркер

vt = markersave

markersave = 10 'Запретить ложные срабатывания (значение 10 не соответствует

‘никакой ячейке)

End If

If markersave = 2 Then

markersave = 1 'Поместить левее

firstset = 0 'Временно разрешить рисование маркера

Label9.BackColor = savecolor(2) 'Восстановить цвет ячейки, где БЫЛ маркер

Label8_Click 'Переместить маркер

vt = markersave

markersave = 10 'Запретить ложные срабатывания (значение 10 не соответствует

‘никакой ячейке)

End If

If markersave = 3 Then

markersave = 2 'Поместить левее

firstset = 0 'Временно разрешить рисование маркера

Label10.BackColor = savecolor(3) 'Восстановить цвет ячейки, где БЫЛ маркер

Label9_Click 'Переместить маркер

vt = markersave

markersave = 10 'Запретить ложные срабатывания (значение 10 не соответствует

‘никакой ячейке)

End If

If markersave = 4 Then

markersave = 3 'Поместить левее

firstset = 0 'Временно разрешить рисование маркера

Label11.BackColor = savecolor(4) 'Восстановить цвет ячейки, где БЫЛ маркер

Label10_Click 'Переместить маркер

vt = markersave

markersave = 10 'Запретить ложные срабатывания (значение 10 не соответствует

‘никакой ячейке)

End If

If markersave = 5 Then

markersave = 4 'Поместить левее

firstset = 0 'Временно разрешить рисование маркера

Label12.BackColor = savecolor(5) 'Восстановить цвет ячейки, где БЫЛ маркер

Label11_Click 'Переместить маркер

vt = markersave

markersave = 10 'Запретить ложные срабатывания (значение 10 не соответствует

‘никакой ячейке)

End If

If markersave = 6 Then

markersave = 5 ''Поместить левее

firstset = 0 'Временно разрешить рисование маркера

Label13.BackColor = savecolor(6) 'Восстановить цвет ячейки, где БЫЛ маркер

Label12_Click 'Переместить маркер

vt = markersave

markersave = 10 'Запретить ложные срабатывания (значение 10 не соответствует

‘никакой ячейке)

End If

If markersave = 7 Then

markersave = 6 'Поместить левее

firstset = 0 'Временно разрешить рисование маркера

Label14.BackColor = savecolor(7) 'Восстановить цвет ячейки, где БЫЛ маркер

Label13_Click 'Переместить маркер

vt = markersave

markersave = 10 'Запретить ложные срабатывания (значение 10 не соответствует

‘никакой ячейке)

End If

markersave = vt

n = 0

Set_Marker_Count

End Sub

Private Sub Move_Point_Right()

If markersave = 0 Then 'Если самая левая ячейка

markersave = 1 'Переместить правее (т.к. значение > на 1)

firstset = 0 'Временно разрешить рисование маркера

Label7.BackColor = savecolor(0) 'Восстановить цвет ячейки, где БЫЛ маркер

Label8_Click 'Переместить маркер

vt = markersave

markersave = 10 'Запретить ложные срабатывания (значение 10 не соответствует

‘никакой ячейке)

End If

If markersave = 1 Then

markersave = 2 'Переместить правее (т.к. значение > на 1)

firstset = 0 'Временно разрешить рисование маркера


Страница: