70 lines
2.1 KiB
QBasic
70 lines
2.1 KiB
QBasic
10 'REBOTES, por Alexander Martin
|
|
20 'copyright (c) AMSOFT 1984
|
|
30 '
|
|
40 MODE 1:BORDER 1:INK 0,1:INK 1,26:INK 2,24:INK 3,6
|
|
50 SPEED KEY 15,2
|
|
60 ENV 1,1,18,0,11,0,10
|
|
70 ENT 1,10,2,2
|
|
80 ENV 3,1,0,16,5,-3,2
|
|
90 ENV 2,5,3,3,1,-21,22,9,-3,2
|
|
100 ENT -2,10,2,2,5,-7,1,2,11,3,2,-4,8
|
|
110 '
|
|
120 '
|
|
130 MOVE 30,32:DRAWR 0,400,1:MOVE 610,32:DRAWR 0,400,1
|
|
140 PEN 3:LOCATE 3,1:PRINT STRING$(36,143)
|
|
150 PEN 2:LOCATE 3,2:PRINT STRING$(36,143)
|
|
160 PEN 1:FOR r=5 TO 6:LOCATE 3,r:PRINT STRING$(36,143):NEXT r
|
|
170 bx=9
|
|
180 pelotas=5:puntos=0
|
|
190 PEN 1:GOSUB 680:CLEAR INPUT
|
|
200 IF INKEY$<>CHR$(32) AND JOY(0)<16 THEN 200
|
|
210 LOCATE 3,23:PRINT SPACE$(36):LOCATE 1,24:PRINT SPACE$(40);
|
|
220 GOSUB 690:GOSUB 660:GOTO 280
|
|
230 '
|
|
240 '
|
|
250 LOCATE bx,24:PRINT" ";STRING$(4,131);" ":RETURN
|
|
260 '
|
|
270 '
|
|
280 xa=1:ya=1:IF INT(RND*2)=1 THEN xa=-xa
|
|
290 PEN 1:GOSUB 250
|
|
300 ORIGIN 0,400
|
|
310 x=bx+4:y=11:x1=x:y1=y
|
|
320 '
|
|
330 '
|
|
340 x1=x+xa:y1=y+ya
|
|
350 IF x1=3 OR x1=38 THEN xa=-xa
|
|
360 GOSUB 540
|
|
370 IF y1=24 AND x1>bx+1 AND x1<bx+6 THEN ya=-ya:y1=y1-2: SOUND 130,44,8,7,1,1:a=((x>bx+5)OR(x<bx+2)):IF a=-1 THEN xa=xa*a:x1=x1+xa:y1=y1+1
|
|
380 IF y=25 THEN LOCATE x,y:PRINT" ":GOTO 500
|
|
390 GOSUB 250
|
|
400 t=TEST((16*x1)-1,-(16*y1)-1)
|
|
410 IF t<>0 THEN ya=-ya:xz=x1:yz=y1:y1=y1+ya:GOSUB 590:IF t=2 THEN puntos=puntos+10:GOSUB 660
|
|
420 IF t=3 THEN puntos=puntos+20:GOSUB 660
|
|
430 IF t=1 THEN puntos=puntos+5:GOSUB 660
|
|
440 IF y1=1 THEN ya=1
|
|
450 LOCATE x,y:PRINT" ":LOCATE x1,y1:PRINT CHR$(231):x=x1 :y=y1
|
|
460 IF y=1 OR x=3 OR x=38 THEN SOUND 129,78,8,7,1,1
|
|
470 GOTO 340
|
|
480 '
|
|
490 '
|
|
500 pelotas=pelotas-1:SOUND 132,19,46,12,2,2:IF pelotas=0 THEN GOTO 620
|
|
510 GOSUB 660:GOTO 280
|
|
520 '
|
|
530 '
|
|
540 IF (INKEY(8)=0 OR INKEY(74)=0) AND bx>2 THEN bx=bx-2: RETURN
|
|
550 IF (INKEY(1)=0 OR INKEY(75)=0) AND bx<32 THEN bx=bx+2 :RETURN
|
|
560 RETURN
|
|
570 '
|
|
580 '
|
|
590 LOCATE xz,yz:PRINT" ":RETURN
|
|
600 '
|
|
610 '
|
|
620 IF puntos>=maximo THEN maximo=puntos
|
|
630 GOSUB 660:puntos=0:pelotas=5:GOTO 130
|
|
640 '
|
|
650 '
|
|
660 SOUND 130,0,20,13,3,0,31:LOCATE 1,25:PRINT "Maximo";maximo;
|
|
670 LOCATE 15,25:PRINT "Puntos";puntos:LOCATE 30,25:PRINT "Pelotas";pelotas:RETURN
|
|
680 LOCATE 3,23:PRINT"Pulse barra espaciadora para empezar":RETURN
|
|
690 LOCATE 1,25:PRINT SPACE$(40);:RETURN
|