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

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

6.BackColor = Label56.BackColor
  If k = 29 Then Label36.ForeColor = Label56.ForeColor

  If k = 30 Then Label37.Caption = Label56.Caption
  If k = 30 Then Label37.BackColor = Label56.BackColor
  If k = 30 Then Label37.ForeColor = Label56.ForeColor

  If k = 31 Then Label38.Caption = Label56.Caption
  If k = 31 Then Label38.BackColor = Label56.BackColor
  If k = 31 Then Label38.ForeColor = Label56.ForeColor

  If k = 32 Then Label39.Caption = Label56.Caption
  If k = 32 Then Label39.BackColor = Label56.BackColor
  If k = 32 Then Label39.ForeColor = Label56.ForeColor

  If k = 33 Then Label40.Caption = Label56.Caption
  If k = 33 Then Label40.BackColor = Label56.BackColor
  If k = 33 Then Label40.ForeColor = Label56.ForeColor

  If k = 34 Then Label41.Caption = Label56.Caption
  If k = 34 Then Label41.BackColor = Label56.BackColor
  If k = 34 Then Label41.ForeColor = Label56.ForeColor

  If k = 35 Then Label42.Caption = Label56.Caption
  If k = 35 Then Label42.BackColor = Label56.BackColor
  If k = 35 Then Label42.ForeColor = Label56.ForeColor

  If k = 36 Then Label43.Caption = Label56.Caption
  If k = 36 Then Label43.BackColor = Label56.BackColor
  If k = 36 Then Label43.ForeColor = Label56.ForeColor

  If k = 37 Then Label44.Caption = Label56.Caption
  If k = 37 Then Label44.BackColor = Label56.BackColor
  If k = 37 Then Label44.ForeColor = Label56.ForeColor

  If k = 38 Then Label45.Caption = Label56.Caption
  If k = 38 Then Label45.BackColor = Label56.BackColor
  If k = 38 Then Label45.ForeColor = Label56.ForeColor

  If k = 39 Then Label46.Caption = Label56.Caption
  If k = 39 Then Label46.BackColor = Label56.BackColor
  If k = 39 Then Label46.ForeColor = Label56.ForeColor

k = k + 1
  Next i
Next j
End Sub

Такой вариант заполнения игрового поля НАЧАЛЬНЫМИ значениями (при старте
игры) нельзя считать оптимальным. Однако он очень нагляден для понимания
алгоритма.

Процедура Form_Load() теперь будет выглядеть так:

Private Sub Form_Load()
Set_Nominal
Fdraw
Field_Fill
End Sub

Для того, чтобы посмотреть, как все работает, добавим еще одну процедуру
Form_Click()  (на некоторое время. Для отладки):

Private Sub Form_Click()
Set_Nominal   ‘Заполнить массив field(i,j)
Fdraw              ‘Нарисовать на игровом поле значения массива field(i,j)
– для отладки
Field_Fill         ‘Нарисовать реальные номиналы ячеек и цветовые атрибуты
End Sub

- она полностью идентична процедуре Form_Load()

Теперь, кликая мышкой на поле формы Form1 (только формы),  Вы можете
посмотреть, что значения номиналов ячеек и их цветовые атрибуты меняются
правильно.

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

Процедуру Form_Click() можно удалить.

      Разработаем процедуру Num_Move(), переписывающую значения и цветовые
атрибуты ячеек игрового поля построчно, сверху – вниз. А так же –
заполняющую верхний ряд игрового поля новыми значениями (т.е. новые
значения ячеек как бы вводятся сверху игрового поля). Процедура будет
содержать просто операторы копирования. Вы можете сами разработать более
оптимальный алгоритм копирования.

Private Sub Num_Move()
For j = 0 To 4
  For i = 0 To 7
  field(i, j) = field(i, j + 1)
  Next i
Next j

Field_Fill 'Нарисовать новые значения на экран

End Sub

