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

Урок
по Blitz
3D . Отладка программы консольным методом.
Это скорее не урок, а описание одного из методов отладки
кода.
Консольный метод отладки я позаимствовал из игр (из всех,
которые знаю).
К примеру, вам надо проверить как прыгает главный БОСС в
конце уровня.
Вы скажете, ставим герою 99999999999% жизни, всё оружие да
по-больше и в путь!!!
Или более простой способ - телепортировать героя в конец
уровня.
Согласен, вы посмотрели и решили, что БОСС должен прыгать
выше. Что ж, снова ждем, пока загрузится игра и т.д. и т.п.
...
Таким образом, что бы подобрать всего один параметр (высота
прыжка БОССа), вы потратили минут 20, а то и все 60.
Грустно... Есть решение!!!
В главном цикле программы пишем:
If KeyHit(88) Then Consol() ; Если
нажата клавиша < F12 > |
Прежде чем писать процедуру, подготовим код.
Пусть за высоту прыжка БОССа отвечает переменная UP.
Переменная должна быть объявлена как Global,
т.е. в том месте программы, где написано
Исправляем на :
Это необходимо для того, что бы переменную можно было
изменять в любой другой функции. Теперь можно писать
саму функцию:
Function consol()
comand$=Input("Enter command > ")
If comand$="UP" Then UP=Input("UP = ")
End Function
|
Всё! Запускаем программу, телепортируемся к
БОССу, а эта редиска прыгает на 10! Нажимаем F12,
в верхнем левом углу появляется надпись:
Пишем «UP» (без кавычек) и
нажимаем Enter, новая надпись:
Пишем « 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():
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
Мы видим список всех команд, которые мы можем вводить.
Только не забывайте этот список дополнять при создании новых
команд.
<К оглавлению>
|