===Avión 5==={{ :es:basic:gwbasic:captura_avion5_editada.jpg?200|}} Uno de los juegos que solían aparecer en los recopilatorios de listados BASIC de los 80 era el de un avión que iba bombardeando una ciudad hasta poder aterrizar en ella. Así que uno de mis primeros programas de gwbasic, cuando estaba aprendiendo el dialecto de los PCs, fue una revisión del clásico (programada desde cero, porque había el listado equivalente que programé en un Spectrum). (Nota: este programa espera que exista un archivo de records llamado avion.rec en la carpeta del programa. Se incluye un ejemplo para ese archivo). 10 DIM B(40):DIM R(20):DIM R$(20):DIM FE$(20) 20 SCREEN 0,0,0 30 WIDTH 40:KEY OFF:CLS 40 GOSUB 370:CLS:REM instrucciones 50 NIVEL=1:PUNTOS=0 60 REM dibujo---------------------------- 70 FOR A=1 TO 40 80 B(A)=INT(RND*(NIVEL+1))+20-NIVEL 90 FOR C=20 TO B(A) STEP -1 100 LOCATE C,A 110 COLOR 21-C 120 PRINT CHR$(178) 130 NEXT:NEXT 140 REM coordenadas 150 X=1:Y=1 160 BOX=0:BOY=0:CTR=0 170 REM juego----------------------------- 180 IN$=INKEY$:SOUND .3,.1 190 IF X>1 THEN LOCATE Y,X-1:COLOR 7,0:PRINT " " 200 IF IN$=" " AND CTR=0 THEN CTR=1:BOX=X:BOY=Y 210 X=X+1:IF X>40 THEN LOCATE Y,40:COLOR 7,0:PRINT " ":Y=Y+1:X=1 ELSE LOCATE Y,X:COLOR 7,0:PRINT " " 220 IF Y>=B(X) THEN GOTO 470:REM SE HA ESTRELLADO 230 IF Y>=21 AND X>=20 THEN GOTO 710:REM Lo consigui¢ 240 IF CTR=1 AND B(BOX)<=BOY THEN GOSUB 310:REM CAIDA BOMBA 250 IF CTR=1 THEN LOCATE BOY,BOX:PRINT " ":BOY=BOY+1:SOUND (25-BOY)*100,.01 260 IF CTR=1 THEN LOCATE BOY,BOX:PRINT CHR$(4):SOUND .01,.1 270 LOCATE Y,X:COLOR 5,0:PRINT CHR$(232):IF X>1 THEN LOCATE Y,X-1:COLOR 4,0:PRINT CHR$(175) 280 LOCATE 21,1:PRINT "PUNTOS ";PUNTOS 290 LOCATE 21,20:PRINT "RECORD ";RECORD 300 GOTO 170 310 REM IMPACTO BOMBA------------ 320 CTR=0 330 PLAY"C#60":LOCATE BOY,BOX:PRINT " " 340 IF B(BOX)>=20 THEN RETURN 350 B(BOX)=B(BOX)+1:PUNTOS=PUNTOS+10 360 RETURN 370 WIDTH 80 380 PRINT "ATERRIZAJE" 390 PRINT " Se halla en un avi¢n que est  a punto de estrellarse." 400 PRINT " Su £nica posibilidad es destruir la ciudad que tiene debajo, para aterrizar " 410 PRINT "all¡. " 420 PRINT " Para ello, lance bombas pulsando la barra espaciadora. Pero ­cuidado! no pue-" 430 PRINT "de lanzar una bomba hasta que la anterior haya explotado." 440 PRINT 450 PRINT " SUERTE." 460 GOSUB 670:WIDTH 40:RETURN 470 REM SE HA ESTRELLADO 480 FOR F=900 TO 3 STEP -1 490 SOUND 1/F,.01:NEXT:GOSUB 670:CLS 500 WIDTH 80:LOCATE 1,1:PRINT "SE HA ESTRELLADO" 510 PRINT "SUS PUNTOS: ";PUNTOS:NOMBRE$="":GOSUB 670:CLS 520 OPEN "AVION5.REC" FOR INPUT AS #1 530 FOR A=1 TO 20:INPUT #1,R$(A),R(A),FE$(A) 540 NEXT:CLOSE #1 550 PRINT "TABLA DE RECORDS":FOR F=1 TO 20 560 LOCATE F+1,1:PRINT R$(F) 570 LOCATE F+1,50:PRINT R(F): 575 LOCATE F+1,60:PRINT FE$(F) 580 NEXT:CTR=PUNTOS 590 IF R(20)R(A-1) THEN SWAP R(A),R(A-1):SWAP R$(A),R$(A-1):SWAP FE$(A),FE$(A-1) 620 NEXT:IF R(20) Contenido de avion5.rec: "El Master",1500,"7-13-1991" "Heroes Alados",1250,"7-13-1991" "Pilotos Intrepidos",1000,"7-13-1991" "­­El poder !!",750,"7-13-1991" "Superman",500,"7-13-1991" "Volador loco",250,"7-13-1991" "El nuevo Baron Rojo",100,"7-13-1991" "Cielos Abiertos",75,"7-13-1991" "Minipiloto",50,"7-13-1991" "Bueno, ya se‚ que no soy el mejor",10,"7-13-1991" "",0,"7-13-1991" "",0,"7-13-1991" "",0,"7-13-1991" "",0,"7-13-1991" "",0,"7-13-1991" "",0,"7-13-1991" "",0,"7-13-1991" "",0,"7-13-1991" "",0,"7-13-1991" "",0,"7-13-1991"