![]() |
|
|
Дипломная работа: Руководство по разработке динамической логической игры на Visual Basic 6.0Дипломная работа: Руководство по разработке динамической логической игры на Visual Basic 6.0Руководство по разработке динамической логической игры на Visual Basic 6.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 и игровому полю будут соответствовать числовые массивы.
Краткое описание игры. Игра начинается с установки игроком маркера в любую ячейку нижнего ряда ячеек (просто 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 (только формы), Вы можете посмотреть, что значения номиналов ячеек и их цветовые атрибуты меняются правильно. Страницы: 1, 2 |
|
|||||||||||||||||||||||||||||
![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |