Untzi-jokua
1987/08/01 Arrojeria, Eustakio - Elhuyar Zientziaren Komunikazioa | Lizaso, Pili - Informatika SailaElhuyar Fundazioa Iturria: Elhuyar aldizkaria
Jokuak izan ohi dira ordenadoretan lehenengo edo gustoen erabiltzen ditu- gunak. Hemen planteiatzen dugun programa, "untzi-jokua" izenez ezagutzen dena da.
Jolaslekua 12x12koa izan beharrean 10x10eko izatea eta erabiltzaileak 50 tiro egiteko muga izateaz salbu, arauak normalean onartzen direnak dira.
Makinak adieraziko dio erabiltzaileari asmatu ala huts egin duen eta irabazletzat edo galtzailetzat joko du, kasuan kasu.
Oharra: Joku hau, PC eta bateragarrietan erabiltzeko programatuta dago.
10 REM UNTZI-JOKUA
20 SCREEN 1 : KEY OFF : CLS
30 DIM A(12,12) : DIM UNTZI$(10,4)
40 REM JOKUAREN ARAUAK
50 LOCATE 4,8 : PRINT "UNTZI-JOKUra jolastera goaz"
60 LOCATE 7,4 : PRINT "Jokuaren arauak oso errazak dira:"
70 GOSUB 1600 : REM JARRAITZEKO EGIKARITU
80 LOCATE 11,4: PRINT "- Zuk untziaren koordenatuak eman"
90 LOCATE 12,6 : PRINT "behar dituzu (letra,zenbakia)."
100 LOCATE 14,4: PRINT "- Untzia ukitzen baduzu, izartxoa"
110 LOCATE 15,6: PRINT "erronbo bihurtuko da."
120 LOCATE 17,4: PRINT "- Huts egiten baduzu,izartxoa desa-"
130 LOCATE 18,6 : PRINT "gertu egingo da."
140 GOSUB 1600 : REM JARRAITZEKO EGIKARITU
150 CLS
160 LOCATE 5,5 : PRINT "Ikus dezagun zein den aurkakoaren"
170 LOCATE 7,5 : PRINT "flota:"
180 LOCATE 9,5 : PRINT "- Hegazkinuntzi bat (4 izartxo)"
190 LOCATE 11,5 : PRINT "- Bi korazatu (3 izartxo)"
200 LOCATE 13,5 : PRINT "- Hiru suntsitzaile (2 izartxo)"
210 LOCATE 15,5 : PRINT "- Lau fragata (izartxo bana)"
220 GOSUB 1600 : REM JARRAITZEKO EGIKARITU
230 CLS
240 LOCATE 10,6 : PRINT "50 tiro egin ahal izango duzu."
250 LOCATE 15,14 : PRINT "ZORTE ON!!!"
260 GOSUB 1600 : REM JARRAITZEKO EGIKARITU
270 CLS
280 REM AMAIA JOKUAREN ARAUAK
290 REM UNTZIAREN POSIZIOA KARGATZEKO BIGIZTA
300 ERREKOP = 1 : LUZERA = 4 : UN = 1
310 FOR I = 1 TO 12 : A(1,I)=1: A(I,1) = 1 : NEXT I
320 FOR I = 1 TO 12 : A(12,I)=1: A(I,12) = 1 : NEXT I
330 FOR I = 2 TO 11
340 FOR J = 2 TO 11
350 A(I,J)=0
360 NEXT J
370 NEXT I
380 FOR I = 1 TO 10
390 FOR J = 1 TO 4
400 UNTZI$(I,J) = ""
410 NEXT J
420 NEXT I
430 FOR I = 1 TO 4
440 FOR N = 1 TO 4 : NORABIDEA(N)=N : NEXT N : N = 4
450 J = 1
460 REM BITARTEAN
470 IF J ERREKOP THEN 800
480 RANDOMIZE TIMER
490 X = INT (RND * 10) + 65
500 Y = INT (RND * 10)
510 NN= INT (RND * N) + 1
520 NOR = NORABIDEA(NN)
530 IF NOR = 1 THEN INKX = 1 : INKY = 0
540 IF NOR = 2 THEN INKX = -1 : INKY = 0
550 IF NOR = 3 THEN INKX = 0 : INKY = -1
560 IF NOR = 4 THEN INKX = 0 : INKY = 1
570 L = 1
580 REM BITARTEAN
590 IF A(X-63,Y+1) = 1 OR N = 0 THEN 780
600 REM BITARTEAN
610 IF (L =LUZERA) OR (A(X-63,Y+1)=1) THEN 650
620 L = L + 1
630 X = X + INKX : Y = Y + INKY
640 GOTO 600
650 REM AMBITARTEAN
660 IF A(X-63,Y+1) = 1 THEN 730
670 FOR LL = 1 TO LUZERA
680 A(X-63,Y+1)=1:UNTZI$(UN,LL)=CHR$(X)+CHR$(Y+47)
690 X = X - INKX : Y = Y - INKY
700 NEXT LL
710 UN=UN+1 : J=J+1
720 GOTO 780
730 FOR II=NN TO N:NORABIDEA(II)=NORABIDEA(II+1):NEXT II
740 N = N - 1
750 NN = INT(RND * N) + 1
760 NOR = NORABIDEA (NN)
770 GOTO 580
780 REM AMBITARTEAN
790 GOTO 460
800 REM AMBITARTEAN
810 ERREKOP = ERREKOP + 1 : LUZERA = LUZERA - 1
820 NEXT I
830 REM AMAIA UNTZIEN POSIZIOA KARGATZEKO BIGIZTA
840 REM KONBATE-LEKUA MARRAZTEKO BIGIZTA
850 FOR I = 1 TO 10
860 FOR J = 1 TO 10
870 LOCATE I+6,J+15 : PRINT "*"
880 NEXT J
890 NEXT I
900 LOCATE 5,16: PRINT "ABCDEFGHIJ"
910 FOR I=7 TO 16 : LOCATE I,13 : PRINT I-7 : NEXT I
920 REM AMAIA KONBATE-LEKUA MARRAZTEKO BIGIZTA
930 REM JO DUZUN ALA EZ KALKULATZEKO BIGIZTA
940 UKI=0 : URA=0 : TIROAK=0
950 REM BITARTEAN
960 IF UKI=20 OR TIROAK = 50 THEN 1450
970 LOCATE 19,5: PRINT "Untziaren koordenatuak?"
980 LOCATE 20,5: INPUT "Letra :",X$
990 LOCATE 20,5: PRINT SPC(15)
1000 IF (ASC(X$) 64) AND (ASC(X$) 75) THEN 1050
1010 LOCATE 22,5 : PRINT "Ikus letrak (majuskulak)"
1020 N = 500 : GOSUB 1650 : REM PAUSA EGIKARITU
1030 LOCATE 22,5 : PRINT SPC(20)
1040 GOTO 980
1050 LOCATE 20,5: INPUT "Zenbakia :",Y$
1060 LOCATE 20,5: PRINT SPC(15)
1070 IF (ASC(Y$) 47) AND (ASC(Y$) 58) THEN 1120
1080 LOCATE 22,5 : PRINT "Ikus zenbakiak"
1090 N = 500 : GOSUB 1650 : REM PAUSA EGIKARITU
1100 LOCATE 22,5 : PRINT SPC(20)
1110 GOTO 1050
1120 TIROAK = TIROAK + 1
1130 ERAN$ = X$ + Y$
1140 AURKITUA$ = "FALTSUA"
1150 ERREP$ = "FALTSUA"
1160 I = 1
1170 REM BITARTEAN
1180 IF I 10 OR AURKITUA$ = "EGIAZKOA" THEN 1260
1190 FOR J = 1 TO 4
1200 IF MID$(UNTZI$(I,J),1,2) ERAN$ THEN 1230
1210 AURKITUA$ = "EGIAZKOA"
1220 IF LEN(UNTZI$(I,J)) 3
THEN UNTZI$(I,J)=UNTZI$(I,J)+"0":UKI=UKI+1
ELSE ERREP$ = "EGIAZKOA"
1230 NEXT J
1240 I = I + 1
1250 GOTO 1170
1260 REM AMBITARTEAN
1270 I = I - 1
1280 IF AURKITUA$ = "FALTSUA" THEN 1390
1290 IF ERREP$ = "EGIAZKOA" THEN 1440
1300 URPERATUA$ = "BAI"
1310 FOR J = 1 TO 4
1320 IF LEN(UNTZI$(I,J))=2 THEN URPERATUA$ = "EZ"
1330 NEXT J
1340 LOCATE ASC(Y$)-41,ASC(X$)-49 : BEEP : PRINT CHR$(4)
1350 IF URPERATUA$="BAI"
THEN LOCATE 22,7:BEEP:PRINT "URPERATUA!!"
ELSE LOCATE 22,7:PRINT "UKITUA!!!"
1360 N = 500 : GOSUB 1650 : REM PAUSA EGIKARITU
1370 LOCATE 22,7 : PRINT SPC(17)
1380 GOTO 1440
1390 URA = URA + 1
1400 LOCATE ASC(Y$)-41,ASC(X$)-49: PRINT " "
1410 LOCATE 22,7 : PRINT "Huts egin duzu!!!"
1420 N = 500 : GOSUB 1650 : REM PAUSA EGIKARITU
1430 LOCATE 22,7: PRINT SPC(20)
1440 GOTO 950
1450 REM AMBITARTEAN
1460 IF UKI 20 THEN 1500
1470 LOCATE 20,7:PRINT "Untzi guztiak urperatu dituzu "
1480 LOCATE 22,7: PRINT TIROAK;" tiroz IRABAZI DUZU!!!"
1490 GOTO 1540
1500 LOCATE 19,5:PRINT SPC(30)
1510 LOCATE 20,7:PRINT "Sentitzen dut, baina galdu egin"
1520 LOCATE 21,7:PRINT "duzu, jadanik 50 tiro baino"
1530 LOCATE 22,7 : PRINT "gehiago bota dituzu."
1540 N = 2000 : GOSUB 1650 : REM PAUSA EGIKARITU
1550 REM AMAIA JO DUZUN ALA EZ KALKULATZEKO BIGIZTA
1560 CLS
1570 LOCATE 11,11 : PRINT "JOKUA AMAITU DA."
1580 END
1590 REM AMAIA UNTZI-JOKUA
1600 REM JARRAITZEKO EKINTZA
1610 LOCATE 23,10: PRINT "Jarraitzeko J sakatu."
1620 TE$="":WHILE TE$ "J" AND TE$ "j":TE$=INKEY$:WEND
1630 RETURN
1640 REM AMAIA PAUSA EKINTZA
1650 REM PAUSA EKINTZA
1660 K = 1
1670 FOR III = 1 TO N
1680 K = K + 1
1690 NEXT III
1700 RETURN
1710 REM AMAIA PAUSA EKINTZA