10 REM
20 ENV 1,1,15,1,15,-1,1 30 GOSUB 590 40 HS=0 50 BL=7 60 BA$="":FOR L=1 TO BL:BA$=BA$+CHR$(132):NEXT L:BA$=" "+BA$+" " 70 BE=31-BL 80 GOSUB 450 90 REM MAIN NEW GAME LOOP 100 SC=0 110 REM MAIN NEW FRAME LOOP 120 BH=90 130 GOSUB 360 140 BX=10:GOSUB 540 150 X=5:Y=20 160 CX=1:CY=-1 170 GF=1 180 REM MAIN BOUNCE AND SCORE LOOP 190 GOSUB 750 200 IF GF=0 THEN GOTO 1000 210 GOSUB 920 220 GOSUB 960 230 PEN 3 240 LOCATE 8,1:PRINT SC; 250 IF BH<>0 THEN GOTO 190 260 REM END OF FRAME 270 FOR L=10 TO 250 STEP 5 280 SOUND 1,L,5:SOUND 2,L+7,4 290 NEXT L 300 MODE 1:LOCATE 4,11 310 PRINT "Your score is now :";SC 320 IF SC>HS THEN PRINT "You have the high score":PRINT:PRINT"and you're still playing":GOTO 340 330 PRINT "You are ";hs-sc;" points behind the high score" 340 FOR L=1 TO 4000:NEXT L 350 GOTO 110 360 REM Draw screen layout 370 MODE 1:BORDER 14:PAPER 0:PEN 2 380 FOR L=2 TO 22 390 LOCATE 1,L:PRINT CHR$(129):LOCATE 32,L:PRINT CHR$(130);:NEXT L 400 LOCATE 2,2:FOR L=2 TO 31:PRINT CHR$(134);:NEXT L 410 FOR L=2 TO 31:PEN 3:LOCATE L,6:PRINT CHR$(133);:LOCATE L,13:PRINT CHR$(133); 420 PEN 1:LOCATE L,9:PRINT CHR$(133);:NEXT L 430 LOCATE 2,1:PRINT "SCORE: HIGH : ";HS 440 RETURN 450 REM GENERATE THE PATTERNS 460 SYMBOL AFTER 129 470 SYMBOL 129,4,2,1,2,4,2,1,2 480 SYMBOL 130,32,64,128,64,32,64,128,64 490 SYMBOL 131,24,62,126,255,255,126,62,24 500 SYMBOL 132,255,255,170,85,72,16,0,0 510 SYMBOL 133,255,170,85,170,85,170,85,255 520 SYMBOL 134,0,0,0,0,0,0,0,255 530 RETURN 540 REM DRAW BAT ON SCREEN 550 LOCATE BX,23 560 PEN 3 570 PRINT BA$; 580 RETURN 590 MC=40000 600 TA=40000+&7F 610 TH=INT(TA/256) 620 TL=TA-256*TH 630 POKE MC,&CD 640 POKE MC+1,&60 650 POKE MC+2,&BB 660 POKE MC+3,&32 670 POKE MC+4,TL 680 POKE MC+5,TH 690 POKE MC+6,&C9 700 RETURN 710 LOCATE XX,YY 720 CALL MC 730 DD=PEEK(TA) 740 RETURN 750 REM SET UP NEW BALL POSITION 760 REM CHANGE SCORE IF APPROPRIATE 770 C=X+CX:D=Y+CY 780 IF C<2 OR C>30 THEN CX=-CX:SC=SC+2:GOTO 770 790 IF D<3 THEN CY=-CY:SC=SC+4:CX=INT(RND(1)*3)-1:GOTO 770 800 IF D>23 THEN GF=0:RETURN 810 XX=C+1:YY=D+1:GOSUB 710 820 IF DD=32 THEN RETURN 830 SOUND 1,280,20,0,1 840 IF DD=132 THEN GOTO 880 850 BH=BH-1 860 SC=SC+D:LOCATE XX,YY:PRINT " "; 870 CX=INT(RND(1)*3)-1:CY=-CY:GOTO 770 880 SC=SC+20:CY=-CY 890 CX=INT(RND(1)*3)-1 900 GOTO 770 910 RETURN 920 REM ERASE OLD BALL, PLOT NEW BALL 930 LOCATE C+1,D+1:PRINT CHR$(131);:LOCATE X+1,Y+1:PRINT " " 940 X=C:Y=D 950 RETURN 960 REM MOVE BAT IF NECESSARY 970 IF INKEY(8)=0 AND BX>1 THEN BX=BX-1:GOSUB 540 980 IF INKEY(1)=0 AND BX<BE THEN BX=BX+1:GOSUB 540 990 RETURN 1000 REM PLAYER HAS LOST THE BALL 1010 CLS:LOCATE 1,10:PRINT "GAME OVER" 1020 LOCATE 1,15:PEN 2:PRINT "YOU SCORED :";SC 1030 IF SC>HS THEN LOCATE 1,18:PRINT "WHICH IS THE HIGH SCORE":HS=SC:GOTO 1050 1040 LOCATE 1,18:PRINT "SLIGHTLY (";HS-SC;") less than ":LOCATE 1,20:PRINT "the high score" 1050 LOCATE 1,21:PRINT "DO YOU WANT TO PLAY AGAIN ":LOCATE 15,23:PRINT "(Y/N)" 1060 I$=UPPER$(INKEY$) 1070 IF I$<>"Y" AND I$<>"N" THEN GOTO 1060 1080 IF I$="Y" THEN GOTO 100 1090 MODE 1:LOCATE 11,11:PRINT "type RUN to restart" 1100 END |