Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Программирование логической игры на visual basic



Теперь «подключим» процедуру 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 ‘Загасить элемент индикатора
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 не
со
12345
скачать работу

Программирование логической игры на visual basic

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