====== LOKAL MEMORY ====== {{:otros:Lokal_Memory_p1.jpg?690|}} ===== Info ===== ^ Author | Jose Miguel Ezquerro | ^ Computer | Amstrad PCW 8256 / 8512 / 9512 | ^ Year | 1990 | ^ Gender | Table | ^ Controls | Keyboard | ^ Languages | Spanish | ^ Status | [[preserved|Preserved]] | ===== Screenshots ===== {{:otros:Lokal_Memory_screenshot01.png?220}} {{:otros:Lokal_Memory_screenshot02.png?220}} {{:otros:Lokal_Memory_screenshot03.png?220}} {{:otros:Lokal_Memory_screenshot04.png?220}} ===== Description ===== This nice game will make us spend very pleasant hours in front of the computer trying to make pairs with the cards. But you have to pay close attention and remember the situation of the cards! The game is designed to challenge our memory at the same time that we exercise it. The game is based on matching pairs of cards. Once we hit a pair the card will be unusable in a light color. ===== Listing ===== * **__Listing - 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 ===== Controls ===== ↑ = UP ↓ = DOWN → = RIGHT ← = LEFT SPACE = SELECT ===== Loading the program ===== We have included in the disc the Mallard Basic extensions from Indescomp and Mallard Basic, with the disc auto-starting to make it easier for you to use the game. 1.- Insert the disc that contains the Lokal Memory game and it will start automatically. 2.- Write "EXTEN" and wait for the Mallard Basic Indescomp extension module to load. 3.- Then type "Basic /M:&HD490" and press the "ENTER" key. 4.- Type run "Lokal" and press the "ENTER" key ===== Extras ===== * Listing of the program in a large circulation magazine of the time {{:otros:Lokal_Memory_programa_01.jpg?210}} {{:otros:Lokal_Memory_programa_02.jpg?210}} {{:otros:Lokal_Memory_programa_03.jpg?210}} ===== Download ===== * {{:otros:Lokal Memory (Basic).zip|Lokal Memory }}(game in dsk format, compressed with zip) ===== Video ===== {{ youtube>cR4cuYV8hLU?large }}