Random game
Random game
Random game
  • Entry name:
     Space Zapper Two 
  • Category:
    Games
  • Publisher/Developer:
    Flop 8
  • Programming language:
    Action!
  • Entry name:
    Space Zapper Two
  • Category:
    Games
  • Publisher/Developer:
    Flop 8
Space Zapper Two Space Zapper Two Space Zapper Two Space Zapper Two Space Zapper Two Space Zapper Two Space Zapper Two Space Zapper Two
Listing 1
;

DEFINE PLAYER1="1",
PLAYER2="2"

BYTE X,X2,Y,Y2,A,A2,OLDA,OLDA2,LEVEL
BYTE WIN
CARD WIN1,WIN2
CARD I,I2,SPEED
BYTE COL2=709,HCOL2=53271,hcol4=53274
CARD POINTER SCREEN=88
BYTE ARRAY FARBE(0)=708

PROC NOP() RETURN

PROC WAIT(CARD VAL)
CARD IV FOR IV=0 TO VAL DO NOP() OD
RETURN

proc make_sound()
sound(0,200,14,10)
sound(1,201,14,10)
sound(2,202,14,10)
sound(3,203,14,10)
wait(30000) poke ($D208,1)
return

PROC OP(BYTE VAL)
I=1600 I2=1560
DO
I==-40 I2==+40
SETBLOCK(SCREEN^+I,40,VAL)
SETBLOCK(SCREEN^+I2,40,VAL)
WAIT(800)
UNTIL I<=0
OD
RETURN

; EXPLOSION ROUTINES

BYTE FUNC CH_X(BYTE CEX)
IF CEX<1 OR CEX>200 THEN CEX=1 FI
IF CEX>158 THEN CEX=158 FI
RETURN (CEX)

BYTE FUNC CH_Y(BYTE CEY)
IF CEY<1 OR CEY>200 THEN CEY=1 FI
IF CEY>78 THEN CEY=78 FI
RETURN (CEY)

PROC EXPLODE(BYTE EX,EY,COLVAL)
BYTE EXC,EXN,EYN,SA
EXC=0
COLOR=COLVAL
DO
EXN=CH_X(EX-EXC) PLOT(EXN,EY)
EXN=CH_X(EX-EXC) EYN=CH_Y(EY-EXC)
PLOT(EXN,EYN)
EYN=CH_Y(EY-EXC) PLOT(EX,EYN)
EXN=CH_X(EX+EXC) EYN=CH_Y(EY-EXC)
PLOT(EXN,EYN)
EXN=CH_X(EX+EXC) PLOT(EXN,EY)
EXN=CH_X(EX+EXC) EYN=CH_Y(EY+EXC)
PLOT(EXN,EYN)
EYN=CH_Y(EY+EXC) PLOT(EX,EYN)
EXN=CH_X(EX-EXC) EYN=CH_Y(EY+EXC)
PLOT(EXN,EYN)
EXC==+1 COL2==-1
SA=RAND(0) SOUND(0,SA,0,10)
SA=RAND(0) SOUND(1,SA,2,EXC)
WAIT(700)
UNTIL EXC=8
OD SNDRST()
RETURN

PROC GET_STICK2()
A2=STICK(1)
IF A2=15 OR A2=6 OR A2=5 OR A2=9 OR A2=10
THEN A2=OLDA2 FI

IF A2=14 THEN
IF OLDA2=13 THEN A2=13
ELSE Y2=CH_Y(Y2-1) FI FI

IF A2=13 THEN
IF OLDA2=14 THEN A2=14 IF Y2>0 THEN Y2==-1 FI

ELSE Y2=CH_Y(Y2+1) FI FI

IF A2=11 THEN
IF OLDA2=7 THEN A2=7
ELSE X2=CH_X(X2-1) FI FI

IF A2=7 THEN
IF OLDA2=11 THEN A2=11 IF X2>0 THEN X2==-1 FI
ELSE X2=CH_X(X2+1) FI FI

OLDA2=A2
RETURN


PROC GET_STICK()
A=STICK(0)
IF A=15 OR A=6 OR A=5 OR A=9 OR A=10
THEN A=OLDA FI

IF A=14 THEN
IF OLDA=13 THEN A=13
ELSE Y=CH_Y(Y-1) FI FI

IF A=13 THEN
IF OLDA=14 THEN A=14 IF Y>0 THEN Y==-1 FI
ELSE Y=CH_Y(Y+1) FI FI

IF A=11 THEN
IF OLDA=7 THEN A=7
ELSE X=CH_X(X-1) FI FI

IF A=7 THEN
IF OLDA=11 THEN A=11 IF X>0 THEN X==-1 FI
ELSE X=CH_X(X+1) FI FI

