РефератыИнформатика, программированиеПрПрограммирование логической игры на visual basic

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

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


 


Пошаговое описание процесса
программирования всех процедур игры Oflameron – Он-Лайн версия.


Данное руководство содержит
подробнейшее описание процесса разработки полного аналога JAVA-игры
на Visual Basic 6.0 (часть 1). В следующих
частях документа:


                -
Часть 2 – доводка игровой программы


                -
Часть 3 – разработка версии игры на VB для
«наладонных» компьютеров


                -
Часть 4 – разработка версии игры на Delphi


                -
Часть 5 – разработка версии игры на JAVA для
сотовых телефонов


OFLAMERON


Часть 1


Создадим проект формата Project EXE.
Создадим форму Form1 размером 2715х5745. На форме расположим
элемент Frame, а в нем разместим элементы Label1 – Label55. Где Label1 – Label6 это колонка Level. А Label7 – Label46
– ячейки игрового поля с номиналами. Label 47-48 – ячейки
для служебной информации. Нижний цветной индикатор образован Label49-Label55.



            Колонке элементов Level и игровому полю будут соответствовать числовые массивы.


  Массив Dim level(5)


  Массив
Dim field(8, 6)


            Краткое описание игры. Игра начинается с
установки игроком маркера в любую ячейку нижнего ряда ячеек (просто Click-нуть мышкой). Такая ячейка выделяется синим цветом,



а номинал занятой ячейки прибавляется (либо вычитается) к
счету игрока.  Нижний цветной линейный индикатор  начинает укорачиваться. Пока
индикатор не исчез, игрок может перемещать игровой маркер по нижней строке
вправо или влево от текущего положения нажимая на клавиатуре стрелки «Вправо»
или «Влево». Номиналы всех ячеек, которые будет «проходить» маркер, будут
прибавляться (или вычитаться) к счету. Как только весь цветной линейный
индикатор исчезнет, игрок не может перемещать свой маркер (на мгновение), а
номиналы всех ячеек сдвигаются сверху-вниз на одну строчку. Верхняя строка
игрового поля заполняется новыми значениями от генератора случайных чисел. При
этом, номинал ячейки, сдвинувшейся сверху на ячейку, в которой уже находится
маркер, так же прибавляется к счету – это может существенно изменить ваш счет.
После этого цветной линейный индикатор восстанавливается и начинает опять
укорачиваться, а игрок опять может перемещать игровой маркер.


Счет игры ведется в оранжевой ячейке


Игра ведется до тех пор, пока счет игрока не станет равным
нулю или маркер не попадет на ячейку с номиналом |End|.


            Игра совсем не так проста, как может показаться.
Совсем легко разместить свой маркер так, что на него сместится ячейка с
номиналом |Z| - обнуление счета, или |End|
- окончание игры.


            Здесь описывается процесс программирования 
«текстовой версии» логической табличной игры «Oflameron».
Номиналы ячеек представлены на экране в символьном виде, а ячейки представляют
собой элементы Label. В следующей части документа будет
представлено полное описание процесса разработки графической версии игры и
версии игры для карманных компьтеров (PDA).


Программирование


            Заполним ячейки игрового (массив field(8, 6))поля значениями от генератора случайных чисел.
Вычислим количество секунд в текущем времени и столько раз «прокрутим» цикл с
обращением к генератору случайных чисел:


TM = Time                   'Получить время в переменную


TTMS = Len(TM)          'Определить длину строки с значением
времени


TTM = Mid$(TM, 7, 2)   'Выделить из строки количество секунд


For i = 0 To TTM             ‘Цикл с числом повторений, равным количеству
секунд


Form1.Caption = Int((20 * Rnd) + 1)  ‘Значения запишем в
заголовок формы, чтобы


                                                              ‘посмотреть, что работает


Next i


Заполним массив field(8, 5). Полностью процедура будет:


Private Sub
Set_Nominal()


TM = Time                  
'Получить время в переменную


TTMS = Len(TM)          'Определить длину строки с значением времени


TTM = Mid$(TM, 7, 2)   'Выделить из строки количество секунд


