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

Руководство по разработке динамическойлогической игры на VisualBasic6.0

Работу подготовил Валерий Шмелев

Москва

Данноеруководство содержит подробнейшее описание процесса разработки полного аналога 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)  ‘Значения запишем в заголовок формы, чтобы

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

Nexti

Заполниммассив 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

EndSub

Теперьможно записать тестовую процедуру 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)

EndSub

Т.е.здесь просто каждая ячейка записывается в 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

EndSub

Теперьдобавим копирование значения и атрибутов ячейки 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

EndSub

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

Private Sub Form_Click()

Set_Nominal   ‘Заполнить массивfield(i,j)

Fdraw             ‘Нарисовать на игровом поле значения массива field(i,j) – дляотладки

Field_Fill        ‘Нарисовать реальные номиналы ячеек и цветовые атрибуты

EndSub

— она полностью идентична процедуре 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)   'Выделить секунды

Fori = 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()

Iffirstset = 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

EndSub

/>/>

Процедура 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‘Процедура подсчета очков при постановке маркера

EndSub

Длядемонстрации работы процедуры вставим ее вызов в процедуру сдвига рядов ячеексверху – вниз  Frame1_Click():

Private Sub Frame1_Click()

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

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

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

Dn_Count'Подсчитать очки при сдвиге сверху — вниз

EndSub

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

Создадимпроцедуру работы цветного линейного индикатора. Добавим на форму таймер Timer1 и сразу «разрешим» его.

Private Sub Timer1_Timer()

IndLent = IndLent + 1

If IndLent = 9 Then

   IndLent = 0

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

End If

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

EndSub

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

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

EndSub

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

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

EndSub

Теперьнужно написать обработку нажатий клавиш и перемещения маркера вправо-влево понижней строке ячеек игрового поля.

Разместимна форме 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

EndSub

Подключимпроцедуру сдвига слоев к работе, например так:

Private Sub Dn_Count()

'Подсчитыватьочки при сдвиге сверху вниз

n = 0

Set_Marker_Count

Level_Count 'Сдвинуть уровни Level

EndSub

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

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

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

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

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

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

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

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

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

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

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

— JAVA – 4 года

— VB – 6 лет

— PHP – 5 лет

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

еще рефераты
Еще работы по информатике, программированию