1989/01/01
19. zenbakia
eu es fr en cat gl
Aparecerá un contenido traducido automáticamente. ¿Deseas continuar?
Un contenu traduit automatiquement apparaîtra. Voulez-vous continuer?
An automatically translated content item will be displayed. Do you want to continue?
Apareixerà un contingut traduït automàticament. Vols continuar?
Aparecerá un contido traducido automaticamente. ¿Desexas continuar?
Memori jokoa (I)
Memoria lantzeko joko ugari dago, baina hemen aukeratutako hau izan daiteke ezagunenetako bat. Jokoa normalean kartoizko edo zurezko pieza batzuez osatzen da. Pieza bakoitzak irudi bat darama eta irudi bakoitza bi piezatan egoten da. Zertan datza jokoak?
Hasieran pieza guztiak behera begira jarri, hots, irudiak ezkutuan direla, eta nahastu egiten dira. Jokaldi bakoitzean bi pieza altxatu behar dira eta bi pieza horiek irudi berdinekoak izan daitezen da lortu behar dena. Horrela baldin bada, hots, altxatako piezek irudi berdina baldin badute, jokatzen ari den jokalariak jasoko ditu eta berriro saiatuko da harik eta huts egiten duen arte. Aukeratutako piezek irudi desberdina baldin badute, irudiak eta posizioak gogoan hartzeko denbora pixka bat eman ondoren berriro buelta eman eta lehengo posizioan utziko dira. Azkenean pieza gehien lortzen duenak irabazten du. Hauxe izan da ondoko programarekin simulatu nahi izan dugun jokoa, baina diferentzia nagusi batekin: jokalari batentzat dago pentsatua, zeren pertsona bakoitzak asmatutako irudiak ez bait dira bereizten. Ondokoak dira eman beharreko urratsak: - Pantailan laukiz osatutako matrize edo taula bat agertuko zaizu. Laukiak binaka aukeratzen joan beharko duzu, hau da, lehenengo bat eta gero bestea, horretarako kurtsorea higitzeko teklak (Æ, ¨, , Ø) erabili beharko dituzularik. Taulatik kanpo ateratzen saiatuz gero, soinu bat entzungo duzu eta kurtsorea zegoen lekuan geratuko da.
- Aukeratutako laukira iritsitakoan, RETURN sakatu eta berehala ikusiko duzu lauki horrek ezkutatzen zuen irudia.
- Errepikatu prozesua beste lauki batekin.
- Bi lauki aukeratu ondoren, ondoko bi gauza hauek gerta daitezke:
- Bi laukiek irudi berdina baldin badute, irudiak bistan geratuko dira eta aurkitutakoen kontagailuari bat gehituko zaio.
- Azaldutako irudiak desberdinak badira, pantailan unetxo batez egon ondoren berriro ezkutatu egingo dira. Beraz, irudiak zein posiziotan zeuden kontutan hartzen saiatu beste txanda baterako.
- Jokoa bi arrazoirengatik amaitu daiteke:
- Bikote guztiak (24) aurkitu direlako.
- 100 saio egin direlako, nahiz eta batzuk aurkitu gabe geratu. Kasu honetan, J tekla sakatuz taula osoa ikusteko aukera emango zaizu.
10 REM MEMORI JOKOA 20 DIM IKUR(24),TAU$(6,8,2),IK(2,3) 30 FOR I=1 TO 6:FOR J=1 TO 8:FOR K=1 TO 2:TAU$(I,J,K)=””:NEXT K:NEXT J:NEXT I 40 CLS:KEY OFF:SCREEN 1:LOCATE 1,15:PRINT “MEMORI JOKOA”: LOCATE 2,15:PRINT “––––––––––––” 50 RANDOMIZE TIMER:RESTORE 710 60 IKUR$=””:FOR I=1 TO 24:READ IKUR(I):IKUR$=IKUR$+CHR$(IKUR(I)):NEXT I 70 FOR I=1 TO 24 80 FOR J=1 TO 2 90 LER=INT(RND*6)+1:ZUT=INT(RND*8)+1 100 WHILE TAU$(LER,ZUT,1) ””:LER=INT(RND*6)+1:ZUT=INT(RND*8)+1:WEND 110 TAU$(LER,ZUT,1)=CHR$(IKUR(I)) 120 NEXT J 130 NEXT I 140 REM TAULA IRUDIKATU 150 LINE (8,24)–(200,168),2,B:PAINT (9,25),1,2 160 FOR I=1 TO 5:LINE (8,24+I*24)–(200,24+I*24),2:NEXT I 170 FOR I=1 TO 7:LINE (8+I*24,24)–(8+I*24,168),2:NEXT I 180 LOCATE 23,2:PRINT “Kurtsorea mugitzeko: “;CHR$(26);” “;CHR$(27);” “;CHR$(24);” “;CHR$(25); 190 LOCATE 25,2:PRINT “Koadroa aukeratutakoan RETURN sakatu”; 200 REM JOKOAREN HASIERA 210 SAIOAK=0:LOCATE 5,27:PRINT “Aurkituak =”;24–LEN(IKUR$);:LOCATE 8,27: PRINT “Saioak =”;SAIOAK;:LOCATE 5,3:PRINT “–”; 220 WHILE IKUR$ ”” AND SAIOAK 100 230 I=0:TE$=” “:ASMAT$=”E” 240 WHILE I 2 250 TE$=””:WHILE TE$=””:TE$=INKEY$:WEND 260 REM AUKERA 270 IF ASC(TE$)=13 THEN 440 280 IF LEN(TE$) 2 THEN 430 290 IF TAU$((CSRLIN–2)/3,POS(0)/3,2)=”” THEN PRINT CHR$(29);” “;: PAINT ((POS(0)–2)*8+2,CSRLIN*8–2),1,2 ELSE LOCATE CSRLIN,POS(0)–1: PRINT TAU$((CSRLIN–2)/3,POS(0)/3,1); 300 IF RIGHT$(TE$,1) ”M” THEN 330 310 IF POS(0) 24 THEN FOR J=1 TO 2:PRINT CHR$(28);:NEXT J:PRINT “–”; ELSE BEEP:LOCATE CSRLIN,POS(0)–1:PRINT “–”; 320 GOTO 420 330 IF RIGHT$(TE$,1) ”K” THEN 360 340 IF POS(0) 4 THEN FOR J=1 TO 4:PRINT CHR$(29);:NEXT J:PRINT “–”; ELSE BEEP:LOCATE CSRLIN,POS(0)–1:PRINT “–”; 350 GOTO 420 360 IF RIGHT$(TE$,1) ”H” THEN 390 370 IF CSRLIN 5 THEN PRINT CHR$(29);:FOR J=1 TO 3:PRINT CHR$(30);: NEXT J:PRINT “–”; ELSE BEEP:LOCATE CSRLIN,POS(0)–1:PRINT “–”; 380 GOTO 420 390 IF RIGHT$(TE$,1) ”P” THEN 410 400 IF CSRLIN 20 THEN PRINT CHR$(29);:FOR J=1 TO 3:PRINT CHR$(31); NEXT J:PRINT “–”; ELSE BEEP:LOCATE CSRLIN,POS(0)–1:PRINT “–”; 410 LOCATE CSRLIN,POS(0)–1:PRINT “–”; 420 REM AMAUKERA 430 GOTO 250 440 X=POS(0):Y=CSRLIN:PAINT (X*8–4,Y*8),0,2: PRINT CHR$(29); TAU$((CSRLIN–2)/3,POS(0)/3,1); 450 I=I+1:IK(I,1)=ASC(TAU$((CSRLIN–2)/3,POS(0)/3,1)):IK(I,2)=CSRLIN: IK(I,3)=POS(0)–1:IF TAU$((CSRLIN–2)/3,POS(0)/3,2)=”” THEN TAU$((CSRLIN–2)/3,POS(0)/3,2)=”0" 460 IF I=1 THEN 500 470 IF (IK(1,1) IK(2,1)) OR (IK(1,2)=IK(2,2) AND IK(1,3)=IK(2,3)) THEN ASMAT$=”F”:GOTO 490 480 ASMAT$=”E”:SOUND 800,3:TAU$((IK(1,2)–2)/3,IK(1,3)/3,2)=”1": TAU$((IK(2,2)–2)/3,IK(2,3)/ 3,2)=”1":IND=INSTR(1,IKUR$,CHR$(IK(1,1))): IF IND 0 THEN KUR$=LEFT$(IKUR$,IND–1)+MID$(IKUR$,IND+1,LEN(IKUR$)–IND) 490 SAIOAK=SAIOAK+1 500 IF ASMAT$=”E” THEN GOTO 540 510 SOUND 300,3:FOR J=1 TO 2500:NEXT J 520 IF TAU$((IK(1,2)–2)/3,IK(1,3)/3,2) ”1" THEN LOCATE IK(1,2),IK(1,3):PRINT “ “;CHR$(29);: PAINT (IK(1,3)*8–4,IK(1,2)*8–4),1,2: TAU$((IK(1,2)–2)/3,IK(1,3)/3,2)=”” 530 IF TAU$((IK(2,2)–2)/3,IK(2,3)/3,2) ”1" THEN LOCATE IK(2,2),IK(2,3): PRINT “ “;CHR$(29);: PAINT (IK(2,3)*8–4,IK(2,2)*8–4),1,2: PRINT “–”;:TAU$((IK(2,2)–2)/3,IK(2,3)/3,2)=”” 540 IF I=2 THEN LOCATE 5,27:PRINT “Aurkituak =”;STR$(24–LEN(IKUR$)):LOCATE 8,27: PRINT “Saioak =”;SAIOAK; ELSE 560 550 LOCATE IK(2,2),IK(2,3)+1 560 WEND 570 WEND 580 REM EMAITZAK 590 LOCATE 23,2:PRINT SPC(38):LOCATE 25,2:PRINT SPC(38); 600 IF IKUR$=”” THEN LOCATE 23,5:PRINT “Oso ongi!!! aurkitu dituzu.”:GOTO 700 610 LOCATE 23,1:PRINT “Ez duzu lortu. Guztiak ikusteko J sakatu” 620 TE$=” “:WHILE TE$ ”J” AND TE$ ”j”:TE$=INKEY$:WEND 630 FOR I=1 TO 8 640 FOR J=1 TO 6 650 L=(J–1)*3+5:Z=(I–1)*3+3 660 IF TAU$(J,I,2)=”” THEN PAINT (Z*8,L*8),0,2 670 LOCATE L,Z:COLOR ,2:PRINT TAU$(J,I,1) 680 NEXT J 690 NEXT I 700 LOCATE 25,1:END 710 DATA 1,2,3,4,5,6,14,15,20,21,35,36,38,64,156,157,224,225,226,227,228,229,230,231 Oharrak: - Laukiak aukeratzerakoan, kontuan izan laukiak desberdinak izan behar dutela, hau da, lauki berean RETURN bitan sakatuz gero ez dela ontzat emango.
- Irudiak ezkutatu aurretik pausaldi luzeagoa egitea nahi izanez gero, nahikoa izango duzu 510 lerroan FOR sententzian 2500 zenbakiaren ordez beste handiago bat jartzea.
- Agertzen diren irudiak edo ikurrak aldatzeko berriz, 630 lerroan dauden zenbakiak (ASCII kodeak) alda ditzakezu. Gogoratu ASCII kodeek 1etik 256ra bitartekoak izan behar dutela.
- Programa honetan 100 saio eskaintzen zaizkizu. Saio gehiago edo gutxiago nahi izanez gero, 220 lerroan aldatu.
Programaren zatiak: - Taula osatu (50-130)
- Pantaila irudikatu (140-190)
- Teklen mugimenduen kontrola (260-420)
- Aukeratutako laukian zegoen irudia erakutsi eta informazioa gorde (440-460)
- Aukeratutako bi laukietako irudiak konparatu eta kasu bakoitzean dagozkion ekintzak burutu (470-550)
- Jokoa amaitutakoan emaitzak eskaini (580-690)
|
Proiektu honen laguntzaile izan nahi baduzu,
harpidetu. Urtean 28 € baino ez.