For i = 0 To TTM          


Form1.Caption = Int((20 * Rnd) + 1)


Next i


'--------------------------------------------------


' Заполним массив
field(8, 5)


For i = 0 To 7


  For j = 0 To 4


  field(i, j) = Int((20 * Rnd) + 1)


  Next j


Next i


End Sub


Теперь можно записать тестовую процедуру Private Sub Fdraw()
для того, чтобы посмотреть, как заполняется массив field(8,
6)


Процедура будет выглядеть следующим образом:


Private Sub Fdraw()


Label7.Caption = field(0, 0)


Label8.Caption = field(1, 0)


Label9.Caption = field(2, 0)


Label10.Caption = field(3, 0)


Label11.Caption = field(4, 0)


Label12.Caption = field(5, 0)


Label13.Caption = field(6, 0)


Label14.Caption = field(7, 0)


Label15.Caption = field(0, 1)


Label16.Caption = field(1, 1)


Label17.Caption = field(2, 1)


Label18.Caption = field(3, 1)


Label19.Caption = field(4, 1)


Label20.Caption = field(5, 1)


Label21.Caption = field(6, 1)


Label22.Caption = field(7, 1)


Label23.Caption = field(0, 2)


Label24.Caption = field(1, 2)


Label25.Caption = field(2, 2)


Label26.Caption = field(3, 2)


Label27.Caption = field(4, 2)


Label28.Caption = field(5, 2)


Label29.Caption = field(6, 2)


Label30.Caption = field(7, 2)


Label31.Caption = field(0, 3)


Label32.Caption = field(1, 3)


Label33.Caption = field(2, 3)


Label34.Caption = field(3, 3)


Label35.Caption = field(4, 3)


Label36.Caption = field(5, 3)


Label37.Caption = field(6, 3)


Label38.Caption = field(7, 3)


Label39.Caption = field(0, 4)


Label40.Caption = field(1, 4)


Label41.Caption = field(2, 4)


Label42.Caption = field(3, 4)


Label43.Caption = field(4, 4)


Label44.Caption = field(5, 4)


Label45.Caption = field(6, 4)


Label46.Caption = field(7, 4)


End Sub


Т.е. здесь просто каждая ячейка записывается в Caption каждой ячейки. Такой метод не
стоит считать оптимальным и в последующем можно использовать другие приемы
программирования. Чтобы посмотреть резльтаты, нужно вставить вызов двух
процедур Private Sub Set_Nominal() и Private Sub Fdraw()  в автозапуск при старте программы (на время):


Private Sub Form_Load()


Set_Nominal


Fdraw


End Sub


Полный проект на Visual
Basic этого этапа разработки
игры – в файле vbg1.zip


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


            Перепишем процедуру Fdraw() в другую процедуру. Создадим еще одну Label56 для
временного хранения «сгенерированного» номинала ячейки и ее цветовых атрибутов
(выделена на рисунке).



Private Sub Color_Chars()


If field(i, j) = 0 Then Label56.Caption =
"+1"


If field(i, j) = 0 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 0 Then Label56.ForeColor =
&H80000008


If field(i, j) = 1 Then Label56.Caption =
"-1"


If field(i, j) = 1 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 1 Then Label56.ForeColor =
&H80000008


If field(i, j) = 2 Then Label56.Caption =
"+5"


If field(i, j) = 2 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 2 Then Label56.ForeColor =
&H80000008


If field(i, j) = 3 Then Label56.Caption =
"-5"


If field(i, j) = 3 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 3 Then Label56.ForeColor =
&H80000008


If field(i, j) = 4 Then Label56.Caption =
"+10"


If field(i, j) = 4 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 4 Then Label56.ForeColor =
&H80000008


If field(i, j) = 5 Then Label56.Caption =
"-10"


If field(i, j) = 5 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 5 Then Label56.ForeColor =
&H80000008


If field(i, j) = 6 Then Label56.Caption =
"+15"


If field(i, j) = 6 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 6 Then Label56.ForeColor =
&H80000008


If field(i, j) = 7 Then Label56.Caption =
"-15"


