====== TENEMOS VISITA ====== {{:otros:Tenemos_visita_p1.jpg?690|}} ===== Ficha ===== ^ Autor | Juan Jose Perez Torres | ^ Compatibilidad | Amstrad PCW 8256 / 8512 / 9512 | ^ Año | 1989 | ^ Género | Arcade | ^ Controles | Teclado | ^ Idioma | Español | ^ Estado | [[preservado|Preservado]] | ===== Capturas ===== {{:otros:Tenemos_visita_screenshot01.png?220}} {{:otros:Tenemos_visita_screenshot02.png?220}} {{:otros:Tenemos_visita_screenshot03.png?220}} {{:otros:Tenemos_visita_screenshot04.png?220}} ===== Descripción ===== El planeta Tierra, esta siendo invadido por seres extraterrestres. El gobierno de los Estados Unidos, te ha elegido para acabar con esta molesta visita. Si quieres que te sea sincero, ya puedes ir rezando por tu propia vida. Clásico juego matamarcianos bastante entretenido pero con un nivel de dificultad bastante alto. El movimiento de nuestra nave bastante lento y los misiles marcianos muy rápidos y cuesta esquivarlos. Otro problema que encontramos es que mientras nos movemos para esquivar los misiles marcianos y disparamos nuestra nave deja de moverse y nos matan. ===== Listado ===== * **__Listado - MARCIANO.BAS__** 10 ' ************************************************* 20 ' Tenemos visita 30 ' --------------------------------------------- 40 ' Mallard Basic 50 ' ============================================= 60 ' Por; Juan Jose Perez Torres 70 ' --------------------------------------------- 80 ' Junio-Julio de 1989 90 ' ************************************************* 100 ' 130 ' 140 ' 150 ' 160 ' 170 OPTION RUN:CLEAR:DIM pantalla(27,90) 180 : 190 alienigena=0:cx=35:disparo=0:disparo1=0:per=1:puntos=0 200 : 210 BORRA$=CHR$(27)+"E"+CHR$(27)+"H" 220 SUBRON$=CHR$(27)+"r":SUBROFF$=CHR$(27)+"u" 230 CLARO$=CHR$(27)+"bb"+CHR$(27)+"cc":OSCURO$=CHR$(27)+"cb"+CHR$(27)+"bc" 240 CUROFF$=CHR$(27)+"f":CURON$=CHR$(27)+"e" 250 VIDEON$=CHR$(27)+"p":VIDEOFF$=CHR$(27)+"q" 260 DEF FNtab$(x,y,texto$)=CHR$(27)+"Y"+CHR$(32+x)+CHR$(32+y)+texto$ 270 : 280 alienigena$(1)=CHR$(188)+CHR$(189) 290 alienigena$(2)=CHR$(190)+CHR$(191) 300 alienigena$(3)=CHR$(192)+CHR$(193) 310 alienigena$(4)=CHR$(194)+CHR$(195) 320 canon$=CHR$(32)+CHR$(197)+CHR$(32) 330 ' 340 ' 350 ' 360 RESTORE 470 370 : 380 PRINT BORRA$ 390 MEMORY 62210! 400 d=62928!:inic=d:GOSUB 440 410 d=62212!:bol=d:GOSUB 440 420 GOTO 510 430 : 440 READ a$:IF a$="$" THEN RETURN 450 byte=VAL("&H"+a$):POKE d,byte:d=d+1 460 GOTO 440 470 DATA 2A,01,00,11,57,00,19,22,02,F6,01,E3,F5,CD,01,F6,E9,00,C9,11,98,2C,21,00,B6,06,20,C5,06,08,73,23,72,23,13,10,F9,E5,EB,01,60,01,09,EB,E1,C1,10,EB,C9,C3,00,00,$ 480 DATA 7E,32,40,F3,21,40,F3,06,08,1A,23,77,13,13,10,F9,2A,01,00,11,57,00,19,22,3E,F3,01,27,F3,CD,3D,F3,E9,00,C9,2A,40,F3,26,00,29,29,29,11,00,B8,19,11,41,F3,EB,01,08,00,ED,B0,C9,C3,38,00,0B,00,B0,04,87,20,4C,44,49,$ 490 : 500 CALL inic 510 RESTORE 530:FOR d=1 TO 43:READ char$:char%=VAL(char$):FOR z%=0 TO 7:READ d$(z%):d%(z%)=VAL(d$(z%)):NEXT z%:CALL bol(char%,d%(0)):NEXT d 520 : 530 DATA 160,0,0,14,63,127,127,15,15 540 DATA 161,0,0,0,252,254,248,243,247 550 DATA 162,0,31,63,31,31,24,0,0 560 DATA 163,0,192,192,3,135,15,15,1 570 DATA 164,0,0,1,255,255,255,255,255 580 DATA 165,0,240,255,255,255,255,255,255 590 DATA 166,0,0,254,255,255,255,241,252 600 DATA 167,31,63,63,63,63,63,63,30 610 DATA 168,255,255,254,252,248,240,224,96 620 DATA 169,15,31,31,127,112,28,255,255 630 DATA 170,255,255,255,159,63,63,223,220 640 DATA 171,255,255,255,255,255,255,255,127 650 DATA 172,252,253,253,241,248,248,252,248 660 DATA 173,28,15,7,1,0,0,0,0 670 DATA 174,96,96,0,188,254,127,127,63 680 DATA 175,1,1,1,1,0,0,0,224 690 DATA 176,255,255,255,255,255,79,7,7 700 DATA 177,239,239,240,252,252,252,240,240 710 DATA 178,63,61,28,24,8,0,0,0 720 DATA 179,240,240,112,64,64,32,0,0 730 DATA 180,127,127,63,31,31,15,15,15 740 DATA 181,240,240,240,224,224,192,128,128 750 DATA 182,7,7,7,7,3,3,1,0 760 DATA 183,240,240,246,230,236,192,128,0 770 DATA 184,0,1,3,15,31,31,31,25 780 DATA 185,0,208,248,248,248,248,240,240 790 DATA 186,15,15,6,6,2,2,0,0 800 DATA 187,224,0,0,0,0,0,0,0 810 DATA 188,3,5,127,70,67,2,18,30 820 DATA 189,194,162,254,96,192,64,72,120 830 DATA 190,0,3,5,7,30,63,48,48 840 DATA 191,0,192,160,224,120,252,12,12 850 DATA 192,99,101,127,6,3,127,96,96 860 DATA 193,198,166,254,96,192,254,6,6 870 DATA 194,0,7,77,127,78,71,67,64 880 DATA 195,0,224,178,254,114,226,194,2 890 DATA 196,255,24,60,126,126,126,60,24 900 DATA 197,60,60,60,60,60,60,255,255 910 DATA 198,0,24,60,60,60,60,24,126 920 DATA 199,126,24,60,60,60,60,24,0 930 DATA 200,255,0,170,85,170,85,0,255 940 DATA 201,255,0,0,0,0,0,0,0 950 DATA 202,0,0,0,0,0,0,0,255 960 ' 970 ' 980 ' Presentacion 990 ' 1000 ' 1010 PRINT CUROFF$ 1020 a$=CHR$(160)+CHR$(161)+CHR$(162)+CHR$(163)+CHR$(164)+CHR$(165)+CHR$(166):x=3:y=2:GOSUB 1080 1030 a$=CHR$(167)+CHR$(168)+CHR$(32)+CHR$(169)+CHR$(170)+CHR$(171)+CHR$(172):x=4:y=2:GOSUB 1080 1040 a$=CHR$(173)+CHR$(174)+CHR$(175)+CHR$(176)+CHR$(177)+CHR$(178)+CHR$(179):x=5:y=2:GOSUB 1080 1050 a$=CHR$(32)+CHR$(180)+CHR$(181)+CHR$(182)+CHR$(183)+CHR$(32)+CHR$(184)+CHR$(185):x=6:y=2:GOSUB 1080 1060 a$=CHR$(32)+CHR$(186)+STRING$(5,32)+CHR$(187):x=7:y=2:GOSUB 1080 1070 GOTO 1090 1080 PRINT FNtab$(x,y,a$):RETURN 1090 : 1100 frase$="TENEMOS VISITA ":GOSUB 1110:GOTO 1220 1110 FOR I=90-LEN(frase$) TO 20 STEP -1 1120 PRINT FNtab$(3,I,frase$+CHR$(32)) 1130 NEXT I 1140 PRINT SUBRON$ 1150 FOR I=1 TO LEN(frase$)-1 1160 PRINT FNtab$(3,19+I,MID$(frase$,I,1)) 1170 FOR TIME=1 TO 100:NEXT TIME 1180 NEXT I 1190 PRINT SUBROFF$ 1200 RETURN 1210 : 1220 x=5:y=20:a$="El planeta Tierra, esta siendo invadido por seres extraterrestres.":GOSUB 1270 1230 x=7:y=20:a$="El gobierno de los Estados Unidos, te ha elegido para acabar con esta ":GOSUB 1270 1240 x=9:y=20:a$="molesta visita. Si quieres que te sea sincero, ya puedes ir rezando":GOSUB 1270 1250 x=11:y=20:a$="por tu propia vida.":GOSUB 1270 1260 GOSUB 1320 1270 FOR I=1 TO LEN(a$) 1280 PRINT FNtab$(x,y+(I-1),MID$(a$,I,1)) 1290 FOR R=1 TO 100:NEXT R 1300 NEXT I 1310 RETURN 1320 FOR I=5 TO 85:FOR J=5 TO 11 1330 pantalla(J,I)=0 1340 NEXT J,I 1350 : 1360 frase$="Presenta, Juan Jose Perez Torres" 1370 PRINT VIDEON$ 1380 PRINT FNtab$(18,45,STRING$(LEN(frase$)+2,CHR$(32))) 1390 PRINT FNtab$(19,45,CHR$(32)+frase$+CHR$(32)) 1400 PRINT FNtab$(20,45,STRING$(LEN(frase$)+2,CHR$(32))) 1410 PRINT VIDEOFF$ 1420 FOR TIME=1 TO 6000:NEXT TIME 1430 : 1440 FOR I=3 TO 20 1450 FOR TIME=1 TO 150:NEXT TIME 1460 PRINT FNtab$(I,0,STRING$(90,32)) 1470 NEXT I 1480 GOSUB 2320 1490 ' 1500 ' 1510 ' Eleccion de alienigenas 1520 ' 1530 ' 1540 vida=5:GOSUB 2590 1550 d=INT(RND*4)+1 1560 IF d=alienigena THEN 1550 1570 alienigena=d 1580 inv$=alienigena$(alienigena) 1590 muertos=0 1600 ' 1610 ' 1620 ' Pantalla de Juego 1630 ' 1640 ' 1650 FOR I=20 TO 70 STEP 4:FOR J=4 TO 15 STEP 2 1660 PRINT FNtab$(J,I,inv$) 1670 pantalla(J,I)=1:pantalla(J,I+1)=1 1680 NEXT J,I 1690 PRINT FNtab$(21,cx,canon$) 1700 ' 1710 ' 1720 ' Movimiento del ca|on 1730 ' 1740 ' 1750 D$=INKEY$ 1760 IF muertos=78 THEN bxx=0:byy=0:GOTO 1490 1770 IF D$=CHR$(1) AND cx>18 THEN cx=cx-1 1780 IF D$=CHR$(6) AND cx<69 THEN cx=cx+1 1790 IF D$=CHR$(13) AND disparo=0 THEN disparo=1:bx=21:by=cx+1 1800 IF disparo=1 THEN GOSUB 1840 1810 PRINT FNtab$(21,cx,canon$) 1820 GOSUB 2010 1830 GOTO 1750 1840 ' 1850 ' 1860 ' Disparo 1870 ' 1880 ' 1890 bx=bx-1 1900 PRINT FNtab$(bxx,byy,CHR$(32)) 1910 PRINT FNtab$(bx,by,CHR$(198)) 1920 byy=by:bxx=bx 1930 IF bx=3 THEN disparo=0:PRINT FNtab$(bxx,byy,CHR$(32)) 1940 IF pantalla(bx,by)=1 THEN GOSUB 1960 1950 RETURN 1960 IF pantalla(bx,by-1)=1 THEN ey=by-1 ELSE ey=by 1970 PRINT CHR$(7):PRINT FNtab$(bx,ey,STRING$(2,32)):pantalla(bx,ey)=0:pantalla(bx,ey+1)=0 1980 muertos=muertos+1:puntos=puntos+15:GOSUB 2610 1990 disparo=0 2000 RETURN 2010 ' 2020 ' 2030 ' Disparos alienigenas 2040 ' 2050 ' 2060 IF disparo1=1 THEN GOSUB 2140 2070 IF disparo1=1 THEN RETURN 2080 dx=0 2090 FOR I=21 TO 4 STEP -1 2100 IF pantalla(I,cx+1)=1 AND dx=0 THEN dx=I:disparo1=1 2110 NEXT I 2120 dx(1)=dx+1:dy(1)=cx+1 2130 RETURN 2140 ' 2150 ' 2160 ' Efectos de disparos alienigenas 2170 ' 2180 ' 2190 I=1 2200 IF per=1 THEN 2230 2210 IF dy(I)<=cx THEN dy(I)=dy(I)+1:IF pantalla(dx(I),dy(I))=1 THEN dy(I)=dy(1)-1 2220 IF dy(I)>cx+1 THEN dy(I)=dy(I)-1:IF pantalla(dx(I),dy(I))=1 THEN dy(I)=dy(I)+1 2230 IF pantalla(dx(I),dy(I))=1 THEN IF pantalla(dx(I),dy(I)-1)=0 THEN dy(I)=dy(I)-1 ELSE dy(I)=dy(I)+1 2240 PRINT FNtab$(dxx(I),dyy(I),CHR$(32)) 2250 PRINT FNtab$(dx(I),dy(I),CHR$(199)) 2260 dxx(I)=dx(I):dyy(I)=dy(I):dx(I)=dx(I)+1 2270 IF dy(I)=cx+1 AND dx(I)=22 THEN vida=vida-1:FOR ITY=1 TO 15:PRINT FNtab$(0,0,CHR$(7)):PRINT FNtab$(0,27,CLARO$):PRINT FNtab$(0,54,OSCURO$):NEXT ITY:GOSUB 2600 2280 IF dx(I)=22 THEN dx(I)=0:dy(I)=0:disparo1=0 2290 IF per=1 THEN per=0 ELSE per=1 2300 IF vida=0 THEN GOTO 2640 2310 RETURN 2320 ' 2330 ' 2340 ' Marcadores 2350 ' 2360 ' 2370 GOTO 2430 2380 FOR ppy=90 TO 0 STEP -1 2390 PRINT FNtab$(ppx,ppy,os$) 2400 NEXT ppy 2410 RETURN 2420 : 2430 ppx=23:os$=CHR$(202):GOSUB 2380 2440 ppx=25:os$=CHR$(200):GOSUB 2380 2450 ppx=27:os$=CHR$(201):GOSUB 2380 2460 : 2470 FOR alc=1 TO 4 2480 FOR ppy=80 TO alc*3 STEP -1 2490 PRINT FNtab$(26,ppy,alienigena$(alc)+CHR$(32)) 2500 NEXT ppy 2510 NEXT alc 2520 GOTO 2540 2530 PRINT FNtab$(26,kl,CHR$(149)):RETURN 2540 kl=0:GOSUB 2530 2550 kl=20:GOSUB 2530 2560 kl=45:GOSUB 2530 2570 kl=90:GOSUB 2530 2580 PRINT FNtab$(24,1,"RETURN : Disparar."+CHR$(149)+CHR$(27)+CHR$(12)+" : Derecha."+CHR$(149)+CHR$(27)+CHR$(11)+" : Izquierda."+CHR$(149)) 2590 : 2600 PRINT FNtab$(26,22,"Vidas : ");:PRINT USING "###";vida 2610 PRINT FNtab$(26,47,"Puntuacion : ");:PRINT USING"#############";puntos 2620 : 2630 RETURN 2640 ' 2650 ' 2660 ' Juago Finalizado 2670 ' 2680 ' 2690 FOR TIME=1 TO 2800:NEXT TIME 2700 PRINT VIDEON$ 2710 FOR I=90 TO 0 STEP -1 2720 PRINT FNtab$(26,I,CHR$(32)) 2730 NEXT I 2735 frase$=" PUNTUACION FINAL :"+STR$(puntos)+"." 2740 PRINT FNtab$(24,47,frase$+STRING$(43-LEN(frase$),32)) 2750 GOTO 2800 2760 FOR I=88-LEN(frase$) TO 2 STEP -1 2770 PRINT FNtab$(26,I,frase$) 2780 NEXT I 2790 RETURN 2800 frase$="J U E G O T E R M I N A D O ":GOSUB 2760 2810 FOR TIME=1 TO 3000:NEXT TIME 2820 frase$=CHR$(32):GOSUB 2760 2830 frase$="]DESEAS JUGAR OTRA VEZ (S/N)? ":GOSUB 2760 2840 RES$=INKEY$:RES$=UPPER$(RES$) 2850 IF RES$="N" THEN FOR I=1 TO 30:PRINT:NEXT I:PRINT CURON$;VIDEOFF$:NEW 2860 IF RES$="S" THEN GOTO 2880 2870 GOTO 2840 2880 bxx=0:byy=0:puntos=0 2890 disparo=0 2900 PRINT BORRA$;VIDEOFF$:GOTO 1480 ===== Controles ===== → = DERECHA ← = IZQUIERDA RETURN = DISPARO ===== Carga del programa ===== 1.- Introducir el disco CP/M por la cara 2 2.- Escribir BASIC y esperar a que cargue 3.- Retirar el disco CP/M e introducir el disco que contiene el juego Tenemos visita 4.- Teclear run "Marciano" y pulsar la tecla "ENTER" ===== Extras ===== ===== Descarga ===== * {{:otros:Tenemos visita (Basic).zip|Tenemos visita }}(juego en formato dsk, comprimido con zip) ===== Vídeos ===== {{ youtube>Yp3jekE4jx4?large }}