ШАГ 3
СОЗДАНИЕ ВТОРОЙ ПРОГРАММЫ, КОТОРАЯ ЕЩЕ ЛУЧШЕ ПЕРВОЙ
Написание первой программы заняло у вас всего несколько минут. Теперь вы - настоящий программист, несмотря на то, что в вашем "багаже" всего три команды. Теперь нужно сделать что-нибудь впечатляющее!
Сейчас мы создадим программу, которая наверняка удивит ваших друзей. Вместо того чтобы тратить еще полчаса на написание очень длинной программы, воспользуйтесь уже приготовленной. Просто нажмите
CAVERUN.DBA
чтобы автоматически запустить программу. Ответьте "да", когда программа запросит переписать данные редактора. Вы увидите исходный код программы:
rem ----------------
rem Демонстрация Бегущего В Подземельях
rem ----------------
rem Автор: DBS-LB99
hide mouse
rem Загрузка растровых изображений
load bitmap "tiles.bmp",1
get image 1,0,0,256,256
delete bitmap 1
rem Загрузка звука
load sound "hum.wav",1
load sound "explode.wav",2
set sound speed 1,6000
loop sound 1
rem Загрузка музыки
load music "caverun.mid",1
loop music 1
rem Активировать ручную синхронизацию
sync on
rem Создание матриц ландшафта и потолка
make matrix 1,2000,5000,10,25
prepare matrix texture 1,1,2,2
make matrix 2,2000,5000,10,25
prepare matrix texture 2,1,2,2
fill matrix 2,0,2
randomize matrix 2,350.0
for t=0 to 25
set matrix height 2,0,t,-100
set matrix height 2,10,t,-100
next t
update matrix 2
rem Начало игрового цикла
do
rem Инициализация генератора случайных чисел
randomize 1
rem Очистить пол подземелья
fill matrix 1,0,1
rem Настройка освещения и тумана
set ambient light 20
fog distance 3000
color backdrop 0
fog color 0
fog on
rem Сбросить скорость
x=0
z=0
speed#=0.0
rem Начало основного цикла
repeat
rem Сохраняем старые переменные
oldx=x
oldgy#=gy#
rem Клавиши, управляющие движением
if upkey()=1 then speed#=speed#+1.0 else speed#=speed#-1.0
if leftkey()=1 then rz#=rz#+1.0
if rightkey()=1 then rz#=rz#-1.0
rem Управляющие переменные
if speed#>40.0 then speed#=40.0
rz#=rz#/1.1
x=x-(2*rz#)
rem Прокрутка ландшафта
z=z+speed#
if z>200
z=z-200
if rnd(3)=0
mp=mp-1
mp=mp+rnd(3)
if mp>4 then mp=4
endif
for t=0 to 0 : set matrix height 1,t,24,450 : set matrix tile 1,t,24,2 : next t
for t=1 to mp : set matrix height 1,t,24,rnd(200) : set matrix tile 1,t,24,2 : next t
for t=mp+1 to mp+1 : set matrix height 1,t,24,rnd(200) : set matrix tile 1,t,24,3 : next t
for t=mp+2 to mp+3 : set matrix height 1,t,24,rnd(20) : set matrix tile 1,t,24,1 : next t
for t=mp+4 to mp+4 : set matrix height 1,t,24,rnd(200) : set matrix tile 1,t,24,4 : next t
for t=mp+5 to 9 : set matrix height 1,t,24,rnd(200) : set matrix tile 1,t,24,2 : next t
for t=10 to 10 : set matrix height 1,t,24,450 : next t
update matrix 1
shift matrix up 1
shift matrix up 2
endif
rem Позиционирование матрицы
position matrix 1,0,0,2500-z
position matrix 2,0,100,2500-z
rem Позиционирование камеры
gy#=curvevalue(50+get ground height(1,500+x,z),gy#,3)
position camera 500+x,gy#,2500
zrotate camera wrapvalue(rz#)
rem Установка звуковой частоты
set sound speed 1,6000+(speed#*100)
rem Обновить экран
sync
rem Завершить основной цикл в случае столкновения с потолком
until get ground height(2,500+x,z)=gy#-75.0
rem Перед столкновением возвратить камеру на место
position camera 500+oldx,oldgy#,2500
rem Игра Закончена
play sound 2
for c=0 to 255 step 20
cls rgb(c,0,0)
fog distance (c*5)
fog color (c*256*256)
sync
next c
rem Конец игрового цикла
loop
После того, как вы создали и запустили программу, выйдите из нее, нажав F11, и продолжите урок. Выберите
ШАГ 4,
чтобы продолжить.