If field(i, j) = 7 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 7 Then Label56.ForeColor =
&H80000008


If field(i, j) = 8 Then Label56.Caption =
"+25"


If field(i, j) = 8 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 8 Then Label56.ForeColor =
&H80000008


If field(i, j) = 9 Then Label56.Caption =
"T"


If field(i, j) = 9 Then Label56.BackColor =
&HABCFBB


If field(i, j) = 9 Then Label56.ForeColor =
&H80000008


If field(i, j) = 10 Then Label56.Caption =
"P"


If field(i, j) = 10 Then Label56.BackColor
= &HFFC0C0


If field(i, j) = 10 Then Label56.ForeColor
= &H80000008


If field(i, j) = 11 Then Label56.Caption =
"B"


If field(i, j) = 11 Then Label56.BackColor
= &H80FFFF


If field(i, j) = 11 Then Label56.ForeColor
= &H80000008


If field(i, j) = 12 Then Label56.Caption =
"Z"


If field(i, j) = 12 Then Label56.BackColor
= &H40&


If field(i, j) = 12 Then Label56.ForeColor
= &HFFFFFF


If field(i, j) = 13 Then Label56.Caption =
"Z"


If field(i, j) = 13 Then Label56.BackColor
= &H40&


If field(i, j) = 13 Then Label56.ForeColor
= &HFFFFFF


If field(i, j) = 14 Then Label56.Caption =
"End"


If field(i, j) = 14 Then Label56.BackColor
= &HFF&


If field(i, j) = 14 Then Label56.ForeColor
= &HFFFFFF


If field(i, j) = 15 Then Label56.Caption =
"-10"


If field(i, j) = 15 Then Label56.BackColor
= &HBBECF4


If field(i, j) = 15 Then Label56.ForeColor
= &H80000008


If field(i, j) = 16 Then Label56.Caption =
"-5"


If field(i, j) = 16 Then Label56.BackColor
= &HBBECF4


If field(i, j) = 16 Then Label56.ForeColor
= &H80000008


If field(i, j) = 17 Then Label56.Caption =
"-1"


If field(i, j) = 17 Then Label56.BackColor
= &HBBECF4


If field(i, j) = 17 Then Label56.ForeColor
= &H80000008


If field(i, j) = 18 Then Label56.Caption =
"+1"


If field(i, j) = 18 Then Label56.BackColor
= &HBBECF4


If field(i, j) = 18 Then Label56.ForeColor
= &H80000008


If field(i, j) = 19 Then Label56.Caption =
"+5"


If field(i, j) = 19 Then Label56.BackColor
= &HBBECF4


If field(i, j) = 19 Then Label56.ForeColor
= &H80000008


End Sub


Теперь добавим копирование значения и атрибутов ячейки Label56 в
ячейку игрового поля и используем несколько циклов для обработки всего массива field(8, 6):


- пример копирования


Label7.Caption =
Label56.Caption


Label7.BackColor =
Label56.BackColor


Label7.ForeColor =
Label56.ForeColor


В итоге появится процедура Sub Field_Fill() копирования
номиналов из «дежурной» ячейки Label56, а процедура Color_Chars() изменится следующим образом:


Private Sub Color_Chars()


If field(i, j) = 0 Then Label56.Caption =
"+1"


If field(i, j) = 0 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 0 Then Label56.ForeColor =
&H80000008


If field(i, j) = 1 Then Label56.Caption =
"-1"


If field(i, j) = 1 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 1 Then Label56.ForeColor =
&H80000008


If field(i, j) = 2 Then Label56.Caption =
"+5"


If field(i, j) = 2 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 2 Then Label56.ForeColor =
&H80000008


If field(i, j) = 3 Then Label56.Caption =
"-5"


If field(i, j) = 3 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 3 Then Label56.ForeColor =
&H80000008


If field(i, j) = 4 Then Label56.Caption =
"+10"


If field(i, j) = 4 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 4 Then Label56.ForeColor =
&H80000008


If field(i, j) = 5 Then Label56.Caption =
"-10"


