Керівництво
з розробки динамічної логічної гри на b> Visual b> b> Basic b> 6.0 b> p>
Роботу
підготував Валерій Шмельов p>
Москва p>
Дане
керівництво містить докладне опис процесу розробки повного аналога JAVA-ігри на Visual Basic 6.0 (частина 1). У наступних частинах
документа: p>
- Частина 2 --
доведення ігрової програми p>
- Частина 3 --
розробка версії гри на VB для «наладонних» комп'ютерів p>
- Частина 4 --
розробка версії гри на Delphi p>
- Частина 5 --
розробка версії гри на JAVA для стільникових телефонів p>
OFLAMERON h2>
Частина 1 h2>
Створимо проект
формату Project EXE. Створимо форму Form1 розміром 2715х5745. На формі розташуємо
елемент Frame, а в ньому
розмістимо елементи Label1
- Label55. Де Label1 - Label6 це колонка Level. А Label7 - Label46 - комірки ігрового поля з номіналами. Label 47-48 - комірки для службової інформації.
Нижній кольоровий індикатор утворений Label49-Label55. P>
p>
колонці елементів
Level і ігровому полю
будуть відповідати числові масиви. p>
Масив Dim level (5) p>
Масив Dim field (8, 6) p>
Короткий
опис гри. Гра починається з установки гравцем маркера в будь-яку клітинку
нижнього ряду осередків (просто Click-ОХФШ мишкою). Така осередок виділяється синім кольором, p>
p>
а номінал
зайнятої комірки додається (або віднімається) до рахунку гравця. Нижній кольоровий лінійний індикатор починає зменшуватися. Поки індикатор
зник, гравець може переміщати ігровий маркер по нижній частині праворуч або ліворуч
від поточного положення натискаючи на клавіатурі стрілки «Вправо» або «Ліворуч».
Номінали всіх осередків, які буде «проходити» маркер, будуть додаватися (або
відніматися) до рахунку. Як тільки весь кольоровий лінійний індикатор зникне, гравець
не може переміщати свій маркер (на мить), а номінали всіх осередків
зсуваються зверху-вниз на один рядок. Верхній рядок ігрового поля
заповнюється новими значеннями від генератора випадкових чисел. При цьому, номінал
осередку, зрушивши зверху на клітинку, в якій уже знаходиться маркер, так само
додається до рахунку - це може суттєво змінити ваш рахунок. Після цього кольоровий
лінійний індикатор відновлюється і знову починає зменшуватися, а гравець
знову може переміщати ігровий маркер. p>
Рахунок гри
ведеться в помаранчевій комірці p>
Игра до ведеться
тих пір, поки рахунок гравця не стане рівним нулю або маркер не потрапить на клітинку
з номіналом | End |. p>
Гра зовсім не
так проста, як може здатися. Зовсім легко розмістити свій маркер так, що
на нього зміститься осередок з номіналом | Z | - обнулення рахунку, або | End | - закінчення гри. p>
Тут
описується процес програмування
«Текстової версії» логічної табличній гри «Oflameron». Номінали осередків представлені на екрані в
символьному вигляді, а осередки представляють собою елементи Label. В наступній частині документа буде
представлено повний опис процесу розробки графічної версії гри і
версії гри для кишенькових комп'ютерів (PDA). p>
Програмування h2>
Заповнимо осередку
ігрового (масив field (8,
6)) поля значеннями від генератора випадкових чисел. Обчислимо кількість секунд в
поточному часу і стільки разів «прокрутити» цикл зі звертанням до генератора
випадкових чисел: p>
TTMS =
Len (TM) 'Визначити довжину рядка
з значенням часу p>
TTM
= Mid $ (TM, 7, 2)
'Виділити з рядка кількість секунд p>
For i =
0 To TTM 'Цикл з числом повторень, рівним
кількості секунд p>
Form1.Caption =
Int ((20 * Rnd) + 1) 'Значення запишемо в
заголовок форми, щоб p>
'подивитися, що працює p>
Next i p>
Заповнимо масив
field (8, 5). Повністю процедура буде: p>
Private Sub Set_Nominal () p>
TM =
Time 'Отримати час в змінну p>
TTMS
= Len (TM)
'Визначити довжину рядка з значенням часу p>
TTM
= Mid $ (TM, 7, 2)
'Виділити з рядка кількість секунд p>
For i = 0 To TTM p>
Form1.Caption = Int ((20 * Rnd) + 1) p>
Next i p>
'---------------------------------------------- ---- p>
'Заповнимо
масив field (8, 5) p>
For i = 0 To 7 p>
For j = 0 To 4 p>
field (i, j) =
Int ((20 Rnd *) + +1) p>
Next j p>
Next i p>
End Sub p>
Тепер можна
записати тестову процедуру Private Sub Fdraw () для того, щоб подивитися, як
заповнюється масив field (8,
6) p>
Процедура буде
виглядати наступним чином: p>
Private Sub Fdraw () p>
Label7.Caption = field (0, 0) p>
Label8.Caption = field (1, 0) p>
Label9.Caption = field (2, 0) p>
Label10.Caption = field (3, 0) p>
Label11.Caption = field (4, 0) p>
Label12.Caption = field (5, 0) p>
Label13.Caption = field (6, 0) p>
Label14.Caption = field (7, 0) p>
Label15.Caption = field (0, 1) p>
Label16.Caption = field (1, 1) p>
Label17.Caption = field (2, 1) p>
Label18.Caption = field (3, 1) p>
Label19.Caption = field (4, 1) p>
Label20.Caption = field (5, 1) p>
Label21.Caption = field (6, 1) p>
Label22.Caption = field (7, 1) p>
Label23.Caption = field (0, 2) p>
Label24.Caption = field (1, 2) p>
Label25.Caption = field (2, 2) p>
Label26.Caption = field (3, 2) p>
Label27.Caption = field (4, 2) p>
Label28.Caption = field (5, 2) p>
Label29.Caption = field (6, 2) p>
Label30.Caption = field (7, 2) p>
Label31.Caption = field (0, 3) p>
Label32.Caption = field (1, 3) p>
Label33.Caption = field (2, 3) p>
Label34.Caption = field (3, 3) p>
Label35.Caption = field (4, 3) p>
Label36.Caption = field (5, 3) p>
Label37.Caption = field (6, 3) p>
Label38.Caption = field (7, 3) p>
Label39.Caption = field (0, 4) p>
Label40.Caption = field (1, 4) p>
Label41.Caption = field (2, 4) p>
Label42.Caption = field (3, 4) p>
Label43.Caption = field (4, 4) p>
Label44.Caption = field (5, 4) p>
Label45.Caption = field (6, 4) p>
Label46.Caption = field (7, 4) p>
End Sub p>
Тобто тут
просто кожен осередок записується в Caption кожного отвору. Такий метод не варто
вважати оптимальним і у подальшому можна використовувати інші прийоми
програмування. Щоб подивитися резльтати, потрібно вставити виклик двох
процедур Private Sub Set_Nominal () і Private Sub Fdraw () в автозапуск при старті програми (на час): p>
Private Sub Form_Load () p>
Set_Nominal p>
Fdraw p>
End Sub p>
Повний проект
на Visual Basic цього етапу розробки гри - у файлі
vbg1.zip p>
Тепер потрібно
створити процедуру, в якій буде аналізуватися комірки масиву field (8, 6) і в залежності від їх значень
буде формуватися потрібне символьне значення (номінал) комірки ігрового поля і
задаватися потрібний колір символу та фону комірки. p>
Перепишемо
процедуру Fdraw ()
в іншу процедуру. Створимо ще одну Label56 для тимчасового зберігання «згенерованого» номіналу
комірки та її колірних атрибутів (виділена на малюнку). p>
p>
Private Sub Color_Chars () p>
If field (i, j) = 0 Then Label56.Caption =
"1" p>
If field (i, j) = 0 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 0 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 1 Then Label56.Caption =
"-1" P>
If field (i, j) = 1 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 1 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 2 Then Label56.Caption =
"5" p>
If field (i, j) = 2 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 2 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 3 Then Label56.Caption =
"-5" P>
If field (i, j) = 3 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 3 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 4 Then Label56.Caption = "10" p>
If field (i, j) = 4 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 4 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 5 Then Label56.Caption =
"-10" P>
If field (i, j) = 5 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 5 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 6 Then Label56.Caption =
"15" p>
If field (i, j) = 6 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 6 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 7 Then Label56.Caption =
"-15" P>
If field (i, j) = 7 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 7 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 8 Then Label56.Caption =
"25" p>
If field (i, j) = 8 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 8 Then Label56.ForeColor = & H80000008 p>
If field (i, j) = 9 Then Label56.Caption =
"T" p>
If field (i, j) = 9 Then Label56.BackColor =
& HABCFBB p>
If field (i, j) = 9 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 10 Then Label56.Caption =
"P" p>
If field (i, j) = 10 Then Label56.BackColor =
& HFFC0C0 p>
If field (i, j) = 10 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 11 Then Label56.Caption =
"B" p>
If field (i, j) = 11 Then Label56.BackColor =
& H80FFFF p>
If field (i, j) = 11 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 12 Then Label56.Caption =
"Z" p>
If field (i, j) = 12 Then Label56.BackColor =
& H40 & p>
If field (i, j) = 12 Then Label56.ForeColor =
& HFFFFFF p>
If field (i, j) = 13 Then Label56.Caption =
"Z" p>
If field (i, j) = 13 Then Label56.BackColor =
& H40 & p>
If field (i, j) = 13 Then Label56.ForeColor =
& HFFFFFF p>
If field (i, j) = 14 Then Label56.Caption =
"End" p>
If field (i, j) = 14 Then Label56.BackColor =
& HFF & p>
If field (i, j) = 14 Then Label56.ForeColor =
& HFFFFFF p>
If field (i, j) = 15 Then Label56.Caption = "-10" p>
If field (i, j) = 15 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 15 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 16 Then Label56.Caption =
"-5" P>
If field (i, j) = 16 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 16 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 17 Then Label56.Caption =
"-1" P>
If field (i, j) = 17 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 17 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 18 Then Label56.Caption =
"1" p>
If field (i, j) = 18 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 18 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 19 Then Label56.Caption =
"5" p>
If field (i, j) = 19 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 19 Then Label56.ForeColor =
& H80000008 p>
End Sub p>
Тепер додамо
копіювання значення і атрибутів осередку Label56 в клітинку ігрового поля і використовуємо
кілька циклів для обробки всього масиву field (8, 6): p>
- приклад копіювання p>
Label7.Caption = Label56.Caption p>
Label7.BackColor = Label56.BackColor p>
Label7.ForeColor = Label56.ForeColor p>
У підсумку
з'явиться процедура Sub Field_Fill () копіювання номіналів з «черговою»
осередку Label56, а процедура Color_Chars () зміниться наступним чином: p>
Private Sub Color_Chars () p>
If field (i, j) = 0 Then Label56.Caption =
"1" p>
If field (i, j) = 0 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 0 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 1 Then Label56.Caption =
"-1" P>
If field (i, j) = 1 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 1 Then Label56.ForeColor = & H80000008 p>
If field (i, j) = 2 Then Label56.Caption =
"5" p>
If field (i, j) = 2 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 2 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 3 Then Label56.Caption =
"-5" P>
If field (i, j) = 3 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 3 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 4 Then Label56.Caption =
"10" p>
If field (i, j) = 4 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 4 Then Label56.ForeColor = & H80000008 p>
If field (i, j) = 5 Then Label56.Caption =
"-10" P>
If field (i, j) = 5 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 5 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 6 Then Label56.Caption =
"15" p>
If field (i, j) = 6 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 6 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 7 Then Label56.Caption =
"-15" P>
If field (i, j) = 7 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 7 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 8 Then Label56.Caption =
"25" p>
If field (i, j) = 8 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 8 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 9 Then Label56.Caption =
"T" p>
If field (i, j) = 9 Then Label56.BackColor =
& HABCFBB p>
If field (i, j) = 9 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 10 Then Label56.Caption =
"P" p>
If field (i, j) = 10 Then Label56.BackColor =
& HFFC0C0 p>
If field (i, j) = 10 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 11 Then Label56.Caption =
"B" p>
If field (i, j) = 11 Then Label56.BackColor =
& H80FFFF p>
If field (i, j) = 11 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 12 Then Label56.Caption =
"Z" p>
If field (i, j) = 12 Then Label56.BackColor =
& H40 & p>
If field (i, j) = 12 Then Label56.ForeColor = & HFFFFFF p>
If field (i, j) = 13 Then Label56.Caption =
"Z" p>
If field (i, j) = 13 Then Label56.BackColor =
& H40 & p>
If field (i, j) = 13 Then Label56.ForeColor =
& HFFFFFF p>
If field (i, j) = 14 Then Label56.Caption =
"End" p>
If field (i, j) = 14 Then Label56.BackColor = & HFF & p>
If field (i, j) = 14 Then Label56.ForeColor =
& HFFFFFF p>
If field (i, j) = 15 Then Label56.Caption =
"-10" P>
If field (i, j) = 15 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 15 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 16 Then Label56.Caption =
"-5" P>
If field (i, j) = 16 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 16 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 17 Then Label56.Caption =
"-1" P>
If field (i, j) = 17 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 17 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 18 Then Label56.Caption =
"1" p>
If field (i, j) = 18 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 18 Then Label56.ForeColor =
& H80000008 p>
If field (i, j) = 19 Then Label56.Caption =
"5" p>
If field (i, j) = 19 Then Label56.BackColor =
& HBBECF4 p>
If field (i, j) = 19 Then Label56.ForeColor =
& H80000008 p>
'Label7.Caption = Label56.Caption p>
'Label7.BackColor = Label56.BackColor p>
'Label7.ForeColor = Label56.ForeColor p>
'Form1.Caption = field (0, 0) p>
End Sub p>
Private Sub Field_Fill () p>
'Копіювання
номіналів і атрибутів з «черговою» комірки
Label56 p>
k = 0 'Счетчик осередків p>
For j = 0 To 4 p>
For i = 0 To 7 p>
Color_Chars 'Відправлено таке значення з масиву field (i, j) в Label56 p>
'і обчислити колірні
атрибути символу і фону за її номіналом p>
If k = 0 Then Label7.Caption =
Label56.Caption p>
If k = 0 Then
Label7.BackColor = Label56.BackColor p>
If k = 0 Then
Label7.ForeColor = Label56.ForeColor p>
p>
If k = 1 Then
Label8.Caption = Label56.Caption p>
If k = 1 Then
Label8.BackColor = Label56.BackColor p>
If k = 1 Then
Label8.ForeColor = Label56.ForeColor p>
p>
If k = 2 Then
Label9.Caption = Label56.Caption p>
If k = 2 Then
Label9.BackColor = Label56.BackColor p>
If k = 2 Then
Label9.ForeColor = Label56.ForeColor p>
p>
If k = 3 Then
Label10.Caption = Label56.Caption p>
If k = 3 Then
Label10.BackColor = Label56.BackColor p>
If k = 3 Then
Label10.ForeColor = Label56.ForeColor p>
p>
If k = 4 Then
Label11.Caption = Label56.Caption p>
If k = 4 Then
Label11.BackColor = Label56.BackColor p>
If k = 4 Then
Label11.ForeColor = Label56.ForeColor p>
p>
If k = 5 Then
Label12.Caption = Label56.Caption p>
If k = 5 Then
Label12.BackColor = Label56.BackColor p>
If k = 5 Then
Label12.ForeColor = Label56.ForeColor p>
p>
If k = 6 Then
Label13.Caption = Label56.Caption p>
If k = 6 Then
Label13.BackColor = Label56.BackColor p>
If k = 6 Then
Label13.ForeColor = Label56.ForeColor p>
p>
If k = 7 Then
Label14.Caption = Label56.Caption p>
If k = 7 Then
Label14.BackColor = Label56.BackColor p>
If k = 7 Then
Label14.ForeColor = Label56.ForeColor p>
p>
If k = 8 Then
Label15.Caption = Label56.Caption p>
If k = 8 Then
Label15.BackColor = Label56.BackColor p>
If k = 8 Then
Label15.ForeColor = Label56.ForeColor p>
p>
If k = 9 Then
Label16.Caption = Label56.Caption p>
If k = 9 Then
Label16.BackColor = Label56.BackColor p>
If k = 9 Then
Label16.ForeColor = Label56.ForeColor p>
p>
If k = 10 Then
Label17.Caption = Label56.Caption p>
If k = 10 Then
Label17.BackColor = Label56.BackColor p>
If k = 10 Then
Label17.ForeColor = Label56.ForeColor p>
p>
If k = 11 Then
Label18.Caption = Label56.Caption p>
If k = 11 Then
Label18.BackColor = Label56.BackColor p>
If k = 11 Then
Label18.ForeColor = Label56.ForeColor p>
p>
If k = 12 Then
Label19.Caption = Label56.Caption p>
If k = 12 Then
Label19.BackColor = Label56.BackColor p>
If k = 12 Then
Label19.ForeColor = Label56.ForeColor p>
p>
If k = 13 Then
Label20.Caption = Label56.Caption p>
If k = 13 Then
Label20.BackColor = Label56.BackColor p>
If k = 13 Then
Label20.ForeColor = Label56.ForeColor p>
p>
If k = 14 Then
Label21.Caption = Label56.Caption p>
If k = 14 Then
Label21.BackColor = Label56.BackColor p>
If k = 14 Then
Label21.ForeColor = Label56.ForeColor p>
p>
If k = 15 Then
Label22.Caption = Label56.Caption p>
If k = 15 Then
Label22.BackColor = Label56.BackColor p>
If k = 15 Then
Label22.ForeColor = Label56.ForeColor p>
p>
If k = 16 Then
Label23.Caption = Label56.Caption p>
If k = 16 Then
Label23.BackColor = Label56.BackColor p>
If k = 16 Then
Label23.ForeColor = Label56.ForeColor p>
p>
If k = 17 Then
Label24.Caption = Label56.Caption p>
If k = 17 Then
Label24.BackColor = Label56.BackColor p>
If k = 17 Then
Label24.ForeColor = Label56.ForeColor p>
p>
If k = 18 Then
Label25.Caption = Label56.Caption p>
If k = 18 Then
Label25.BackColor = Label56.BackColor p>
If k = 18 Then
Label25.ForeColor = Label56.ForeColor p>
p>
If k = 19 Then
Label26.Caption = Label56.Caption p>
If k = 19 Then
Label26.BackColor = Label56.BackColor p>
If k = 19 Then
Label26.ForeColor = Label56.ForeColor p>
p>
If k = 20 Then
Label27.Caption = Label56.Caption p>
If k = 20 Then
Label27.BackColor = Label56.BackColor p>
If k = 20 Then
Label27.ForeColor = Label56.ForeColor p>
p>
If k = 21 Then
Label28.Caption = Label56.Caption p>
If k = 21 Then
Label28.BackColor = Label56.BackColor p>
If k = 21 Then
Label28.ForeColor = Label56.ForeColor p>
p>
If k = 22 Then
Label29.Caption = Label56.Caption p>
If k = 22 Then
Label29.BackColor = Label56.BackColor p>
If k = 22 Then
Label29.ForeColor = Label56.ForeColor p>
p>
If k = 23 Then
Label30.Caption = Label56.Caption p>
If k = 23 Then
Label30.BackColor = Label56.BackColor p>
If k = 23 Then
Label30.ForeColor = Label56.ForeColor p>
p>
If k = 24 Then
Label31.Caption = Label56.Caption p>
If k = 24 Then
Label31.BackColor = Label56.BackColor p>
If k = 24 Then
Label31.ForeColor = Label56.ForeColor p>
p>
If k = 25 Then
Label32.Caption = Label56.Caption p>
If k = 25 Then
Label32.BackColor = Label56.BackColor p>
If k = 25 Then
Label32.ForeColor = Label56.ForeColor p>
p>
If k = 26 Then
Label33.Caption = Label56.Caption p>
If k = 26 Then
Label33.BackColor = Label56.BackColor p>
If k = 26 Then
Label33.ForeColor = Label56.ForeColor p>
p>
If k = 27 Then
Label34.Caption = Label56.Caption p>
If k = 27 Then
Label34.BackColor = Label56.BackColor p>
If k = 27 Then
Label34.ForeColor = Label56.ForeColor p>
p>
If k = 28 Then
Label35.Caption = Label56.Caption p>
If k = 28 Then
Label35.BackColor = Label56.BackColor p>
If k = 28 Then
Label35.ForeColor = Label56.ForeColor p>
p>
If k = 29 Then
Label36.Caption = Label56.Caption p>
If k = 29 Then
Label36.BackColor = Label56.BackColor p>
If k = 29 Then
Label36.ForeColor = Label56.ForeColor p>
p>
If k = 30 Then
Label37.Caption = Label56.Caption p>
If k = 30 Then
Label37.BackColor = Label56.BackColor p>
If k = 30 Then
Label37.ForeColor = Label56.ForeColor p>
p>
If k = 31 Then
Label38.Caption = Label56.Caption p>
If k = 31 Then
Label38.BackColor = Label56.BackColor p>
If k = 31 Then
Label38.ForeColor = Label56.ForeColor p>
p>
If k = 32 Then
Label39.Caption = Label56.Caption p>
If k = 32 Then
Label39.BackColor = Label56.BackColor p>
If k = 32 Then
Label39.ForeColor = Label56.ForeColor p>
p>
If k = 33 Then
Label40.Caption = Label56.Caption p>
If k = 33 Then
Label40.BackColor = Label56.BackColor p>
If k = 33 Then
Label40.ForeColor = Label56.ForeColor p>
p>
If k = 34 Then
Label41.Caption = Label56.Caption p>
If k = 34 Then
Label41.BackColor = Label56.BackColor p>
If k = 34 Then
Label41.ForeColor = Label56.ForeColor p>
p>
If k = 35 Then
Label42.Caption = Label56.Caption p>
If k = 35 Then
Label42.BackColor = Label56.BackColor p>
If k = 35 Then
Label42.ForeColor = Label56.ForeColor p>
p>
If k = 36 Then
Label43.Caption = Label56.Caption p>
If k = 36 Then
Label43.BackColor = Label56.BackColor p>
If k = 36 Then
Label43.ForeColor = Label56.ForeColor p>
p>
If k = 37 Then
Label44.Caption = Label56.Caption p>
If k = 37 Then
Label44.BackColor = Label56.BackColor p>
If k = 37 Then
Label44.ForeColor = Label56.ForeColor p>
p>
If k = 38 Then
Label45.Caption = Label56.Caption p>
If k = 38 Then
Label45.BackColor = Label56.BackColor p>
If k = 38 Then
Label45.ForeColor = Label56.ForeColor p>
p>
If k = 39 Then
Label46.Caption = Label56.Caption p>
If k = 39 Then
Label46.BackColor = Label56.BackColor p>
If k = 39 Then
Label46.ForeColor = Label56.ForeColor p>
p>
k = k + 1 p>
Next i p>
Next j p>
End Sub p>
Такий варіант
заповнення ігрового поля початкові значення (при старті гри) не можна вважати
оптимальним. Проте він дуже наочний для розуміння алгоритму. P>
Процедура Form_Load () тепер буде виглядати так: p>
Private Sub Form_Load () p>
Set_Nominal p>
Fdraw p>
Field_Fill p>
End Sub p>
Для того, щоб
подивитися, як все працює, додамо ще одну процедуру Form_Click () (на деякий
час. Для налагодження): p>
Private Sub Form_Click () p>
Set_Nominal 'Заповнити масив field (i, j) p>
Fdraw 'Намалювати на ігровому полі
значення масиву field (i, j) - для налагодження p>
Field_Fill 'Намалювати реальні номінали осередків та
колірні атрибути p>
End Sub p>
- вона повністю
ідентичнапроцедурі Form_Load () p>
Тепер, клікая
мишкою на полі форми Form1 (тільки форми), Ви можете
подивитися, що значення номіналів осередків та їх кольорові атрибути міняються
правильно. p>
Повний VB-проект з цього етапу розробки гри
- У файлі vbg2.zip p>
Процедуру Form_Click () можна видалити. p>
Розробимо
процедуру Num_Move (), переписують значення та кольорові атрибути осередків
ігрового поля порядково, зверху - вниз. А так само - що заповнює верхній ряд
ігрового поля нових значень (тобто нові значення комірок як би вводяться
зверху ігрового поля). Процедура буде містити просто оператори копіювання.
Ви можете самі розробити більш оптимальний алгоритм копіювання. P>
Private Sub Num_Move () p>
For j = 0 To 4 p>
For i = 0 To 7 p>
field (i, j) =
field (i, j + 1) p>
Next i p>
Next j p>
Field_Fill 'Намалювати нові значення на екран p>
End Sub p>
Щоб
подивитися, як працює копіювання значень і атрибутів осередків зверху вниз,
створимо «тимчасову» процедуру обробки Click-а на рамці Frame1: p>
Private Sub Frame1_Click () p>
Num_Move p>
End Sub p>
Повний VB-проект з цього етапу розробки гри
- У файлі vbg3.zip p>
Тепер потрібно
додати код Private Sub Up_Str_App () для заповнення верхнього рядка ігрового
поля новими значеннями. p>
Private Sub Up_Str_App () p>
TM = Time 'Прочитати поточний час p>
TTMS =
Len (TM) 'Фраза з часом p>
TTM = Mid $ (TM,
7, 2) 'Виділити секунди p>
For i = 0 To
TTM 'Повторити цикл стільки
разів, скільки секунд p>
Next i p>
'---------------------------------------------- ---- p>
'Заповнити
верхній рядок масиву field (i,
5) p>
For i = 0 To 7 p>
field (i, 5) =
Int ((20 * Rnd) + 1) p>
Next i p>
'---------------------------------------------- ---- p>
'Заповнити
верхній рядок номіналами, копіюючи їх з
Label56 p>
Field_Fill 'перемалювати значення на екрані, з
новими значеннями верхнього рядка p>
End Sub p>
Підключимо виклик
процедури в Frame1.Click p>
Повний VB-проект з цього етапу розробки гри
- У файлі vbg4.zip p>
покликати
мишкою на полі Frame1
і подивіться, як все працює! p>
Тепер потрібно
написати код обробки постановки гравцем ігрового маркера в будь-яку з комірок
нижнього рядка ігрового поля. p>
Процедура для
збереження колірних атрибутів всіх осередків нижнього рядка до встановлення маркера: p>
Private Sub Save_Color () p>
savecolor (0) = Label7.BackColor 'Запам'ятати колір фону Label7 p>
savecolor (1) = Label8.BackColor 'Запам'ятати колір фону Label8 p>
savecolor (2) = Label9.BackColor 'Запам'ятати колір фону Label9 p>
savecolor (3) = Label10.BackColor 'Запам'ятати колір фону
Label10 p>
savecolor (4) = Label11.BackColor 'Запам'ятати колір фону
Label11 p>
savecolor (5) = Label12.BackColor 'Запам'ятати колір фону
Label12 p>
savecolor (6) = Label13.BackColor 'Запам'ятати колір фону
Label13 p>
savecolor (7) = Label14.BackColor 'Запам'ятати колір фону
Label14 p>
End Sub p>
Створимо тригер firstset = 0 p>
Тригер = 0,
якщо маркер в нижній рядок ще не ставили. p>
Загальний фрагмент
коду, що обробляє встановлення маркера в нижній рядок: p>
Private Sub Label7_Click () p>
If firstset = 0
Then Save_Color 'Запам'ятати колір фону всіх осередків нижнього рядка p>
If firstset = 0 Then Label7.BackColor = & HFF0000 'Маркер СИНЕГО кольору p>
If firstset = 0 Then firstset = 1 'Більше не обробляти p>
markersave = 0 'Маркер у клітинці, що відповідає savecolor (0) p>
End Sub p>
Private Sub Label8_Click () p>
If firstset = 0 Then Save_Color 'Запам'ятати колір фону всіх осередків нижній
рядка p>
If firstset = 0 Then Label8.BackColor = & HFF0000 'Маркер СИНЕГО кольору p>
If firstset = 0 Then firstset = 1 'Більше не обробляти p>
markersave = 1 'Маркер у клітинці, що відповідає savecolor (1) p>
End Sub p>
Private Sub Label9_Click () p>
If firstset = 0 Then Save_Color 'Запам'ятати колір фону всіх осередків нижній
рядка p>
If firstset = 0 Then Label9.BackColor = & HFF0000 'Маркер СИНЕГО кольору p>
If firstset = 0 Then firstset = 1 'Більше не обробляти p>
markersave = 2 'Маркер у клітинці, що відповідає savecolor (2) p>
End Sub p>
Private Sub Label10_Click () p>
If firstset = 0 Then Save_Color 'Запам'ятати колір фону всіх осередків нижній
рядка p>
If firstset = 0 Then Label10.BackColor = & HFF0000
'Маркер СИНЕГО кольору p>
If firstset = 0 Then firstset = 1 'Більше не обробляти p>
markersave = 3 'Маркер у клітинці, що відповідає savecolor (3) p>
End Sub p>
Private Sub Label11_Click () p>
If firstset = 0 Then Save_Color 'Запам'ятати колір фону всіх осередків нижній
рядка p>
If firstset = 0 Then Label11.BackColor = & HFF0000
'Маркер СИНЕГО кольору p>
If firstset = 0 Then firstset = 1 'Більше не обробляти p>
markersave = 4 'Маркер у клітинці, що відповідає savecolor (4) p>
End Sub p>
Private Sub Label12_Click () p>
If firstset = 0 Then Save_Color 'Запам'ятати колір фону всіх осередків нижній
рядка p>
If firstset = 0 Then Label12.BackColor = & HFF0000
'Маркер СИНЕГО кольору p>
If firstset = 0 Then firstset = 1 'Більше не обробляти p>
markersave = 5 'Маркер у клітинці, що відповідає savecolor (5) p>
End Sub p>
Private Sub Label13_Click () p>
If firstset = 0 Then Save_Color 'Запам'ятати колір фону всіх осередків нижній
рядка p>
If firstset = 0 Then Label13.BackColor = & HFF0000
'Маркер СИНЕГО кольору p>
If firstset = 0 Then firstset = 1 'Більше не обробляти p>
markersave = 6 'Маркер у клітинці, що відповідає savecolor (6) p>
End Sub p>
Private Sub Label14_Click () p>
If firstset = 0 Then Save_Color 'Запам'ятати колір фону всіх осередків нижній
рядка p>
If firstset = 0 Then Label14.BackColor = & HFF0000
'Маркер СИНЕГО кольору p>
If firstset = 0 Then firstset = 1 'Більше не обробляти p>
markersave = 7 'Маркер у клітинці, що відповідає savecolor (7) p>
End Sub p>
Private Sub Save_Color () p>
savecolor (0) = Label7.BackColor 'Запам'ятати попередній
колір фону Label7 p>
savecolor (1) = Label8.BackColor 'Запам'ятати попередній
колір фону Label8 p>
savecolor (2) = Label9.BackColor 'Запам'ятати попередній
колір фону Label9 p>
savecolor (3) = Label10.BackColor 'Запам'ятати попередній
колір фону Label10 p>
savecolor (4) = Label11.BackColor 'Запам'ятати попередній
колір фону Label11 p>
savecolor (5) = Label12.BackColor 'Запам'ятати попередній
колір фону Label12 p>
savecolor (6) = Label13.BackColor 'Запам'ятати попередній
колір фону Label13 p>
savecolor (7) = Label14.BackColor 'Запам'ятати попередній
колір фону Label14 p>
End Sub p>
p>
Процедура Save_Color () буде використовуватися для
відновлення кольору осередків при переміщенні маркера по горизонталі (по нижній
рядку ігрового поля). p>
Створимо
змінну markersave в якій будемо запам'ятовувати номер елемента масиву savecolor (j), яка відповідає комірці з маркером (до якої
поставили маркер). p>
Можна
перевірити, що маркер можливо поставити тільки в одне відділення. Тепер потрібно
забезпечити збереження маркера (забарвлення осередки в синій колір) при зрушуванні осередків
зверху-вниз. p>
Процедура
відновлення кольору маркера після усунення осередків ігрового поля зверху-вниз: p>
Private Sub Marker_Reset () p>
If markersave = 0
Then Label7.BackColor = & HFF0000 p>
If markersave = 1
Then Label8.BackColor = & HFF0000 p>
If markersave = 2
Then Label9.BackColor = & HFF0000 p>
If markersave = 3
Then Label10.BackColor = & HFF0000 p>
If markersave = 4
Then Label11.BackColor = & HFF0000 p>
If markersave = 5
Then Label12.BackColor = & HFF0000 p>
If markersave = 6
Then Label13.BackColor = & HFF0000 p>
If markersave = 7
Then Label14.BackColor = & HFF0000 p>
End Sub p>
Тепер
«Підключимо» процедуру Marker_Reset () до роботи у процедурі зсуву вниз. У самий
низ процедури Frame1_Click () вставимо наступний код (виділено червоним кольором): p>
Private Sub Frame1_Click () p>
Num_Move 'Перемістити значення всіх рядків на одну
вниз p>
Up_Str_App 'Заповнити верхній рядок новими номіналами p>
Marker_Reset 'Відновити маркер p>
End Sub p>
Повний VB-проект з цього етапу розробки гри
- У файлі vbg5.zip p>
Напишемо
процедуру підрахунку очок при установці маркера на початку гри. p>
Private Sub Set_Marker_Count () p>
'Підрахунок очок
при постановці маркера p>
Dim et
'У цю змінну будуть записані результати перерахунку значень масиву field (i, j) p>
'в номінал осередків p>
If n =
0 Then p>
'В яку з
осередків поставлений маркер - які клітинки field (i, j)
їй відповідають p>
If markersave = 0 Then et = field (0, 0) p>
If markersave = 1 Then et = field (1, 0) p>
If markersave = 2 Then et = field (2, 0) p>
If markersave = 3 Then et = field (3, 0) p>
If markersave = 4 Then et = field (4, 0) p>
If markersave = 5 Then et = field (5, 0) p>
If markersave = 6 Then et = field (6, 0) p>
If markersave = 7 Then et = field (7, 0) p>
'Написати рахунок p>
If et = 0 Then Label48.Caption = Label48.Caption + 1 p>
If et = 1 Then Label48.Caption = Label48.Caption - 1 p>
If et = 2 Then Label48.Caption = Label48.Caption + 5 p>
If et = 3 Then Label48.Caption = Label48.Caption - 5 p>
If et = 4 Then Label48.Caption = Label48.Caption + 10 p>
If et = 5 Then Label48.Caption = Label48.Caption - 10 p>
If et = 6 Then Label48.Caption = Label48.Caption + 15 p>
If et = 7 Then Label48.Caption = Label48.Caption - 15 p>
If et = 8 Then Label56.Caption = Label48.Caption + 25 p>
If et = 9 Then Label48.Caption = Label48.Caption + 500 p>
If et = 10 Then Label48.Caption = Label48.Caption +
100 p>
If et = 11 Then Label48.Caption = Label48.Caption --
200 p>
If et = 12 Then Label48.Caption = 0 p>
If et = 13 Then Label48.Caption = 0 p>
If et = 14 Then End p>
If et = 15 Then Label48.Caption = Label48.Caption - 10 p>
If et = 16 Then Label48.Caption = Label48.Caption - 5 p>
If et = 17 Then Label48.Caption = Label48.Caption - 1 p>
If et = 18 Then Label48.Caption = Label48.Caption + 1 p>
If et = 19 Then Label48.Caption = Label48.Caption + 5 p>
If et = 20 Then Label48.Caption = Label48.Caption - 25 p>
n =
1 'Більше не обробляти, тому що маркер вже намальований p>
End If p>
End Sub p>
Тепер
«Підключимо» процедуру підрахунку очок - у кожну з процедур Click-а для осередків нижній рядки: p>
Private Sub Label7_Click () p>
If firstset = 0 Then Save_Color 'Запам'ятати колір фону p>
If firstset = 0 Then Label7.BackColor = & HFF0000 'Поставить колір фону маркера (синій) p>
If firstset = 0 Then firstset = 1 'Більше не обробляти p>
markersave = 0 'Вказує на клітинку, в яку встановлено маркер p>
Set_Marker_Count 'Скорегувати рахунок p>
End Sub p>
Для інших
осередків нижнього рядка - точно так само. p>
Тепер напишемо
процедуру підрахунку очок при зсуві осередків зверху - вниз. p>
Процедура буде
виглядати надзвичайно просто: p>
Private Sub Dn_Count () p>
'Підрахувати
очки при зсуві зверху - вниз p>
n = 0 'Тимчасово дозволити роботу процедури
Set_Marker_Count p>
Set_Marker_Count
'Процедура підрахунку очок при постановці маркера p>
End Sub p>
Для демонстрації
роботи процедури вставимо її виклик до процедури зсуву рядів клітинок зверху --
вниз Frame1_Click (): p>
Private Sub Frame1_Click () p>
Num_Move
'Перемістити номінали всіх осередків зверху - вниз p>
Up_Str_App
'Заповнити верхній рядок ігрового поля новими номіналами p>
Marker_Reset
'Відновити маркер p>
Dn_Count
'Підрахувати очки при зсуві зверху - вниз p>
End Sub p>
Повний VB-проект з цього етапу розробки гри
- У файлі vbg6.zip p>
Створимо
процедуру роботи кольорового лінійного індикатора. Додамо на форму таймер Timer1 і відразу «дозволимо» його. P>
Private Sub Timer1_Timer () p>
IndLent = IndLent + 1 p>
If IndLent = 9 Then p>
IndLent = 0 p>
Timer1.Interval = 500 'Відновимо інтервал таймера p>
End If p>
Print_Ind
'Намалюємо індикатор p>
End Sub p>
Процедура
малювання індикатора: p>
Private Sub Print_Ind () p>
If IndLent = 1 Then Label55.Visible = False 'загасити елемент індикатора p>
If IndLent = 2 Then Label54.Visible = False 'загасити елемент індикатора p>
If IndLent = 3 Then Label53.Visible = False 'загасити елемент індикатора p>
If IndLent = 4 Then Label52.Visible = False 'загасити елемент індикатора p>
If IndLent = 5 Then Label51.Visible = False 'загасити елемент індикатора p>
If IndLent = 6 Then Label50.Visible = False 'загасити елемент індикатора p>
If IndLent = 7 Then Label49.Visible = False 'загасити елемент індикатора p>
If IndLent = 7 Then Timer1.Interval = 100
'Зменшити інтервал, щоб індикатор p>
'відновлювався швидше p>
If IndLent = 0 Then 'Намалювати
індикатор повністю p>
Label55.Visible = True p>
Label54.Visible = True p>
Label53.Visible = True p>
Label52.Visible = True p>
Label51.Visible = True p>
Label50.Visible = True p>
Label49.Visible = True p>
End If p>
End Sub p>
Можна
подивитися, як індикатор працює. p>
Тепер таймер
потрібно «задізейбліть» і вирішувати тільки після того, як маркер буде поставлений
в нижній рядок ігрового поля. Дозвіл таймера вставимо в процедуру
постановки маркера на нижній частині ігрового поля (а точніше - в процедуру
підрахунку очок після встановлення маркера Set_Marker_Count (), тому що вона спільна для
всіх осередків нижнього рівня). p>
Наприкінці
процедури Set_Marker_Count () з'явиться
рядок: p>
Timer1.Enabled
= True 'Дозволити таймер, тому що маркер
поставлений p>
Повний VB-проект з цього етапу розробки гри
- У файлі vbg7.zip p>
Коли кольоровий
лінійний індикатор повністю зникне, необхідно зрушити всі рядки з
осередками ігрового поля зрушити вниз (процедура Frame1_Click ()), на маркер, підрахувати окуляри і заповнити
верхній рядок ігрового поля новими значеннями номіналів. p>
Процедура
роботи таймера Timer1
буде виглядати наступним чином: p>
Private Sub Timer1_Timer () p>
IndLent = IndLent + 1 p>
If IndLent = 9 Then p>
IndLent = 0 p>
Timer1.Interval = 500 p>
Frame1_Click
'Перемістити рівні p>
End If p>
Print_Ind 'Намалювати індикатор p>
End Sub p>
Тепер потрібно
написати обробку натискань клавіш і переміщення маркера вправо-вліво по нижній
рядку осередків ігрового поля. p>
Розмістимо на
формі Form1 ще один таймер Timer2. Поставимо інтервал часу для Timer2 = 50 і помістимо в процедуру роботи
принтера код перевірки стану клавіш: p>
Оголосимо потрібне
для роботи процедури: p>
Private Declare Function GetAsyncKeyState Lib
"user32" (ByVal vKey As Long) As Integer p>
І власне
код обробки: p>
Private Sub Timer2_Timer () p>
'Обробка
натиснення клавіш "стрілка вліво" і "стрілка вправо" p>
If
(GetAsyncKeyState (vbKeyLeft)) Then p>
'
Кнопка вліво p>
Form1.Caption = "Left" p>
ElseIf (GetAsyncKeyState (vbKeyRight)) Then p>
'
Кнопка вправо p>
Form1.Caption = "Right" p>
End
If p>
End Sub p>
Написи в
заголовку форми "Left" і "Right" виводяться тільки для налагодження. p>
Змінна
markersave однозначно показує в якій клітинці нижнього рядка ігрового поля
стоїть маркер. Напишемо процедуру переміщення маркера вправо-вліво по нижній
рядку: p>
Private Sub Form_KeyDown (KeyCode As Integer, Shift As
Integer) p>
'Обробка
натиснення клавіш "стрілка вправо» і «стрілка вліво» p>
If
(GetAsyncKeyState (vbKeyLeft)) Then p>
'
Кнопка вліво p>
Form1.Caption = "Left" p>
Move_Point_Left 'Перемістити маркер
вліво p>
ElseIf (GetAsyncKeyState (vbKeyRight)) Then p>
'
Кнопка вправо p>
Form1.Caption = "Right" p>
Move_Point_Right 'Перемістити маркер
вправо p>
End If p>
End Sub p>
Private Sub Move_Point_Left () p>
If markersave = 0 Then 'Якщо сама ліва комірка нижнього рядка p>
markersave = 7 'Ліворуч від самої лівої комірки - сама ПРАВА
(циклічний перехід) p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label7.BackColor = savecolor (0) 'Відновити колір фону клітинки, де БУВ маркер p>
Label14_Click 'Перемістити
маркер (сама права осередок!) p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
If markersave = 1 Then p>
markersave = 0 'Відправлено лівіше p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label8.BackColor = savecolor (1) 'Відновити колір комірки, де БУВ маркер p>
Label7_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
If markersave = 2 Then p>
markersave = 1 'Відправлено лівіше p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label9.BackColor = savecolor (2) 'Відновити колір комірки, де БУВ маркер p>
Label8_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
If markersave = 3 Then p>
markersave = 2 'Відправлено лівіше p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label10.BackColor = savecolor (3) 'Відновити колір комірки, де БУВ маркер p>
Label9_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
If markersave = 4 Then p>
markersave = 3 'Відправлено лівіше p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label11.BackColor = savecolor (4) 'Відновити колір комірки, де БУВ маркер p>
Label10_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
If markersave = 5 Then p>
markersave = 4 'Відправлено лівіше p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label12.BackColor = savecolor (5) 'Відновити колір комірки, де БУВ маркер p>
Label11_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
If markersave = 6 Then p>
markersave = 5''Помістити лівіше p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label13.BackColor = savecolor (6) 'Відновити колір комірки, де БУВ маркер p>
Label12_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
If markersave = 7 Then p>
markersave = 6 'Відправлено лівіше p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label14.BackColor = savecolor (7) 'Відновити колір комірки, де БУВ маркер p>
Label13_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
markersave = vt p>
n = 0 p>
Set_Marker_Count p>
End Sub p>
Private Sub Move_Point_Right () p>
If markersave = 0 Then 'Еслі сама ліва комірка p>
markersave = 1 'Перемістити правіше (тому що значення
> На 1) p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label7.BackColor = savecolor (0) 'Відновити колір комірки, де БУВ маркер p>
Label8_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
If markersave = 1 Then p>
markersave = 2 'Перемістити правіше (тому що значення
> На 1) p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label8.BackColor = savecolor (1) 'Відновити колір комірки, де БУВ маркер p>
Label9_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
If markersave = 2 Then p>
markersave = 3 'Перемістити правіше (тому що значення
> На 1) p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label9.BackColor = savecolor (2) 'Відновити колір комірки, де БУВ маркер p>
Label10_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої клітинці) p>
End If p>
If markersave = 3 Then p>
markersave = 4 'Перемістити правіше (тому що значення
> На 1) p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label10.BackColor = savecolor (3) 'Відновити колір комірки, де БУВ маркер p>
Label11_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
If markersave = 4 Then p>
markersave = 5 'Перемістити правіше (тому що значення
> На 1) p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label11.BackColor = savecolor (4) 'Відновити колір комірки, де БУВ маркер p>
Label12_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
If markersave = 5 Then p>
markersave = 6 'Перемістити правіше (тому що значення
> На 1) p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label12.BackColor = savecolor (5)
'Відновити колір комірки, де БУВ маркер p>
Label13_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10
'Заборонити помилкові
спрацьовування (значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
If markersave = 6 Then p>
markersave = 7 'Перемістити правіше (тому що значення
> На 1) p>
firstset = 0 'Тимчасово дозволити малювання
маркера p>
Label13.BackColor = savecolor (6) 'Відновити колір комірки, де БУВ маркер p>
Label14_Click 'Перемістити
маркер p>
vt = markersave p>
markersave = 10 'Заборонити помилкові спрацьовування
(значення 10 не відповідає p>
'ніякої
клітинці) p>
End If p>
If markersave = 7 Then p>
markersave = 0 'Перемістити правіше (тому що значення
> На 1) p>
firstset = 0 'Тимчасово