![]() |
|
|
Реферат: Программирование логической игры на visual basicРеферат: Программирование логической игры на visual basicРуководство по разработке динамической логической игры на Visual Basic 6.0 Пошаговое описание процесса программирования всех процедур игры Oflameron – Он-Лайн версия. Данное руководство содержит подробнейшее описание процесса разработки полного аналога JAVA-игры на Visual Basic 6.0 (часть 1). В следующих частях документа: - Часть 2 – доводка игровой программы - Часть 3 – разработка версии игры на VB для «наладонных» компьютеров - Часть 4 – разработка версии игры на Delphi - Часть 5 – разработка версии игры на JAVA для сотовых телефонов OFLAMERON Часть 1 Создадим проект формата Project EXE. Создадим форму Form1 размером 2715х5745. На форме расположим элемент Frame, а в нем разместим элементы Label1 – Label55. Где Label1 – Label6 это колонка Level. А Label7 – Label46 – ячейки игрового поля с номиналами. Label 47-48 – ячейки для служебной информации. Нижний цветной индикатор образован Label49-Label55. Колонке элементов Level и игровому полю будут соответствовать числовые массивы.
Краткое описание игры. Игра начинается с установки игроком маркера в любую ячейку нижнего ряда ячеек (просто 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() (на некоторое время. Для отладки): Страницы: 1, 2 |
|
|||||||||||||||||||||||||||||
![]() |
|
Рефераты бесплатно, реферат бесплатно, курсовые работы, реферат, доклады, рефераты, рефераты скачать, рефераты на тему, сочинения, курсовые, дипломы, научные работы и многое другое. |
||
При использовании материалов - ссылка на сайт обязательна. |