OLDA=A
RETURN

PROC INIT()
GRAPHICS(7+16) POKE(752,1)
MAKE_SOUND() OP(170) WAIT(3000) OP(0)
SNDRST()
COLOR=2 PLOT (0,0) DRAWTO(159,0)
DRAWTO(159,79) DRAWTO(0,79)
DRAWTO(0,0)
X=10 Y=10 OLDA=7
X2=70 Y2=10 OLDA2=11
RETURN


PROC PL_EXPLODE(BYTE WHICH_PLAYER)
BYTE Z
IF WHICH_PLAYER=0 THEN
FOR Z=1 TO 10
DO
EXPLODE(X,Y,2)
EXPLODE(X,Y,0)
OD
ELSE
FOR Z=1 TO 10
DO
EXPLODE(X2,Y2,2)
EXPLODE(X2,Y2,0)
OD
FI

RETURN

PROC PL_()
DO
COLOR=1
GET_STICK() A=LOCATE(X,Y)
IF A<>0 THEN PL_EXPLODE(0) WIN=PLAYER2 EXIT FI
PLOT(X,Y)

COLOR=3
GET_STICK2() A=LOCATE(X2,Y2)
IF A<>0 THEN PL_EXPLODE(1) WIN=PLAYER1 EXIT FI
PLOT(X2,Y2)

WAIT(SPEED)
COL2==+1
OD
RETURN

PROC TITLE()
BYTE ZAP,P1=53272,HELP
GRAPHICS(18)
FARBE(0)=$8A FARBE(1)=$28 FARBE(3)=$C8
PRINTDE(6," action user group")
PRINTDE(6," : ")
PRINTDE(6," ")
PRINTDE(6," space zapper two")
PRINTDE(6," ")
PRINTDE(6," COPYRIGHT 1987 ")
PRINTDE(6," ")
PRINTDE(6," : ")
PRINTDE(6,"  ")
PRINTDE(6,"--------------------")
PRINTD(6," LEVEL : ") PRINTBDE(6,LEVEL)
DO
IF PEEK(53279)=5 THEN
LEVEL==+1 IF LEVEL=5 THEN LEVEL=1 FI
POSITION(13,11) PRINTBDE(6,LEVEL)
FOR ZAP=0 TO 254 DO
SOUND(0,ZAP,14,15) SOUND(1,ZAP,14,15)
SOUND(2,ZAP,14,15) SOUND(3,ZAP,14,15)
WAIT(50) OD
SNDRST()
FI
HELP=RAND(0)
POKE(53271,HELP)
P1=PEEK(53272)+1 POKE(53272,P1)
UNTIL PEEK(53279)=6 OR STRIG(0)=0 OD
IF LEVEL=1 THEN SPEED=2000 FI
IF LEVEL=2 THEN SPEED=1000 FI
IF LEVEL=3 THEN SPEED=400 FI
IF LEVEL=4 THEN SPEED=100 FI
RETURN

PROC FIN_PIC()
IF WIN=1 THEN WIN1==+1 FI
IF WIN=2 THEN WIN2==+1 FI

GRAPHICS(17) farbe(0)=0 farbe(1)=0
POSITION(3,3) PRINTD(6,"-------------")
POSITION(3,4)
PRINTD(6,"PLAYER ") PRINTBD(6,WIN)
PRINTDE(6," WINS")
POSITION(3,5) PRINTD(6,"-------------")
POSITION(2,8)
PRINTDE(6,"TOTAL WINS:")
POSITION(2,10)
PRINTD(6,"PLAYER 1 :") PRINTCD(6,WIN1)
POSITION(2,12)
PRINTD(6,"PLAYER 2 :") PRINTCD(6,WIN2)

POSITION(2,15)
PRINTDE(6,"select to clear...")

POSITION(2,18)
PRINTDE(6," press start")
printde(6," or button")
do
hcol4=rand(0)
if peek(53279)=5 then
win1=0 win2=0
POSITION(2,10)
PRINTD(6,"PLAYER 1 :") PRINTCD(6,WIN1) PRINTD(6," ")
POSITION(2,12)
PRINTD(6,"PLAYER 2 :") PRINTCD(6,WIN2) PRINTD(6," ")
fi
until peek(53279)=6 or strig(0)=0 or strig(1)=0
od
WAIT(5000)
return

PROC GAMESTART()
INIT()
PL_()
RETURN

PROC MAIN()
LEVEL=1 WIN1=0 WIN2=0

DO
SNDRST()
TITLE()
GAMESTART()
fin_pic()
OD
RETURN	

This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page, please contact me immediatelly so I can remove it!