Grover Blitz . Narod . Ru
Сайт Grover'а посвященный Blitz

На этом сайте размещены мои работы по Blitz 3D.
Примеры, Уроки, Статьи ...

Главная \ Уроки \ Урок - 3 \  

Урок по Blitz 3D .
Отладка программы консольным методом.


Это скорее не урок, а описание одного из методов отладки кода.

Консольный метод отладки я позаимствовал из игр (из всех, которые знаю).
К примеру, вам надо проверить как прыгает главный БОСС в конце уровня.
Вы скажете, ставим герою 99999999999% жизни, всё оружие да по-больше и в путь!!!

Или более простой способ - телепортировать героя в конец уровня.
Согласен, вы посмотрели и решили, что БОСС должен прыгать выше. Что ж, снова ждем, пока загрузится игра и т.д. и т.п. ...
Таким образом, что бы подобрать всего один параметр (высота прыжка БОССа), вы потратили минут 20, а то и все 60. Грустно... Есть решение!!!

В главном цикле программы пишем:

If KeyHit(88) Then Consol() ; Если нажата клавиша < F12 >

Прежде чем писать процедуру, подготовим код.
Пусть за высоту прыжка БОССа отвечает переменная UP.
Переменная должна быть объявлена как Global, т.е. в том месте программы, где написано

UP=10

Исправляем на :

Global UP=10
Это необходимо для того, что бы переменную можно было изменять в любой другой функции. Теперь можно писать саму функцию:
Function consol()
comand$=Input("Enter command > ")
If comand$="UP" Then UP=Input("UP = ")
End Function
 

Всё! Запускаем программу, телепортируемся к БОССу, а эта редиска прыгает на 10! Нажимаем F12, в верхнем левом углу появляется надпись:

Enter command >


 

Пишем «UP» (без кавычек) и нажимаем Enter, новая надпись:

 

Enter command > UP
UP =

 
Пишем «20» (без кавычек) и нажимаем Enter, вот теперь БОСС запрыгал на 20. Если вдруг не прыгает, значит, Вы что-то не так сделали.

Таким образом, один раз написав функцию Consol(), и пополняя ее в процессе разработки, Вы будете тратить меньше времени на подбор параметров.

 

Рассмотрим данный способ на более конкретном примере.


Скачиваем с этого же сайта файл (salut.zip). Распаковываем.
Можно даже запустить и посмотреть на салют. Запустили, посмотрели… Захотелось поэкспериментировать с параметрами функции create_bah()?
Рано !!!

Изменяем тело программы:

1. После строки Include “bah.bb” вставляем:
Global X#=0
Global Y#=0
Global Z#=0
Global Col=300
 

2. Изменяем параметры функции create_bah():

create_bah(X,Y,Z,Col)
 

3. Добавляем вызов функции Consol() – после строки update_bah() пишем :

If KeyHit(88) Then Consol()
 

У Вас должно получиться следующее:

Graphics3D 800,600,0,2
SetBuffer BackBuffer()


Include "bah.bb"

Global X#=0
Global Y#=0
Global Z#=0
Global Col=300

cam=CreateCamera()
MoveEntity cam,0,0,-20
lit=CreateLight()

While Not KeyHit(1)

If KeyHit(57) Then create_bah(X,Y,Z,Col)

update_bah()

If KeyHit(88) Then Consol()

UpdateWorld
RenderWorld
Flip

Wend
End
 

Можно приступать к созданию консольной функции:

Function consol()

comand$=Input("Enter comand > ")
If comand$="X" Then X=Input("New X = ")
If comand$="Y" Then X=Input("New Y = ")
If comand$="Z" Then X=Input("New Z = ")
If comand$="Col" Then X=Input("New Col = ")

End Function
 

Запускаем и пробуем:
Нажимаем Пробел… Бабах..х..хх..х… В центре экрана.
Теперь нажимаем F12 и пишем имя переменной, которую хотим изменить, например Col (количество частиц). На предложение «New Col =» пишем 10 и нажимаем Enter.
Снова жмем Пробел… Фу как не красиво.

На этом можно закончить, но есть маленький совет:
В начале функции Consol() дописываем:
 

Print "X"
Print "Y"
Print "Z"
Print "Col"
 

Теперь при нажатии на F12 Мы видим список всех команд, которые мы можем вводить. Только не забывайте этот список дополнять при создании новых команд.


Пример можно скачать : Consol.zip

<К оглавлению>

 

Hosted by uCoz