Четверг, 14 Ноября 2024, 07:29

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Blitz3D для новичков
ManoverДата: Понедельник, 14 Марта 2011, 21:24 | Сообщение # 1
был не раз
Сейчас нет на сайте
Dragon6 просит выложить тут его статью.
Первая игра!!!

Первая игра у нас будет мега простая и как может показатся после запуска мега крутая. smile
Первым делом откроем сам Blitz3D. Увидим Приветствие, выберем New из меню File (или просто нажмем комбинацию клавиш CTRL+N). Сейчас будет самое интересное - набор самой игры. Раскрою небольшой секрет - мы сейчас напишем маленький текстовой "квестик". smile
Сразу скажу в блице комментарии (то что не читается как код) обозначается знаком ;
Вот собственно код (позже мы рассмотрим функции):
Code
Graphics 640,480,2 ;Старт 2D графического режима, первые 2 аргумента (640 и 480) это размер экрана, третий (2) это количество цветов (в битах)
font=LoadFont("Arial",16) ;Загружаем шрифт Arial с размером 16
SetFont font ;Печатаем шрифтом, который мы загрузили в пред. строке
Print "Введите ваше имя:" ;Печатаем текст "введите ваше имя"
name$=Input() ;Читаем то что игрок вводит в переменную name$ (знак $ означает что переменная строковая, тоесть может иметь и буквы и цифры)
Print "Сколько вам лет?" ;Пишем текст
age=Input() ;Читаем введенное игроком в переменную age (заметьте знака $ нету, тоесть переменная может содержать ТОЛЬКО цифры)
If age=0 Then age=1 ;Если игрок ввел 0 или ввел буквы, то age будет равен 1
Print "Ваше имя "+name$+", вам "+age+" лет" ;Выводим текст с именем (name$) и возрастом (age) знак + значит что мы закрываем ковычки, но продолжаем писать нужный текст (пригодится для вывода переменных, констант и прочего)
.metka ;А это метка, метки нужны чтобы в любой момент откуда угодно перейти к нужному участку кода
Print "Вы можете пойти в ДОМ, можете погладить КОТа"  ; Пишем текст
action$=Input() ;Читаем
.act1 ;Метка
If action$="дом" Then Goto dom ;Если игрок ввел "дом" то переходим к метке dom
If action$="кот" Then Goto kot ;То же и самое что с "домом" только метка другая=)
If action$<>"дом" Or action$<>"кот" Then Goto metka ;Если игрок ввел не "дом" и не "кот", то возвращаемся к метке metka (она в начале)
Goto act1 ;Возвращаемся к проверке введенного игроком (нужно чтобы сразу не переходило на следующую строку)
.dom
Print "Вы в доме!!!" ;Мы дома=)

action2$=Input()
.act2
If action2$="" Then Goto metka
Goto act2
.kot
Print "Вы погладили вашего кота и он остался довольным :)"
action3$=Input()
.act3
If action3$="" Then Goto metka
Goto act3

Итак, приступим к просмотру)
  • Оператор Graphics переводит программу (игру) в 2D режим. В 1 аргументе ширина, во втором высота, в третьем кол-во цветов (в битах)
  • Функция LoadFont загружает шрифт, первый аргумент название шрифта, второй его размер
  • Функция SetFont ставит нужный нам шрифт (текст будет писаться этим шрифтом), единственный аргумент - переменнная со шрифтом.
  • Функция Print выводит введенный текст на экран
  • Функция Input считывает данные, введенные игроком
    Метки в Blitz3D ставятся так ".название_метки" (без ковычек, точка обязательна)
    Функция Goto переходит на указанную метку
    Вот и первый урок кончился. smile
    Для тех, кому лень писать код я сделал пример.
    Вот скриншот того что получается:


    Пишу от лица пользователя Dragon6
  • wernherДата: Понедельник, 14 Марта 2011, 22:23 | Сообщение # 2
    Only God is Perfect
    Сейчас нет на сайте
    Оператор GOTO - прошлый "макаронный" век.
    Надо отучать народ его использовать, а в статье де-факто к этому приучают.
    Да и все текстовые данные стоило бы брать из файла. Тогда с локализацией меньше проблем будет. не понадобиться перекомпилировать.


    AGENTX001Дата: Понедельник, 04 Апреля 2011, 16:24 | Сообщение # 3
    почётный гцупер
    Сейчас нет на сайте
    Quote (wernher)
    Оператор GOTO - прошлый "макаронный" век.

    Да? А как без него? С помощью циклов? surprised
    Это не насмешка а вопрос!
    PBPROGДата: Четверг, 07 Апреля 2011, 12:10 | Сообщение # 4
    постоянный участник
    Сейчас нет на сайте
    Согласен с wernher - GOTO явно лишний оператор в этой программе!
    Его нужно использовать лишь в крайнем случае, когда по другому получится сложнее. Но не нужно его пихать везде, даже там, где без него можно обойтись.
    И кроме того, для такой задачи вполне подойдет консоль, зачем было использовать "игровой" 2D режим?

    Вот мой вариант такой игры, правда на PureBasic.

    Code
    If OpenConsole()
       Print("Введите ваше имя:  ")
       name$=Input()
       Print("Сколько вам лет?  ")
       age=Val(Input())
       If age=0 : age=1 : EndIf
       PrintN("Ваше имя '"+name$+"', вам "+Str(age)+" лет")
        
       Repeat
         Print("Вы можете пойти в ДОМ, можете погладить КОТа  ")  ; Пишем текст  
         action$=LCase(Input())                    ;Читаем
         If     action$ = "дом"
           PrintN("Вы в доме!!!") ;Мы дома=)
         ElseIf action$ = "кот"
           PrintN("Вы погладили вашего кота и он остался довольным :)") ; Ммяяяяяяуууууууу
         Else
           MessageRequester("","Только 'дом' или 'кот'. Попробуйте сначала",48)
         EndIf
         PrintN("")
       ForEver
        
    EndIf

    Скомпилированная прога в месте с исходником http://depositfiles.com/files/2a83y3lvp

    Скриншот

    • Страница 1 из 1
    • 1
    Поиск:

    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг