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

If firstset = 0 Then Label13.BackColor = &HFF0000 'Маркер СИНЕГО цвета

If firstset = 0 Then firstset = 1 'Больше не обрабатывать

markersave = 6 'Маркер в ячейке, соответствующей savecolor(6)

End Sub

Private Sub Label14_Click()

If firstset = 0 Then Save_Color 'Запомнить цвет фона всех ячеек нижней строки

If firstset = 0 Then Label14.BackColor = &HFF0000 'Маркер СИНЕГО цвета

If firstset = 0 Then firstset = 1 'Больше не обрабатывать

markersave = 7 'Маркер в ячейке, соответствующей savecolor(7)

End Sub

Private Sub Save_Color()

savecolor(0) = Label7.BackColor 'Запомнить предыдущий цвет фона Label7

savecolor(1) = Label8.BackColor 'Запомнить предыдущий цвет фона Label8

savecolor(2) = Label9.BackColor 'Запомнить предыдущий цвет фона Label9

savecolor(3) = Label10.BackColor 'Запомнить предыдущий цвет фона Label10

savecolor(4) = Label11.BackColor 'Запомнить предыдущий цвет фона Label11

savecolor(5) = Label12.BackColor 'Запомнить предыдущий цвет фона Label12

savecolor(6) = Label13.BackColor 'Запомнить предыдущий цвет фона Label13

savecolor(7) = Label14.BackColor 'Запомнить предыдущий цвет фона Label14

End Sub

Процедура Save_Color() будет использоваться для восстановления цвета ячеек при перемещении маркера по горизонтали (по нижней строке игрового поля).

Создадим переменную markersave в которой будем запоминать НОМЕР ЭЛЕМЕНТА массива savecolor(j), которая соответствует ячейке с маркером (в которую поставили маркер).

Можно проверить, что маркер возможно поставить только в одну ячейку. Теперь нужно обеспечить сохранение маркера (окраску ячейки в синий цвет) при сдвигании ячеек сверху-вниз.

Процедура восстановления цвета маркера после смещения ячеек игрового поля сверху-вниз:

Private Sub Marker_Reset()

If markersave = 0 Then Label7.BackColor = &HFF0000

If markersave = 1 Then Label8.BackColor = &HFF0000

If markersave = 2 Then Label9.BackColor = &HFF0000

If markersave = 3 Then Label10.BackColor = &HFF0000

If markersave = 4 Then Label11.BackColor = &HFF0000

If markersave = 5 Then Label12.BackColor = &HFF0000

If markersave = 6 Then Label13.BackColor = &HFF0000

If markersave = 7 Then Label14.BackColor = &HFF0000

End Sub

Теперь «подключим» процедуру Marker_Reset() к работе в процедуре сдвига вниз. В самый низ процедуры Frame1_Click() вставим следующий код (выделен красным цветом):

Private Sub Frame1_Click()

Num_Move 'Сдвинуть значения всех строк на одну вниз

Up_Str_App 'Заполнить верхнюю строку новыми номиналами

Marker_Reset 'Восстановить маркер

End Sub

Полный VB-проект с этого этапа разработки игры - в файле vbg5.zip

Напишем процедуру подсчета очков при установке маркера в начале игры.

Private Sub Set_Marker_Count()

'Подсчет очков при постановке маркера

Dim et 'В эту переменную будут записаны результаты пересчета значений массива field(i,j)

'в номинал ячеек

If n = 0 Then

‘В какую из ячеек поставлен маркер – какие ячейки field(i,j) ей соответствуют

If markersave = 0 Then et = field(0, 0)

If markersave = 1 Then et = field(1, 0)

If markersave = 2 Then et = field(2, 0)

If markersave = 3 Then et = field(3, 0)

If markersave = 4 Then et = field(4, 0)

If markersave = 5 Then et = field(5, 0)

If markersave = 6 Then et = field(6, 0)

If markersave = 7 Then et = field(7, 0)

‘Написать счет

If et = 0 Then Label48.Caption = Label48.Caption + 1

If et = 1 Then Label48.Caption = Label48.Caption - 1

If et = 2 Then Label48.Caption = Label48.Caption + 5

If et = 3 Then Label48.Caption = Label48.Caption - 5

If et = 4 Then Label48.Caption = Label48.Caption + 10

If et = 5 Then Label48.Caption = Label48.Caption - 10

If et = 6 Then Label48.Caption = Label48.Caption + 15

If et = 7 Then Label48.Caption = Label48.Caption - 15

If et = 8 Then Label56.Caption = Label48.Caption + 25

If et = 9 Then Label48.Caption = Label48.Caption + 500

If et = 10 Then Label48.Caption = Label48.Caption + 100

If et = 11 Then Label48.Caption = Label48.Caption - 200

If et = 12 Then Label48.Caption = 0

If et = 13 Then Label48.Caption = 0

If et = 14 Then End

If et = 15 Then Label48.Caption = Label48.Caption - 10

If et = 16 Then Label48.Caption = Label48.Caption - 5

If et = 17 Then Label48.Caption = Label48.Caption - 1

If et = 18 Then Label48.Caption = Label48.Caption + 1

If et = 19 Then Label48.Caption = Label48.Caption + 5

If et = 20 Then Label48.Caption = Label48.Caption - 25

n = 1 'Больше не обрабатывать, т.к. маркер уже нарисован

End If

End Sub

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

Private Sub Timer1_Timer()

IndLent = IndLent + 1

If IndLent = 9 Then

IndLent = 0

Timer1.Interval = 500 ‘Восстановим интервал таймера

End If

Print_Ind 'Нарисуем индикатор

End Sub

Процедура рисования индикатора:

Private Sub Print_Ind()

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

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

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

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

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


Страница: