home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Almathera Ten Pack 4: Demo 1
/
almathera_demo1.bin
/
games
/
breaker_construction
/
breaker_constructionset
/
breaker.gfa
(
.txt
)
< prev
next >
Wrap
GFA-BASIC Atari
|
1995-03-16
|
41KB
|
494 lines
'
' *******************************************************
' * *
' * BREAKER (c) Paul Stevens *
' * *
' * Written during February-April 1989 *
' * *
' *******************************************************
'
initialization
'
' ****** START OF MAIN LOOP ******
'
DO
x#=MOUSEX-mx#
IF x#<10
x#=10
mx#=MOUSEX-10
ENDIF
IF x#>160
x#=160
mx#=MOUSEX-160
ENDIF
'
IF bx#<12
bx#=12
bmx#=-bmx#
SOUND 1000,1,200,1
ENDIF
IF bx#>183
bx#=183
bmx#=-bmx#
SOUND 1000,1,200,0
ENDIF
'
IF by#<16
by#=16
bx#=bx#+(INT(RND*(4)-2))
bmy#=-bmy#
SOUND 1000,1,200,1
ENDIF
IF by#>238
balls#=balls#-1
startup
ENDIF
'
bx#=bx#+bmx#
by#=by#+bmy#
'
IF bmy#<0 AND bmx#<0
p1#=POINT(bx#+3,by#-1)
p2#=POINT(bx#,by#+2)
IF p1#<>2 OR p2#<>2
tlbrickhitcheck
ENDIF
GOTO over
ENDIF
IF bmx#>0 AND bmy#<0
p3#=POINT(bx#+3,by#-1)
p4#=POINT(bx#+6,by#+2)
IF p3#<>2 OR p4#<>2
trbrickhitcheck
ENDIF
GOTO over
ENDIF
IF bmx#<0 AND bmy#>0
p5#=POINT(bx#+3,by#+5)
p6#=POINT(bx#,by#+2)
IF p5#<>2 OR p6#<>2
blbrickhitcheck
ENDIF
GOTO over
ENDIF
IF bmy#>0 AND bmx#>0
p7#=POINT(bx#+6,by#+2)
p8#=POINT(bx#+3,by#+5)
IF p7#<>2 OR p8#<>2
brbrickhitcheck
ENDIF
ENDIF
'
over:
'
IF by#>220 AND by#<226 AND bx#+3>x#-3 AND bx#+3<x#+33
bathitcheck
ENDIF
'
IF db#=40
IF by#>180 AND by#<190 AND bx#+3>x#-3 AND bx#+3<x#+33
bathitcheck
ENDIF
ENDIF
'
MW_OUT 4,x#,y#-db#
MW_OUT 5,x#+13,y#-db#
MW_OUT 7,bx#,by#
'
k$=INKEY$
IF k$="p"
DO UNTIL INKEY$="p"
LOOP
k$=""
ENDIF
IF k$="q"
balls#=0
startup
k$=""
ENDIF
LOOP
'
' ****** END OF MAIN LOOP ******
'
> PROCEDURE tlbrickhitcheck
IF p1#<>2
hitposx#=bx#+3
hitposy#=by#-1
IF dest#=0 OR p1#>28
bmy#=-bmy#
ENDIF
brickblank
ENDIF
IF p2#<>2
hitposx#=bx#
hitposy#=by#+2
IF dest#=0 OR p2#>28
bmx#=-bmx#
ENDIF
brickblank
ENDIF
RETURN
> PROCEDURE trbrickhitcheck
IF p3#<>2
hitposx#=bx#+3
hitposy#=by#-1
IF dest#=0 OR p3#>28
bmy#=-bmy#
ENDIF
brickblank
ENDIF
IF p4#<>2
hitposx#=bx#+6
hitposy#=by#+2
IF dest#=0 OR p4#>28
bmx#=-bmx#
ENDIF
brickblank
ENDIF
RETURN
> PROCEDURE brbrickhitcheck
IF p7#<>2
hitposx#=bx#+6
hitposy#=by#+2
IF dest#=0 OR p7#>28
bmx#=-bmx#
ENDIF
brickblank
ENDIF
IF p8#<>2
hitposx#=bx#+3
hitposy#=by#+5
IF dest#=0 OR p8#>28
bmy#=-bmy#
ENDIF
brickblank
ENDIF
RETURN
> PROCEDURE blbrickhitcheck
IF p5#<>2
hitposx#=bx#+3
hitposy#=by#+5
IF dest#=0 OR p5#>28
bmy#=-bmy#
ENDIF
brickblank
ENDIF
IF p6#<>2
hitposx#=bx#
hitposy#=by#+2
IF dest#=0 OR p6#>28
bmx#=-bmx#
ENDIF
brickblank
ENDIF
RETURN
> PROCEDURE bathitcheck
bc#=bx#+3
bs#=bs#+1
IF max#=0 AND bs#>20
bmy#=bmy#*2
max#=1
ENDIF
'
IF db#=0
by#=220
ENDIF
'
IF db#=40 AND by#>204
by#=220
ENDIF
IF db#=40 AND bmy#<0 AND by#<204
by#=190
ENDIF
IF db#=40 AND bmy#>0 AND by#<204
by#=180
ENDIF
'
bmy#=-bmy#
IF bc#>x#-3 AND bc#<x#+5
bmx#=-2
ENDIF
IF bc#>x#+4 AND bc#<x#+13
bmx#=-1
ENDIF
IF bc#>x#+12 AND bc#<x#+18
IF bmx#>0.5
bmx#=0.5
ENDIF
IF bmx#<0.5
bmx#=-0.5
ENDIF
ENDIF
IF bc#>x#+17 AND bc#<x#+26
bmx#=1
ENDIF
IF bc#>x#+25 AND bc#<x#+33
bmx#=2
ENDIF
SOUND 500,4,200,1
'
IF grab#>0 AND bmy#<0
grab#=grab#-1
y2#=5
bbp#=bx#-x#
IF bbp#=>25
bbp#=25
ENDIF
IF bbp#=<-2
bbp#=-1
ENDIF
IF db#=40 AND by#<205
y2#=45
ENDIF
'
DO UNTIL MOUSEK=1
x#=MOUSEX-mx#
IF x#<10
x#=10
mx#=MOUSEX-10
ENDIF
IF x#>160
x#=160
mx#=MOUSEX-160
ENDIF
'
bx#=x#+bbp#
MW_OUT 4,x#,y#-db#
MW_OUT 5,x#+13,y#-db#
MW_OUT 7,bx#,y#-y2#
LOOP
ENDIF
RETURN
> PROCEDURE brickblank
bs#=bs#+1
bx#=bx#+(INT(RND*(4)-2))
bp#=1000
brickx#=(hitposx#+4)/15
brickx#=INT(brickx#)*15-4
bricky#=(hitposy#+1)/7
bricky#=INT(bricky#)*7-1
cv#=POINT(hitposx#,hitposy#)
IF cv#<>2 AND cv#<29
COLOR 2
bp#=1500
PBOX brickx#,bricky#,brickx#+13,bricky#+5
sc#=sc#+sca#
bhn#=bhn#+1
IF max#=0 AND bs#>20
bmy#=bmy#*2
max#=1
ENDIF
ENDIF
IF cv#=31
jumper
ENDIF
IF cv#=24
grab#=10
ENDIF
IF cv#=18
dest#=100
ENDIF
IF dest#>0
dest#=dest#-1
ENDIF
IF cv#=21
IF sca#<41
sca#=sca#*2
xs#=sca#/10
COLOR 9,2
TEXT 286,90,xs#
ENDIF
ENDIF
IF cv#=23
db#=40
bs#=0
ENDIF
IF cv#=19
FOR a#=10 TO 175 STEP 15
PUT a#,208,solidbrick$
wh#=0
NEXT a#
ENDIF
IF cv#=29 OR cv#=30 AND by#>195
wh#=wh#+1
IF wh#>19
wh#=0
COLOR 2
PBOX 9,208,191,215
ENDIF
ENDIF
IF cv#=22
max#=0
bs#=0
IF bmx#>0
bmx#=0.5
ENDIF
IF bmx#<0
bmx#=0.5
ENDIF
IF bmy#>0
bmy#=1
ENDIF
IF bmy#<0
bmy#=-1
ENDIF
ENDIF
SOUND bp#,2,255,0
IF cv#=17
dropper
ENDIF
score
IF bn#=bhn#
changelevels
startup
ENDIF
RETURN
> PROCEDURE score
COLOR 9,2
IF sc#>sc1#
TEXT scpos#,102," "
scpos#=scpos#-4
sc1#=sc1#*10
ENDIF
TEXT scpos#,102,sc#
IF sc#=>bbs#
IF balls#<9
balls#=balls#+1
ENDIF
COLOR 6,2
TEXT 260,239,balls#
bbs#=bbs#+1000
ENDIF
RETURN
> PROCEDURE jumper
IF brickx#=tb1x#-6 AND bricky#=tb1y#-2
bx#=tb2x#-3
by#=tb2y#-1
ENDIF
IF brickx#=tb2x#-6 AND bricky#=tb2y#-2
bx#=tb1x#-3
by#=tb1y#-1
ENDIF
'
nfb#=0
FOR a#=0 TO 3
fb#(a#)=0
NEXT a#
'
IF POINT(bx#+4,by#-5)<29
nfb#=1
fb#(0)=1
ENDIF
IF POINT(bx#+17,by#+2)<29
nfb#=1
fb#(1)=1
ENDIF
IF POINT(bx#+4,by#+8)<29
nfb#=1
fb#(2)=1
ENDIF
IF POINT(bx#-10,by#+2)<29
nfb#=1
fb#(3)=1
ENDIF
'
IF nfb#=0
hitposx#=bx#+3
hitposy#=by#+2
brickblank
ENDIF
exit#=0
'
DO UNTIL exit#=1
a#=INT(RND*(4))
IF fb#(a#)=1
IF a#=0
bx#=bx#+1
by#=by#-5
exit#=1
IF bmy#>0
bmy#=-bmy#
ENDIF
ENDIF
IF a#=1
bx#=bx#+11
exit#=1
IF bmx#<0
bmx#=-bmx#
ENDIF
ENDIF
IF a#=2
bx#=bx#+1
by#=by#+4
exit#=1
IF bmy#<0
bmy#=-bmy#
ENDIF
ENDIF
IF a#=3
bx#=bx#-10
exit#=1
IF bmx#>0
bmx#=-bmx#
ENDIF
ENDIF
ENDIF
LOOP
RETURN
> PROCEDURE startup
IF balls#<1
hiscore
gameover
IF joy#=2
SETCOLOR 0,0,0,0
SETCOLOR 1,0,0,0
setupbigintro
bigintro
drawgamescreen
startlevel
ENDIF
setupvariables
setupbricks
ENDIF
COLOR 6,2
TEXT 260,239,balls#
COLOR 9,2
TEXT 286,90,"1"
COLOR 2
PBOX 9,208,191,215
'
DO UNTIL STRIG(0)=-1
'
x#=MOUSEX-mx#
IF x#<10
x#=10
mx#=MOUSEX-10
ENDIF
IF x#>160
x#=160
mx#=MOUSEX-160
ENDIF
'
MW_OUT 4,x#,y#
MW_OUT 5,x#+13,y#
MW_OUT 7,x#+12,y#-5
LOOP
'
bx#=x#+12
bmy#=-1
bmx#=0.5
by#=220
ab#=0
bs#=0
max#=0
sca#=10
db#=0
wh#=0
dest#=0
grab#=0
RETURN
> PROCEDURE setupvariables
bs#=1
bhn#=0
balls#=3
sc#=0