If field(i, j) = 5 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 5 Then Label56.ForeColor =
&H80000008


If field(i, j) = 6 Then Label56.Caption =
"+15"


If field(i, j) = 6 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 6 Then Label56.ForeColor =
&H80000008


If field(i, j) = 7 Then Label56.Caption =
"-15"


If field(i, j) = 7 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 7 Then Label56.ForeColor =
&H80000008


If field(i, j) = 8 Then Label56.Caption =
"+25"


If field(i, j) = 8 Then Label56.BackColor =
&HBBECF4


If field(i, j) = 8 Then Label56.ForeColor =
&H80000008


If field(i, j) = 9 Then Label56.Caption =
"T"


If field(i, j) = 9 Then Label56.BackColor =
&HABCFBB


If field(i, j) = 9 Then Label56.ForeColor =
&H80000008


If field(i, j) = 10 Then Label56.Caption =
"P"


If field(i, j) = 10 Then Label56.BackColor
= &HFFC0C0


If field(i, j) = 10 Then Label56.ForeColor
= &H80000008


If field(i, j) = 11 Then Label56.Caption =
"B"


If field(i, j) = 11 Then Label56.BackColor
= &H80FFFF


If field(i, j) = 11 Then Label56.ForeColor
= &H80000008


If field(i, j) = 12 Then Label56.Caption =
"Z"


If field(i, j) = 12 Then Label56.BackColor
= &H40&


If field(i, j) = 12 Then Label56.ForeColor
= &HFFFFFF


If field(i, j) = 13 Then Label56.Caption =
"Z"


If field(i, j) = 13 Then Label56.BackColor
= &H40&


If field(i, j) = 13 Then Label56.ForeColor
= &HFFFFFF


If field(i, j) = 14 Then Label56.Caption =
"End"


If field(i, j) = 14 Then Label56.BackColor
= &HFF&


If field(i, j) = 14 Then Label56.ForeColor
= &HFFFFFF


If field(i, j) = 15 Then Label56.Caption =
"-10"


If field(i, j) = 15 Then Label56.BackColor
= &HBBECF4


If field(i, j) = 15 Then Label56.ForeColor
= &H80000008


If field(i, j) = 16 Then Label56.Caption =
"-5"


If field(i, j) = 16 Then Label56.BackColor
= &HBBECF4


If field(i, j) = 16 Then Label56.ForeColor
= &H80000008


If field(i, j) = 17 Then Label56.Caption =
"-1"


If field(i, j) = 17 Then Label56.BackColor
= &HBBECF4


If field(i, j) = 17 Then Label56.ForeColor
= &H80000008


If field(i, j) = 18 Then Label56.Caption = "+1"


If field(i, j) = 18 Then Label56.BackColor
= &HBBECF4


If field(i, j) = 18 Then Label56.ForeColor
= &H80000008


If field(i, j) = 19 Then Label56.Caption =
"+5"


If field(i, j) = 19 Then Label56.BackColor
= &HBBECF4


If field(i, j) = 19 Then Label56.ForeColor
= &H80000008


'Label7.Caption = Label56.Caption


'Label7.BackColor = Label56.BackColor


'Label7.ForeColor = Label56.ForeColor


'Form1.Caption = field(0, 0)


End Sub


Private Sub Field_Fill()


'Копирование номиналов и атрибутов из «дежурной» ячейки  Label56


k = 0 ‘Счетчик ячеек


For j = 0 To 4


  For i = 0 To 7


  Color_Chars
'Поместить следующее значение из массива field(i, j) в Label56


                       ‘и вычислить цветовые атрибуты
символа и фона по ее номиналу


  If k = 0 Then Label7.Caption = Label56.Caption


  If k = 0 Then Label7.BackColor =
Label56.BackColor


  If k = 0 Then Label7.ForeColor =
Label56.ForeColor


 


  If k = 1 Then Label8.Caption =
Label56.Caption


  If k = 1 Then Label8.BackColor =
Label56.BackColor


  If k = 1 Then Label8.ForeColor = Label56.ForeColor


 


  If k = 2 Then Label9.Caption =
