This code is used in both DBDeluxe 1.09c (classic, russian, official) and DBP 1.077_RC7
use "Find" command in editor to find this "rem âðåì (ïîäñâåòêà ñòîëêíîâåíèé)" (these sprites highlights the sprite collision error)
set display mode 800,600,16
hide mouse
sync on
sync rate 30
cls
sync
cls
load music "M\Samoljet.mid",1
f1$="G\"
f2$=".bmp"
load bitmap f1$+"0012-001"+f2$,0
sync
rem Çàãðóçêà
f1$="G\"
f2$=".bmp"
rem Ñàì çâåçäîë¸ò
load image f1$+"0000-001"+f2$,101,1
rem Èñêðîïîëå
load image f1$+"0001-000"+f2$,111
load image f1$+"0001-002"+f2$,112
load image f1$+"0001-003"+f2$,113
load image f1$+"0001-004"+f2$,114
load image f1$+"0001-005"+f2$,115
load image f1$+"0001-006"+f2$,116
load image f1$+"0001-007"+f2$,117
rem Çàäíèé âûõëîï
load image f1$+"0002-000"+f2$,121
load image f1$+"0002-001"+f2$,122
load image f1$+"0002-002"+f2$,123
load image f1$+"0002-003"+f2$,124
load image f1$+"0002-004"+f2$,125
load image f1$+"0002-005"+f2$,126
rem Ïåðåäíèé âûõëîï
load image f1$+"0003-000"+f2$,131
load image f1$+"0003-001"+f2$,132
load image f1$+"0003-002"+f2$,133
load image f1$+"0003-003"+f2$,134
load image f1$+"0003-004"+f2$,135
rem Íåáî
load image f1$+"0004"+f2$,141,1
rem Âåðõíèé âûõëîï
load image f1$+"0005-000"+f2$,151
load image f1$+"0005-001"+f2$,152
load image f1$+"0005-002"+f2$,153
load image f1$+"0005-003"+f2$,154
load image f1$+"0005-004"+f2$,155
rem Íèæíèé âûõëîï
load image f1$+"0006-000"+f2$,161
load image f1$+"0006-001"+f2$,162
load image f1$+"0006-002"+f2$,163
load image f1$+"0006-003"+f2$,164
load image f1$+"0006-004"+f2$,165
rem Ïåðåäíèé-âåðõíèé âûõëîï
load image f1$+"0007-000"+f2$,171
load image f1$+"0007-001"+f2$,172
load image f1$+"0007-002"+f2$,173
load image f1$+"0007-003"+f2$,174
load image f1$+"0007-004"+f2$,175
rem Ïåðåäíèé-íèæíèé âûõëîï
load image f1$+"0008-000"+f2$,181
load image f1$+"0008-001"+f2$,182
load image f1$+"0008-002"+f2$,183
load image f1$+"0008-003"+f2$,184
load image f1$+"0008-004"+f2$,185
rem Çàäíèé-âåðõíèé âûõëîï
load image f1$+"0009-000"+f2$,191
load image f1$+"0009-001"+f2$,192
load image f1$+"0009-002"+f2$,193
load image f1$+"0009-003"+f2$,194
load image f1$+"0009-004"+f2$,195
load image f1$+"0009-005"+f2$,196
rem Çàäíèé-íèæíèé âûõëîï
load image f1$+"0010-000"+f2$,201
load image f1$+"0010-001"+f2$,202
load image f1$+"0010-002"+f2$,203
load image f1$+"0010-003"+f2$,204
load image f1$+"0010-004"+f2$,205
load image f1$+"0010-005"+f2$,206
rem Àñòåðîèäû
load image f1$+"0011-001"+f2$,211,1
load image f1$+"0011-002"+f2$,210 : rem ïóñòî
load image f1$+"0011-003"+f2$,221,1 : rem ìàëûå
rem Êîñìîíàâò
load image f1$+"0013-001"+f2$,231,1
load image f1$+"0013-002"+f2$,232,1
load image f1$+"0013-003"+f2$,233,1
load image f1$+"0013-004"+f2$,234,1
load image f1$+"0013-005"+f2$,235,1
load image f1$+"0013-006"+f2$,236,1
load image f1$+"0013-007"+f2$,237,1
rem Òåõíè÷ êàðò
load image f1$+"0014-001"+f2$,241
load image f1$+"0014-002"+f2$,242
rem Çâóêè
f1$="Z\"
f2$=".wav"
load sound f1$+"Steam Blast.wav",101 : rem Èñêðîïîëå Ìîùíîå
load sound f1$+"Electricity Cable loop.wav",102 : rem Èñêðîïîëå
load sound f1$+"Space Gen loop 1.wav",103 : rem Äâèãàòåëü
load sound f1$+"Space Gen loop 3.wav",104 : rem Ïåðåäâèæåíèå
load sound f1$+"Jet loop.wav",105 : rem Ïåðåäâèæåíèå
load sound f1$+"Droid 2.wav",106 : rem Çàõâàò êîñìîíàâòà
load sound f1$+"scifi5.wav",107 : rem Ðàäèî1
load sound f1$+"radio.wav",108 : rem Ðàäèî2
`cls
`sync
rem Óñòàíîâêà ïî ïîðÿäêó ñïðàéòîâ
set sprite 20,0,1 : rem íåáî
set sprite 30,0,1 : rem íåáî-ïðîäîëæåíèå
set sprite 12,0,1 : rem êîðàáëü èñêðÿùèéñÿ
set sprite 11,0,1 : rem êîðàáëü (òåëî äëÿ ñòîëêíîâåíèé)
set sprite 10,0,1 : rem êîðàáëü
set sprite 13,0,1 : rem òåõí êàðò
set sprite 14,0,1 : rem òåõí êàðò
rem Ñîçäàíèå íåáà
create bitmap 1,800,600
set current bitmap 1
y=0
gosub random
pryg_002:
x=0
pryg_001:
paste image 141,x,y
x=x+rnd(200)
if x<800 then goto pryg_001
y=y+rnd(200)
if y<600 then goto pryg_002
get image 142,0,0,799,599,1
delete bitmap 1
set current bitmap 0
rem Ïîñûë íà KEYSTATE ïîäïðîãðàììó ïîèñêà êëàâèø
`goto ks
rem Îñíîâíîé öèêë
rem Ïðî ñ÷¸ò÷èê sprn
rem Îí ñáèâàåòñÿ ïðè îòïóñêàíèè êëàâèø
sprn=1
sprk=1
sprniskr=1
korx=0
kory=300
korxpr=0
korypr=300
nebox=0
radio=0
rem Ìàññèâ òàáëèöû ìåñò àñòåðîèäîâ: 200 äëèíà ïîëÿ, 11 âûñîòà ïîëÿ, (dX dY Êòî Êàðòèíêà Ñóùåñòâóåò)
dim astm(200,11,5)
gosub random
for x=1 to 200
for y=1 to 11
astm(x,y,1)=rnd(20)
astm(x,y,2)=rnd(20)
astm(x,y,3)=rnd(70) : rem 1=êîñìîíàâò 1<>àñòåðîèä
astm(x,y,4)=211
astm(x,y,5)=rnd(8) : rem rnd(10) = ÷òîáû ìåíüøå áûëî =1 âèäèìûõ àñòåðîèäîâ
if astm(x,y,3)=1 then astm(x,y,5)=0
if y>9 then astm(x,y,3)=0
if x<15 then astm(x,y,5)=0 : astm(x,y,3)=0
if x>183 then astm(x,y,5)=0 : astm(x,y,3)=0
if astm(x,y,5)<>1 then astm(x,y,4)=210
next y
next x
for a=1 to 256
set sprite 100+a,0,1
next a
for a=1 to 256
set sprite 500+a,0,1
next a
astlinx=0
astekr=0
rem ÐÀÁÎÒÀ
rem êîë-âî, X Y +X +Y êàðòèíêà Xpr Ypr
dim aster(10,7)
for a=1 to 10
aster(a,1)=-21
aster(a,2)=-21
aster(a,3)=0
aster(a,4)=0
aster(a,5)=221
aster(a,6)=aster(a,1)
next a
for a=1 to 10
set sprite 800+a,0,1
next a
loop sound 103
set sound volume 103,25
set sound volume 107,25
set sound volume 108,80
loop music 1
set music volume 1,100
set sound volume 105,25
wait 2000
povtor_001:
rem ÐÀÁÎÒÀ
rem Ìàëûå àñòåðîèäû
gosub random
if astlinx>15 and astlinx<169
for a=1 to 10
if aster(a,1)<-20 or aster(a,1)>800 or aster(a,2)<-20 or aster(a,2)>600
rnd1=rnd(1)
if rnd1=1
aster(a,1)=rnd(840)-20
aster(a,3)=rnd(8)-4
if aster(a,3)=0 then aster(a,3)=1
rnd2=rnd(1)
if rnd2=1
aster(a,2)=-20
aster(a,4)=rnd(4)
if aster(a,4)=0 then aster(a,4)=1
endif
if rnd2=0
aster(a,2)=600
aster(a,4)=rnd(4)-4
if aster(a,4)=0 then aster(a,4)=1
endif
endif
if rnd1=0
aster(a,2)=rnd(640)-20
aster(a,4)=rnd(8)-4
if aster(a,4)=0 then aster(a,4)=1
endif
rnd2=rnd(1)
if rnd2=1
aster(a,1)=-20
aster(a,3)=rnd(4)
if aster(a,3)=0 then aster(a,3)=1
endif
if rnd2=0
aster(a,1)=800
aster(a,3)=rnd(4)-4
if aster(a,3)=0 then aster(a,3)=1
endif
endif
next a
endif
privod= leftkey() + rightkey()*2 + downkey()*4 + upkey()*8
rem äâîè÷ äåñÿòè÷ êóäà
rem 0000 00
rem 1000 01 âëåâî
rem 0100 02 âïðàâî
rem 1100 03 âëåâî
rem 0010 04 âíèç
rem 1010 05 âíèç-âëåâî
rem 0110 06 âíèç-âïðàâî
rem 1110 07 âíèç-âëåâî
rem 0001 08 ââåðõ
rem 1001 09 ââåðõ-âëåâî
rem 0101 10 ââåðõ-âïðàâî
rem 1101 11 ââåðõ-âëåâî
rem 0011 12 ââåðõ
rem 1011 13 ââåðõ-âëåâî
rem 0111 14 ââåðõ-âïðàâî
rem 1111 15 ââåðõ-âëåâî
rem Êîðàáëü ñòîèò
if privod=0
sprn=1
stop sound 105
korxpr=korx
korypr=kory
kory=kory+1
if kory>500 then kory=500
`stop sound 101
`sprite 11,korx,kory,101
`sprite 10,korx,kory,101
goto ekr
endif
rem Êîðàáëü âïåð¸ä
if privod=2
if sound playing(105)=0 then loop sound 105
korypr=kory
kory=kory+1
if kory>500 then kory=500
korxpr=korx
korx=korx+5
if korx>600 then korx=600
dei=120
kory=kory+1
if kory>500 then kory=500
` sprite 11,korx,kory,101
` sprite 10,korx,kory,(120+sprn)
inc sprn
if sprn=7 then sprn=1
goto ekr
endif
rem Êîðàáëü íàçàä
if privod=1 or privod=3
if sound playing(105)=0 then loop sound 105
korypr=kory
kory=kory+1
if kory>500 then kory=500
korxpr=korx
korx=korx-5
if korx<=0 then korx=0
dei=130
`sprite 11,korx,kory,101
`sprite 10,korx,kory,(130+sprn)
inc sprn
if sprn=6 then sprn=1
goto ekr
endif
rem Êîðàáëü ââåðõ
if privod=8 or privod=12
if sound playing(105)=0 then loop sound 105
korypr=kory
kory=kory+1
if kory>500 then kory=500
kory=kory-5
if kory<=20 then kory=20
dei=160
`sprite 11,korx,kory,101
`sprite 10,korx,kory,(160+sprn)
inc sprn
if sprn=6 then sprn=1
goto ekr
endif
rem Êîðàáëü âíèç
if privod=4
if sound playing(105)=0 then loop sound 105
korypr=kory
kory=kory+1
kory=kory+5
if kory>500 then kory=500
dei=150
`sprite 11,korx,kory,101
`sprite 10,korx,kory,(150+sprn)
inc sprn
if sprn=6 then sprn=1
goto ekr
endif
rem Êîðàáëü íàçàä-âíèç
if privod=5 or privod=7
if sound playing(105)=0 then loop sound 105
korxpr=korx
korypr=kory
kory=kory+1
korx=korx-5
kory=kory+5
if korx<=0 then korx=0
if kory>500 then kory=500
dei=170
`sprite 11,korx,kory,101
`sprite 10,korx,kory,(170+sprn)
inc sprn
if sprn=6 then sprn=1
goto ekr
endif
rem Êîðàáëü íàçàä-ââåðõ
if privod=9 or privod=11 or privod=13 or privod=15
if sound playing(105)=0 then loop sound 105
korxpr=korx
korypr=kory
kory=kory+1
if kory>500 then kory=500
korx=korx-5
kory=kory-5
if korx<=0 then korx=0
if kory<=20 then kory=20
dei=180
`sprite 11,korx,kory,101
`sprite 10,korx,kory,(180+sprn)
inc sprn
if sprn=6 then sprn=1
goto ekr
endif
rem Êîðàáëü âïåð¸ä-âíèç
if privod=6
if sound playing(105)=0 then loop sound 105
korxpr=korx
korypr=kory
kory=kory+1
korx=korx+5
kory=kory+5
if korx>600 then korx=600
if kory>500 then kory=500
dei=190
`sprite 11,korx,kory,101
`sprite 10,korx,kory,(190+sprn)
inc sprn
if sprn=7 then sprn=1
goto ekr
endif
rem Êîðàáëü âïåð¸ä-ââåðõ
if privod=10 or privod=14
if sound playing(105)=0 then loop sound 105
korxpr=korx
korypr=kory
kory=kory+1
if kory>500 then kory=500
korx=korx+5
kory=kory-5
if korx>600 then korx=600
if kory<=20 then kory=20
dei=200
`sprite 11,korx,kory,101
`sprite 10,korx,kory,(200+sprn)
inc sprn
if sprn=7 then sprn=1
goto ekr
endif
ekr:
rem Äâèæåíèå íåáà
neboxpr=nebox
nebox=nebox-1
if nebox=-800 then nebox=0
ekr2:
cls
rem äâèæåíèå íåáà
sprite 20,nebox,0,142
sprite 30,nebox+800,0,142
rem Èñêðîïîëå (and sound playing(èñêðû 101)=0)
if keystate(44)=1 or stolk=1 or sprniskr>1
if sound playing(101)=0 and sprniskr<8 then play sound 101: set sound speed 101,80000
if sprniskr<8 and sprniskr<>1 then sprite 12,korx,kory,(110+sprniskr)
if sprniskr=8 or sprniskr=1 then sprite 12,korx,kory,210
inc sprniskr
if sprniskr=9 then sprniskr=8
if sprniskr=8
if sound playing(101)=0
sprniskr=1
`spri=2
sprite 12,korx,kory,210
endif
stolk=0
spri=0
endif
`goto ekr
endif
rem Êîðàáëü
sprite 11,korx,kory,101
if privod<>0 then sprite 10,korx,kory,(dei+sprn)
if privod=0 then sprite 10,korx,kory,101
rem ÐÀÁÎÒÀ
rem Ìàëûå àñòåðîèäû
for a=1 to 10
`if astlinx>15 and astlinx<169 then sprite 300+a,aster(a,1),aster(a,2),aster(a,5)
sprite 800+a,aster(a,1),aster(a,2),aster(a,5)
if stolk=0 and sprite collision(800+a,11)=1
stolk=1
endif
if sprite collision(800+a,11)=1
`inc stolk2
aster(a,1)=-21
endif
next a
rem Àñòåðîèäû
stolk2=0
radio=0
a=1
for x=1 to 16
for y=1 to 11
rem Êîñìîíàâòû
if astm((x+astlinx),y,3)=1 : ` and astm((x+astlinx),y,5)=1
sprite 100+a, astm((x+astlinx),y,1)+(x-1)*50+astekr, astm((x+astlinx),y,2)+(y-1)*50, 230+sprk
sprite 500+a, astm((x+astlinx),y,1)+(x-1)*50+astekr, astm((x+astlinx),y,2)+(y-1)*50, 231
inc radio
endif
if astm((x+astlinx),y,3)<>1 : ` and astm((x+astlinx),y,5)=1
sprite 100+a, astm((x+astlinx),y,1)+(x-1)*50+astekr, astm((x+astlinx),y,2)+(y-1)*50, 210
sprite 500+a, astm((x+astlinx),y,1)+(x-1)*50+astekr, astm((x+astlinx),y,2)+(y-1)*50, 210
endif
rem Àñòåðîèäû
if astm((x+astlinx),y,3)<>1 and astm((x+astlinx),y,5)=1
sprite 100+a, astm((x+astlinx),y,1)+(x-1)*50+astekr, astm((x+astlinx),y,2)+(y-1)*50, astm((x+astlinx),y,4)
endif
if astm((x+astlinx),y,3)<>1 and astm((x+astlinx),y,5)<>1
sprite 100+a, astm((x+astlinx),y,1)+(x-1)*50+astekr, astm((x+astlinx),y,2)+(y-1)*50, 210
endif
rem Ñòîëêíîâåíèÿ ñ àñòåðîèäàìè
`remstart
` if sprite exist(100+a)
if astm((x+astlinx),y,3)<>1 and astm((x+astlinx),y,5)=1 and stolk=0 and sprite collision(100+a,11)=1
stolk=1
endif
if astm((x+astlinx),y,3)<>1 and astm((x+astlinx),y,5)=1 and sprite collision(100+a,11)=1
inc stolk2
rem âðåì (ïîäñâåòêà ñòîëêíîâåíèé)
sprite 13, astm((x+astlinx),y,1)+(x-1)*50+astekr, astm((x+astlinx),y,2)+(y-1)*50, 241
sprite 14, korx, kory, 242
endif
` endif
`remend
rem Çàõâàò êîñìîíàâòà
`remstart
if astm((x+astlinx),y,3)=1 and sprite collision(500+a,11)=1
astm((x+astlinx),y,3)=0
play sound 106
endif
`remend
inc a
next y
next x
rem âðåì
`text 0,0,"RANDOMIZE sec = "+str$(rand)
sync
if radio>0 and sound playing(107)=0 then play sound 107
if radio>0 and sound playing(108)=0 then play sound 108
rem Ðàäèî êîñìîíàâòà
inc sprk
if sprk=8 then sprk=1
if stolk2=0 or spacekey()=1
astekrpr=astekr
astlinxpr=astlinx
astekr=astekr-3
if astekr<-49 then astekr=0 : astlinx=astlinx+1
if astlinx=183 then gosub kon
rem ÐÀÁÎÒÀ
rem Ìàëûå àñòåðîèäû - ïåðåäâèæåíèå ïî ýêðàíó
for a=1 to 10
aster(a,6)=aster(a,1)
aster(a,7)=aster(a,2)
aster(a,1)=aster(a,1)+aster(a,3)-3
aster(a,2)=aster(a,2)+aster(a,4)
next a
endif
if stolk2<>0 and spacekey()=0
korx=korxpr
kory=korypr
astekr=astekrpr
astlinx=astlinxpr
nebox=neboxpr
for a=1 to 10
aster(a,1)=aster(a,6)
aster(a,2)=aster(a,7)
next a
`privod=0
goto ekr2
`stolk2=0
endif
goto povtor_001
rem Öèêë KEYSTATE()
ks:
cls
print scancode()
sync
goto ks
rem KEYSTATE çíà÷åíèÿ
` 57 Spacekey()
` 44 Z
` 45 X
` 46 C
random:
rand$=get time$()
rand1=val(mid$(rand$,1)+mid$(rand$,2))
rand2=val(mid$(rand$,4)+mid$(rand$,5))
rand3=val(mid$(rand$,7)+mid$(rand$,8))
rand=rand1*rand2*rand3*timer()
randomize rand
return
kon:
suspend for mouse
end