Чтобы посмотреть, как работает копирование значений и атрибутов ячеек
сверху вниз, создадим «временную» процедуру обработки Click-а на рамке
Frame1:
Private Sub Frame1_Click()
Num_Move
End Sub

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

      Теперь нужно добавить код Private Sub Up_Str_App() для заполнения
верхней строки игрового поля новыми значениями.


Private Sub Up_Str_App()
TM = Time                   'Прочитать текущее время
TTMS = Len(TM)          'Длина строки с временем
TTM = Mid$(TM, 7, 2)   'Выделить секунды

For i = 0 To TTM           'Повторить цикл столько раз, сколько секунд
Next i
'--------------------------------------------------
' Заполнить верхнюю строку массива field(i, 5)
For i = 0 To 7
  field(i, 5) = Int((20 * Rnd) + 1)
Next i
'--------------------------------------------------
'Заполнить верхнюю строку номиналами, копируя их из  Label56

Field_Fill 'Перерисовать значения на экране, с новыми значениями верхней
строки
End Sub

Подключим вызов процедуры в Frame1.Click
Полный VB-проект с этого этапа разработки игры -  в файле vbg4.zip
Покликайте мышкой на поле Frame1 и посмотрите, как все работает!


      Теперь нужно написать код обработки постановки игроком игрового
маркера в любую из ячеек нижней строки игрового поля.

Процедура для сохранения цветовых атрибутов всех ячеек нижней строки до
установки маркера:

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

Создадим триггер firstset = 0
Триггер =0, если маркер в нижнюю строку еще не ставили.

Общий фрагмент кода, обрабатывающий установку маркера в нижней строке:

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 'Маркер в ячейке, соответствующей  savecolor(0)
End Sub
Private Sub Label8_Click()
If firstset = 0 Then Save_Color 'Запомнить цвет фона всех ячеек нижней
строки
If firstset = 0 Then Label8.BackColor = &HFF0000 'Маркер СИНЕГО цвета
If firstset = 0 Then firstset = 1 'Больше не обрабатывать
markersave = 1 'Маркер в ячейке, соответствующей  savecolor(1)
End Sub
Private Sub Label9_Click()
If firstset = 0 Then Save_Color 'Запомнить цвет фона всех ячеек нижней
строки
If firstset = 0 Then Label9.BackColor = &HFF0000 'Маркер СИНЕГО цвета
If firstset = 0 Then firstset = 1 'Больше не обрабатывать
markersave = 2 'Маркер в ячейке, соответствующей  savecolor(2)
End Sub
Private Sub Label10_Click()
If firstset = 0 Then Save_Color 'Запомнить цвет фона всех ячеек нижней
строки
If firstset = 0 Then Label10.BackColor = &HFF0000 'Маркер СИНЕГО цвета
If firstset = 0 Then firstset = 1 'Больше не обрабатывать
markersave = 3 'Маркер в ячейке, соответствующей  savecolor(3)
End Sub
Private Sub Label11_Click()
If firstset = 0 Then Save_Color 'Запомнить цвет фона всех ячеек нижней
строки
If firstset = 0 Then Label11.BackColor = &HFF0000 'Маркер СИНЕГО цвета
If firstset = 0 Then firstset = 1 'Больше не обрабатывать
markersave = 4 'Маркер в ячейке, соответствующей  savecolor(4)
End Sub
Private Sub Label12_Click()
If firstset = 0 Then Save_Color 'Запомнить цвет фона всех ячеек нижней
строки
If firstset = 0 Then Label12.BackColor = &HFF0000 'Маркер СИНЕГО цвета
If firstset = 0 Then firstset = 1 'Больше не обрабатывать
markersave = 5 'Маркер в ячейке, соответствующей  savecolor(5)
End Sub
Private Sub Label13_Click()
If firstset = 0 Then Save_Color 'Запомнить цвет фона всех ячеек нижней
строки
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

[pic]



Процедура  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
12345
скачать работу

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

 

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

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


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