Label56.Caption


  If k = 2 Then Label9.BackColor =
Label56.BackColor


  If k = 2 Then Label9.ForeColor =
Label56.ForeColor


 


  If k = 3 Then Label10.Caption =
Label56.Caption


  If k = 3 Then Label10.BackColor =
Label56.BackColor


  If k = 3 Then Label10.ForeColor =
Label56.ForeColor


 


  If k = 4 Then Label11.Caption =
Label56.Caption


  If k = 4 Then Label11.BackColor =
Label56.BackColor


  If k = 4 Then Label11.ForeColor =
Label56.ForeColor


 


  If k = 5 Then Label12.Caption =
Label56.Caption


  If k = 5 Then Label12.BackColor =
Label56.BackColor


  If k = 5 Then Label12.ForeColor =
Label56.ForeColor


 


  If k = 6 Then Label13.Caption =
Label56.Caption


  If k = 6 Then Label13.BackColor =
Label56.BackColor


  If k = 6 Then Label13.ForeColor =
Label56.ForeColor


 


  If k = 7 Then Label14.Caption =
Label56.Caption


  If k = 7 Then Label14.BackColor =
Label56.BackColor


  If k = 7 Then Label14.ForeColor =
Label56.ForeColor


 


  If k = 8 Then Label15.Caption = Label56.Caption


  If k = 8 Then Label15.BackColor =
Label56.BackColor


  If k = 8 Then Label15.ForeColor =
Label56.ForeColor


 


  If k = 9 Then Label16.Caption =
Label56.Caption


  If k = 9 Then Label16.BackColor =
Label56.BackColor


  If k = 9 Then Label16.ForeColor =
Label56.ForeColor


 


  If k = 10 Then Label17.Caption =
Label56.Caption


  If k = 10 Then Label17.BackColor =
Label56.BackColor


  If k = 10 Then Label17.ForeColor =
Label56.ForeColor


 


  If k = 11 Then Label18.Caption =
Label56.Caption


  If k = 11 Then Label18.BackColor =
Label56.BackColor


  If k = 11 Then Label18.ForeColor =
Label56.ForeColor


 


  If k = 12 Then Label19.Caption =
Label56.Caption


  If k = 12 Then Label19.BackColor =
Label56.BackColor


  If k = 12 Then Label19.ForeColor =
Label56.ForeColor


 


  If k = 13 Then Label20.Caption =
Label56.Caption


  If k = 13 Then Label20.BackColor =
Label56.BackColor


  If k = 13 Then Label20.ForeColor =
Label56.ForeColor


 


  If k = 14 Then Label21.Caption =
Label56.Caption


  If k = 14 Then Label21.BackColor = Label56.BackColor


  If k = 14 Then Label21.ForeColor =
Label56.ForeColor


 


  If k = 15 Then Label22.Caption =
Label56.Caption


  If k = 15 Then Label22.BackColor =
Label56.BackColor


  If k = 15 Then Label22.ForeColor =
Label56.ForeColor


 


  If k = 16 Then Label23.Caption =
Label56.Caption


  If k = 16 Then Label23.BackColor =
Label56.BackColor


  If k = 16 Then Label23.ForeColor =
Label56.ForeColor


 


  If k = 17 Then Label24.Caption =
Label56.Caption


  If k = 17 Then Label24.BackColor =
Label56.BackColor


  If k = 17 Then Label24.ForeColor =
Label56.ForeColor


 


  If k = 18 Then Label25.Caption =
Label56.Caption


  If k = 18 Then Label25.BackColor =
Label56.BackColor


  If k = 18 Then Label25.ForeColor =
Label56.ForeColor


 


  If k = 19 Then Label26.Caption = Label56.Caption


  If k = 19 Then Label26.BackColor =
Label56.BackColor


  If k = 19 Then Label26.ForeColor =
Label56.ForeColor


 


  If k = 20 Then Label27.Caption =
Label56.Caption


  If k = 20 Then Label27.BackColor =
Label56.BackColor


  If k = 20 Then Label27.ForeColor =
