Herramientas de usuario

Herramientas del sitio


es:lokal_memory

¡Esta es una revisión vieja del documento!


LOKAL MEMORY

Ficha

Autor José Miguel Ezquerro
Computadora Amstrad PCW 8256 / 8512 / 9512
Año 1990
Género Mesa
Controles Teclado
Lenguajes Español
Estado Preservado

Capturas

Descripción

Listado

  • Listado - LOKAL.BAS
100 DEF FN CUR$(H,V)=CHR$(27)+"Y"+CHR$(32+V)+CHR$(32+H)
110 DEFINT a-Y
120 ce$=CHR$(27)+"e":PANTA=8
130 VI$=CHR$(27)+"p":VN$=CHR$(27)+"q"
140 CL$=CHR$(27)+"H"+CHR$(27)+"E":REM PRINT CHR$(27)"f"
150 plot=&HD500:circle=&HD503:linea=&HD506:box=&HD509:boxfill=&HD50C:fill=&HD50F
160 draw=&HD512:symbol=&HD515:ssave=&HD518:sload=&HD51B:window=&HD51E:symboldef=&HD521:border=&HD524:clg=&HD527:mode=&HD52A
170 ca$=CHR$(27)+"f"
180 PRINT CA$
190 PRINT CL$
200 pin$="":FOR t=1 TO 4:pin$=pin$+CHR$(85)+CHR$(170):NEXT t
210 pi2$="":FOR t=1 TO 8:pi2$=pi2$+CHR$(0):NEXT t
220 pi3$="":FOR t=1 TO 8:pi3$=pi3$+CHR$(255):NEXT t
230 PIT$(1)="":PIT$(0)=CHR$(7)
240 JOR$(1)="JUGADOR 1":JOR$(2)="JUGADOR 2":NIVEL=1:JOR$=JOR$(2)
250 GOSUB 1570
260 GOSUB 1180
270 GOSUB 460
280 X=1:Y=1:JOR=1
290 PRINT FN CUR$(3,21);VI$;" "JOR$(1)" ";VN$;FN CUR$(26,21);" PARES  0":IF JUGADORES=0 THEN PRINT FN CUR$(48,21);" "JOR$(2)" ";FN CUR$(70,21);" PARES  0"
300 IF JUGADORES=1 THEN PRINT FN CUR$(48,21);"N" DE JUGADAS:";FN CUR$(48,23);"% DE ACIERTOS:";FN CUR$(48,25);"N" DE FALLOS:";FNCUR$(48,27);"% DE FALLOS:"
310 X1=X*7+6:Y1=Y*5-1:PRINT FN CUR$(X1,Y1);"^":X5=X1:Y5=Y1
320 IF JOR$(JOR)="ORDENADOR" THEN GOSUB 1020:GOSUB 600:GOTO 320
330 IF JUGADORES=1 AND TIR<>0 AND TIRA=0 THEN ZTAC=PARES(1)*100/TIR:NFA=TIR-PARES(1):ZTAF=NFA*100/TIR
340 IF JUGADORES=1 AND TIRA=0 THEN PRINT FN CUR$(65,21);USING"###";TIR:PRINT FN CUR$(65,23);USING"###.##";ZTAC:PRINT FN CUR$(65,25);USING"###";NFA:PRINT FN CUR$(65,27);USING"###.##";ZTAF
350 WHILE INKEY$<>"":WEND:KKK=0:O$=INPUT$(1):IF CHR$(6)=O$ THEN KKK=1:X=X+1:IF x=11 THEN x=10:GOTO 350
360 IF O$=CHR$(1) THEN x=x-1:KKK=1:IF X=0 THEN X=1:GOTO 350
370 IF O$=CHR$(31) THEN Y=Y-1:KKK=1:IF Y=0 THEN Y=1:GOTO 350
380 IF O$=CHR$(30) THEN Y=Y+1:KKK=1:IF Y=5 THEN Y=4:GOTO 350
390 IF O$=" " THEN GOSUB 600
400 IF O$=CHR$(8) THEN PSOR(1,1)=3:PARES(1)=1:GOTO 930
410 IF O$=CHR$(21) THEN OUT 248,PANTA:IF PANTA=7 THEN PANTA=8 ELSE PANTA=7
420 IF KKK=0 THEN 320
430 X1=X*7+6:Y1=Y*5-1:PRINT FN CUR$(X1,Y1);"^"
440 PRINT FN CUR$(X5,Y5);" ":X5=X1:Y5=Y1
450 GOTO 320
460 REM ----------------------------------------------------
470 PRINT CL$
480 FOR t=1 TO 10:FOR j=1 TO 4
490 x=t*56+28:y=j*80-80:x1=x+46:y1=y+60:CALL boxfill(x,y,x1,y1,pin$)
500 NEXT j,t
510 FOR T=1 TO 10:FOR J=1 TO 4
520 s=INT(RND(1)*10)+1:s1=INT(RND(1)*4)+1
530 IF PS(s,s1)<>0 THEN 520
540 PS(S,S1)=T
550 NEXT J,T
560 X=5:Y=325:X1=355:Y1=478:CALL boxfill(X,Y,X1,Y1,PIN$):X=360:X1=716:CALL boxfill(X,Y,X1,Y1,PIN$)
570 X=15:Y=330:X1=340:Y1=359:CALL boxfill(X,Y,X1,Y1,PI2$):X=370:X1=706:CALL boxfill(X,Y,X1,Y1)
580 IF JUGADORES=1 THEN FOR G=1 TO 3:Y=330+32*G:Y1=Y+29:CALL boxfill(X,Y,X1,Y1,PI2$):NEXT G
590 RETURN
600 REM ----------------------------------------------------
610 IF SON=0 THEN FOR T=1 TO 5:OUT 248,11:OUT 248,12:NEXT T
620 IF PS(X,Y)=11 THEN PRINT PIT$(SON);:GOTO 710
630 IF X=HO AND Y=VE THEN PRINT PIT$(SON);:GOTO 710
640 TIRA=TIRA+1
650 IF JOR$(2)="ORDENADOR" THEN POI=INT(RND(1)*10)+1:IF POI<=NIVEL THEN PSOR(X,Y)=PS(X,Y)
660 xX=X*56+28:yY=Y*80-80:xX1=xX+46:yY1=yY+60:CALL boxfill(xX,yY,xX1,yY1,PI2$)
670 H=X1-1:V=Y1-3:CALL symbol(H,V,DIB$(PS(X,Y))):V2=Y1-2:CALL symbol(H,V2,DIB2$(PS(X,Y)))
680 IF PS(X,Y)=PS(HO,VE) THEN TIRA=0:TIR=TIR+1:GOSUB 760
690 IF TIRA=2 THEN TIRA=0:TIR=TIR+1:O$=INPUT$(1):CALL BOXFILL(XX,YY,XX1,YY1,PIN$):CALL BOXFILL(X0,Y0,X01,Y01,PIN$):HO=0:VE=0:GOTO 720
700 X0=XX:Y0=YY:X01=XX1:Y01=YY1:HO=X:VE=Y
710 RETURN
720 JR=JOR:IF JOR=1 THEN JOR=2 ELSE JOR=1
730 IF JUGADORES=1 THEN JOR=1
740 PRINT FN cur$(JOR^5.52+2,21);VI$;" "JOR$(JOR)" ";VN$:IF JUGADORES=0 THEN PRINT FN CUR$(JR^5.52+2,21);" "JOR$(JR)" "
750 GOTO 710
760 REM -----------------------------------------------------
770 IF SON=0 THEN FOR TJ=10 TO 1 STEP -1:FOR JT=1 TO JT:OUT 248,11:OUT 248,12:NEXT JT:FOR JJJK=1 TO 100:NEXT JJJK,TJ
780 PARES(JOR)=PARES(JOR)+1
790 PRINT FN CUR$(JOR^5.5+25,21);" PARES ";PARES(JOR)
800 IF JOR=1 THEN Q1=0 ELSE Q1=360
810 IF REV(JOR)=0 THEN REV(JOR)=2 ELSE REV(JOR)=0
820 SA=INT(PARES(JOR)/11):Q1=Q1+(PARES(JOR)-SA*10)*32-17:W1=371+SA*48+REV(JOR):Q2=Q1+40:W2=W1+52:CALL boxfill(Q1,W1,Q2,W2,PI2$):Q3=Q1/8+1:W3=24+SA*3:CALL SYMBOL(Q3,W3,DIB$(PS(X,Y))):W3=25+SA*3
830 CALL SYMBOL(Q3,W3,DIB2$(PS(X,Y)))
840 CALL BOXFILL(XX,YY,XX1,YY1,PI3$):CALL BOXFILL(X0,Y0,X01,Y01,PI3$):PS(X,Y)=11:PS(HO,VE)=11:PSOR(X,Y)=11:PSOR(HO,VE)=11
850 IF PARES(1)+PARES(2)=20 THEN 870
860 HO=0:VE=0:RETURN
870 IF PARES(1)>PARES(2) THEN GANADOR=1 ELSE IF PARES(1)=PARES(2) THEN GANADOR=0 ELSE GANADOR=2
880 PI$(1)=PIN$:PI$(2)=PI2$:PI$(3)=PI3$:C=0:FOR T=1 TO 5:C=C+1:IF C=4 THEN C=1
890 X=180+T*10:X1=540-T*10:Y=45+T*10:Y1=195-T*10:CALL boxfill(X,Y,X1,Y1,PI$(C)):NEXT T
900 IF JUGADORES=1 THEN 940
910 IF GANADOR=0 THEN PRINT FN CUR$(40,7);"  EMPATE  ":GOTO 930
920 A$="GANADOR: "+JOR$(GANADOR):B=LEN(A$):PRINT FN CUR$(45-B/2,7);A$
930 O$=INPUT$(1):ERASE PS,PARES,PSOR:TIR=0:NFA=0:ZTAC=0:ZTAF=0:TIRA=0:HO=0:VE=0:GOTO 260
940 ZTAC=PARES(1)*100/TIR:NFA=TIR-PARES(1):ZTAF=NFA*100/TIR
950 PRINT FN CUR$(65,21);USING"###";TIR:PRINT FN CUR$(65,23);USING"###.##";ZTAC:PRINT FN cur$(65,25);USING"###";NFA:PRINT FN CUR$(65,27);USING"###.##";ZTAF
960 IF ZTAC<20 THEN PRINT FN cur$(32,7);"BAJA, QUE ESTAS EN LAS NUBES":GOTO 930
970 IF ZTAC<40 THEN PRINT FN cur$(32,7);"ESTAS UN POCO DESPISTADILLO":GOTO 930
980 IF ZTAC<60 THEN PRINT FN cur$(33,7);"NO ESTA MAL, NO ESTA MAL":GOTO 930
990 IF ZTAC<80 THEN PRINT FN cur$(37,7);"MUY BIEN COLEGA":GOTO 930
1000 IF ZTAC<=100 THEN PRINT FN CUR$(29,7);"TE HAS PASADO, CEREBRO ANDANTE":GOTO 930
1010 END
1020 REM -----------------------------------------------------
1030 PRINT FN cur$(X1,Y1);" "
1040 VEZ=VEZ+1:IF VEZ=2 THEN 1110
1050 FOR M=1 TO 10:FOR N=1 TO 4:IF PSOR(M,N)<>0 AND PSOR(M,N)<>11 THEN DOS(PSOR(M,N))=DOS(PSOR(N,M))+1
1060 NEXT N,M
1070 FOR T=1 TO 10:IF DOS(T)>=2 THEN ULT=T:GOTO 1110 ELSE NEXT T
1080 X=INT(RND(1)*10)+1:Y=INT(RND(1)*4)+1:SORTEO=VEZ:IF PSOR(X,Y)<>0 OR (X=X9 AND Y=Y9) THEN 1080
1090 ULT=PS(X,Y)
1100 GOTO 1140
1110 FOR M=1 TO 10:FOR N=1 TO 4:IF PSOR(M,N)=ULT AND (M<>X9 OR N<>Y9) THEN PSOR=PSOR+1:X=M:Y=N:ULT=PS(X,Y):GOTO 1140
1120 NEXT N,M
1130 GOTO 1080
1140 X9=X:Y9=Y:IF VEZ=2 THEN VEZ=0:X9=0:Y9=0:ERASE DOS:ULT=0
1150 X1=X*7+6:Y1=Y*5-1:X5=X1:Y5=Y1
1160 PRINT FN cur$(X1,Y1);"^"
1170 RETURN
1180 REM ---------------------------------------------------------------------
1190 JUGADORES=0:GG=-4:SO$(0)="ON ":SO$(1)="OFF":K=1:PRINT CL$
1200 NIV$(1)="DESPISTADO  ":NIV$(3)="REGULAR     ":NIV$(5)="BUENO       ":NIV$(7)="EXCELENTE   ":NIV$(9)="SUPER DOTADO"
1210 OP$(1)="DOS JUGADORES":OP$(2)="JUGADOR-ORDENADOR":OP$(3)="UN JUGADOR":OP$(6)="CAMBIAR NOMBRES"
1220 X=250:Y=80:X1=500:Y1=320:CALL boxfill(X,Y,X1,Y1,PIN$)
1230 OP$(5)="NIVEL   "+NIV$(NIVEL):OP$(4)="SONIDO   "+SO$(SON):JK=35:FOR T=1 TO 6:IF K=T THEN PRINT VI$
1240 PRINT FN CUR$(JK,5+T*2);" "OP$(T)""VN$:NEXT T
1250 WHILE INKEY$<>"":WEND
1260 A$="LOCAL MEMORY   PROGRAMADO POR:  Jose Miguel Ezquerro"
1270 J1=1:J3=2:JJ=25:J2=26:K2=0:O$="":WHILE O$="":O$=INKEY$:KK=INT(RND(1)*10)+1
1280 GG=GG+1:IF INT(GG/4)<>GG/4 THEN 1390
1290 CALL symbol(GG,JJ,DIB$(KK)):CALL SYMBOL(GG,J2,DIB2$(KK))
1300 CALL SYMBOL(GG,J1,DIB$(KK)):CALL SYMBOL(GG,J3,DIB2$(KK))
1310 IF GG=84 THEN GG=-4
1320 C2=C2+1:IF C2<28 THEN TEX$=SPACE$(27-C2)+LEFT$(IZENA$,C2):GOTO 1350
1330 IF C2<77 THEN TEX$=MID$(IZENA$,C2-26,27)
1340 IF C2>58 AND C2<90 THEN C1=C1+1:TEX2$=SPACE$(31-C1)+LEFT$(IZENA$,C1):IF C2=89 THEN C2=0
1350 IF C1>30 AND C2<>0 THEN C1=C1+1:TEX2$=MID$(IZENA$,C1-30,31)
1360 IF C1>49 THEN TEX2$=TEX2$+" "
1370 IF C1=80 THEN C1=0
1380 PRINT FN cur$(63,12);TEX$" ":PRINT FN cur$(0,12);TEX2$
1390 WEND
1400 IF O$=CHR$(30) THEN K2=1:K=K+1:IF K=7 THEN K=1
1410 IF O$=CHR$(31) THEN K2=1:K=K-1:IF K=0 THEN K=6
1420 IF O$=CHR$(13) THEN ON K GOTO 1460,1480,1490,1500,1520,1540
1430 IF O$=CHR$(21) THEN OUT 248,PANTA:IF PANTA=7 THEN PANTA=8 ELSE PANTA=7
1440 IF K2=1 THEN 1230
1450 GOTO 1270
1460 IF JOR$(2)="ORDENADOR" THEN JOR$(2)=JOR$
1470 RETURN
1480 JOR$(2)="ORDENADOR":RETURN
1490 JUGADORES=1:RETURN
1500 IF SON=0 THEN SON=1 ELSE SON=0
1510 PRINT FN CUR$(JK,13);VI$;" SONIDO   "SO$(SON);VN$:GOTO 1270
1520 NIVEL=NIVEL+2:IF NIVEL=11 THEN NIVEL=1
1530 PRINT FN cur$(JK,15);VI$;" NIVEL   ";NIV$(NIVEL);VN$:GOTO 1270
1540 PRINT FN cur$(32,21);:INPUT "NOMBRE - JUGADOR 1 ";N$:JOR$(1)=LEFT$(N$,20):PRINT FN CUR$(32,21);SPACE$(50)
1550 PRINT FN CUR$(32,21);:INPUT "NOMBRE - JUGADOR 2 ";N$:JOR$(2)=LEFT$(N$,20):JOR$=JOR$(2)
1560 PRINT FN cur$(32,21);SPACE$(50):GOTO 1270
1570 ' ---------------------------------------------------------
1580 JK=24:TT=10
1590 FOR j=1 TO TT:FOR t=1 TO 24:READ d$:dib$(j)=dib$(j)+CHR$(VAL(d$)):NEXT t
1600 IF J<=TT THEN FOR t=1 TO JK:READ d$:dib2$(j)=dib2$(j)+CHR$(VAL(d$)):NEXT t
1610 NEXT J
1620 FOR TG=1 TO 49:READ A$:IZENA$=IZENA$+CHR$(VAL(A$)):NEXT TG
1630 DATA 0,15,63,127,255,255,255,255,0,129,231,255,255,255,255,255,0,240,28,206,231,199,143,255,127,63,31,7,1,0,0,0,255,255,255,255,255,126,24,0,254,252,248,224,128,0,0,0
1640 DATA 0,0,0,3,15,26,53,58,0,3,127,238,88,240,224,224,0,240,128,0,0,0,0,0,53,58,29,15,3,0,0,0,224,224,240,248,254,127,3,0,0,0,0,0,0,128,240,0
1650 DATA 0,0,0,1,1,28,127,255,0,60,199,159,207,255,255,255,0,0,0,128,128,56,254,255,255,127,28,0,0,0,1,0,255,255,126,126,126,255,255,0,255,254,56,0,0,0,128,0
1660 DATA 0,0,0,0,0,0,3,31,0,24,24,60,126,255,255,231,0,0,0,0,0,0,192,248,255,31,3,0,0,0,0,0,129,231,255,255,126,60,24,24,255,248,192,0,0,0,0,0
1670 DATA 0,0,0,0,0,1,1,3,7,12,24,60,255,255,255,255,0,0,0,0,0,128,128,192,15,28,56,56,56,30,7,0,63,63,255,255,255,127,255,255,240,248,252,252,252,248,224,0
1680 DATA 0,0,1,7,30,120,255,0,24,126,231,129,24,126,255,171,0,0,128,224,120,30,255,0,0,0,0,0,0,0,0,0,213,171,213,171,213,171,213,255,0,0,0,0,0,0,0,0
1690 DATA 0,2,1,96,16,3,239,15,8,8,9,0,126,255,255,255,0,128,24,32,1,198,240,240,15,15,99,128,24,97,2,0,255,255,255,126,0,17,16,16,247,240,198,1,16,12,128,0
1700 DATA 0,127,96,98,97,48,24,6,0,255,0,72,36,128,0,0,0,254,6,6,6,12,24,96,1,0,0,0,0,0,15,63,219,102,102,102,102,195,129,255,128,0,0,0,0,0,240,252
1710 DATA 63,24,12,6,3,1,1,1,255,0,0,0,42,149,203,231,252,24,48,96,192,128,128,128,1,1,1,3,6,12,24,63,231,211,137,16,8,20,170,255,128,128,128,192,96,48,152,252
1720 DATA 0,4,34,151,95,188,124,255,136,73,255,255,255,60,60,255,128,16,34,228,250,61,62,255,255,255,255,124,62,31,7,0,231,231,231,255,60,129,255,255,255,255,255,62,124,248,224,0
1730 DATA 76,79,75,65,76,32,77,69,77,79,82,89,32,32,80,114,111,103,114,97,109,97,100,111,32,112,111,114,58,32,74,111,115,101,32,77,105,103,117,101,108,32,69,122,107,101,114,114,111
1740 RETURN

Controles

      ↑ = ARRIBA
      ↓ = ABAJO
      → = DERECHA
      ← = IZQUIERDA
ESPACIO = SELECCIONAR

Carga del programa

Hemos incluído en el disco las extensiones de Mallard Basic de Indescomp y Mallard Basic, con autoarranque del disco para que os sea más fácil la utilización del juego.

1.- Introducir el disco que contiene el juego Lokal Memory y este arrancará automáticamente.
2.- Escribir "EXTEN" y esperar a que cargue el módulo de ampliación de Mallard Basic Indescomp.
3.- A continuación teclear "Basic /M:&HD490" y pulsar la tecla "ENTER".
4.- Teclear run "Lokal" y pulsar la tecla "ENTER"

Extras

  • Listado del programa en una revista de gran tirada de la época

lokal_memory_programa_01.jpg lokal_memory_programa_02.jpg lokal_memory_programa_03.jpg

Descarga

Enlaces

es/lokal_memory.1480945203.txt.gz · Última modificación: 2016/12/05 16:40 por jevicac