CLEAR:SPCLR SMAX=16 DIM@EX(SMAX),EY(SMAX),EI(SMAX) SPSET@0,96,2,0,0,0 SPANIM 0,4,16,0 FOR I=0 TO SMAX-1 SPSET I+2,156,10,0,0,0 SPANIM I+2,4,7+RND(5),0 NEXT I @START '***************************** BL=3:SC=0:ST=0 MX=128:MY=160:MUKI=1:CHMK=96 JMP=0:JPY=0:KSK=0.0 SHT=0:GX=512:GY=0:MGJM=0.0 @MAP '******************************* BGMPLAY 12 CLS:GCLS AT=0:BL=BL+1:ST=ST+1 CL=RND(12)+2 FOR X=0 TO 31 BGPUT 0,X,22,546,CL,0,0 NEXT X FOR I=0 TO SMAX-1 EI(I)=0 EX(I)=RND(232)+8 EY(I)=RND(120) SPCHR I+2,156,10,0,0,0 SPOFS I+2,EX(I),EY(I) NEXT I @MAIN '****************************** KY=BUTTON() IF KY AND 4 THEN GOSUB @HIDARI IF KY AND 8 THEN GOSUB @MIGI ON SHT GOSUB @NOSH.@UNSH,@UPSH,@DAWNSH,@ENSH ON JMP GOSUB @TIJO,@UPP,@KAKOU,@KAKOEND GOSUB @KSKZERO MX=FLOOR(MX+KSK) IF MX<=0 THEN MX=1:KSK=KSK*-1 IF MX>=240 THEN MX=239:KSK=KSK*-1 GOSUB @HANTEI IF AT>=SMAX AND SHT==0 THEN BGMPLAY 5:GOTO @STCLEAR IF BL<0 THEN BGMPLAY 6:GOTO @GAMEOVER SPCHR 0,CHMK:SPOFS 0,MX,MY LOCATE 1,23:PRINT "SCORE:";SC;"0 STAGE:";ST;" BALL:";BL;" "; VSYNC 2 GOTO @MAIN @HIDARI '-------------------------------------- CHMK=104:MUKI=-1:KSK=KSK-0.3 IF KSK<=-8 THEN KSK=-8 RETURN @MIGI '-------------------------------------- CHMK=96:MUKI=1:KSK=KSK+0.3 IF KSK>=8 THEN KSK=8 RETURN @KSKZERO '------------------------------------ IF KSK>=0.1 THEN KSK=KSK-0.1 IF KSK<=-0.1 THEN KSK=KSK+0.1 RETURN @NOSH '======================================= IF KY AND 32 THEN SHT=1 RETURN @ONSH SHT=2:GX=MX:GY=MY-8:GJY=0.0 MGXS=MUKI*FLOOR(ABS(KSK*1.2)) MGJM=1+ABS(KSK) SPSET 1,142,7,0,0,0 SPANIM 1,2,16,0 SPOFS 1,GX,GY RETURN @UPSH IF GJY>=MGJM THEN SHT=3:GJY=0.0:RETURN GX=GX+MGXS IF (GX<=0)OR(GX>=240) THEN MGXS=MGXS*-1:BEEP 33 GJY=GJY+0.2 GY=GY-FLOOR(MGJM-GJY) SPOFS 1,GX,GY RETURN @DAWNSH GX=GX+MGXS IF (GX<=0)OR(GX>=240) THEN MGXS=MGXS*-1:BEEP 33 GJY=GJY+0.2 GY=GY+FLOOR(GJY) SPOFS 1,GX,GY IF GY>=196 THEN SHT=4:BL=BL-1:BEEP 13:RETURN IF (ABS(MX-GX)<20) AND (ABS(MY-GY)<8) THEN BEEP 64:SC=SC+FLOOR(2*ABS(MGXS)):SHT=4 RETURN @ENSH SPCLR 1:SHT=0:RETURN @TIJO '====================================== IF KY AND 16 THEN JMP=1:JMAX=7+FOOLR(ABS(KSK)):BEEP 8 RETURN @UPP IF JPY>=JMAX THEN JMP=2:JPY=0:RETURN JPY=JPY+1 MY=MY-(JMAX-JPY) RETURN @KAKOU JPY=JPY+1 MY=MY+JPY IF MY>=160 THEN JMP=3 RETURN @KAKOEND BEEP 9:MY=160:JMP=0:JPY=0 RETURN @HANTEI '=================================== FOR I=0 TO SMAX-1 IF EI(I)==0 AND ABS(GX-EX(I))<16 AND ABS(GY-EY(I))<16 THEN GOSUB @ATARI NEXT I RETURN @ATARI BEEP 37 AT=AT+1:SC=SC+(AT*ST):EI(I)=1 MGXS=MGXS/2:GJY=GJY-0.6 SPCHR I+2,48,10,0,0,0 RETURN @STCLEAR '================================== COLOR RND(12)+2 LOCATE 10,12:PRINT "STAGE CLEAR!" VSYNC 8 IF BUTTON()==16 THEN @MAP GOTO @STCLEAR @GAMEOVER '================================= COLOR RND(12)+2 LOCATE 11,12:PRINT "GAME OVER" VSYNC 8 IF BUTTON()==16 THEN @START IF BUTTON()==32 THEN END GOTO @GAMEOVER '************************************************