Label56.ForeColor


 


   If k = 21 Then Label28.Caption =
Label56.Caption


  If k = 21 Then Label28.BackColor =
Label56.BackColor


  If k = 21 Then Label28.ForeColor =
Label56.ForeColor


 


  If k = 22 Then Label29.Caption =
Label56.Caption


  If k = 22 Then Label29.BackColor =
Label56.BackColor


  If k = 22 Then Label29.ForeColor =
Label56.ForeColor


 


  If k = 23 Then Label30.Caption =
Label56.Caption


  If k = 23 Then Label30.BackColor =
Label56.BackColor


  If k = 23 Then Label30.ForeColor = Label56.ForeColor


 


  If k = 24 Then Label31.Caption =
Label56.Caption


  If k = 24 Then Label31.BackColor =
Label56.BackColor


  If k = 24 Then Label31.ForeColor =
Label56.ForeColor


 


  If k = 25 Then Label32.Caption =
Label56.Caption


  If k = 25 Then Label32.BackColor =
Label56.BackColor


  If k = 25 Then Label32.ForeColor =
Label56.ForeColor


 


  If k = 26 Then Label33.Caption =
Label56.Caption


  If k = 26 Then Label33.BackColor =
Label56.BackColor


  If k = 26 Then Label33.ForeColor =
Label56.ForeColor


 


  If k = 27 Then Label34.Caption =
Label56.Caption


  If k = 27 Then Label34.BackColor =
Label56.BackColor


  If k = 27 Then Label34.ForeColor =
Label56.ForeColor


 


  If k = 28 Then Label35.Caption =
Label56.Caption


  If k = 28 Then Label35.BackColor =
Label56.BackColor


  If k = 28 Then Label35.ForeColor =
Label56.ForeColor


 


  If k = 29 Then Label36.Caption =
Label56.Caption


  If k = 29 Then Label36.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

<
br />

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



Процедура  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 ‘Загасить элемент индикатора


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                'Временно разрешить рисование маркера


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


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


    vt = markersave


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


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


End If


If markersave = 2 Then


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


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


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


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


    vt = markersave


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


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


End If


If markersave = 3 Then


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


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


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


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


    vt = markersave


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


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


End If


If markersave = 4 Then


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


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


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


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


    vt = markersave


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


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


End If


If markersave = 5 Then


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


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


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


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


    vt = markersave


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


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


End If


If markersave = 6 Then


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


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


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


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


    vt = markersave


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


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


End If


If markersave = 7 Then


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


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


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


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


    vt = markersave


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


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


End If


markersave = vt


n = 0


Set_Marker_Count


End Sub


Теперь нужно сделать всего одну
процедуру – процедуру сдвига нумерации текущих игровых уровней:


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


            Показательный момент –
написаны все процедуры для software-реализации игры Oflameron. Т.е. Вы создали совершенно работоспособную игровую
программу на Visual Basic. Представлять ее как коммерческий продукт рано – еще много
«шероховатостей». Например, если Click-нуть на объекте Frame, то игра начнется без установки маркера.


Устранению
таких «шероховатостей», приданию программе коммерческого вида будет посвящена
2-я часть руководства.


            - Часть 2 – доводка
игровой программы


            - Часть 3 – разработка
версии игры на VB для
«наладонных» компьютеров


            - Часть 4 – разработка
версии игры на Delphi


            - Часть 5 – разработка
версии игры на JAVA для сотовых
телефонов


 



На сайте http://freeproject.narod.ru выложена другая версия программирования игры Oflameron на Visual
Basic 6.0


На сайте http://play-man.narod.ru выложена версия игры Oflameron на листочке бумаги. Достаточно просто распечатать игровой
бланк из документа MS Word и играть.


Резюме (не полное):


- ассемблер – 8 лет


- JAVA – 4 года


- VB – 6 лет


- PHP – 5 лет


P.S. Не считайте это описание оптимальным. Но это лучшее руководство
по программированию игры в РуНет-е.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Программирование логической игры на visual basic

Слов:6667
Символов:60433
Размер:118.03 Кб.