10 REM ...SAVE KALAHA...v.4.6% 80 03 18 20 REM EFTER 'AWARI' I BASIC COMP.GAMES 30 REM Sven Wickberg <1384> 40 REM 50 REM ny vers.med externt 'minne 80 06 04 55 REM f|rb{ttr format 81 03 57 REM Programmet kr{ver att det finns en fil KALAHA.DAT 60 REM ---------------------------------- 65 GOSUB 1000 70 DIM F(50%) 75 ONERRORGOTO 80 : OPEN "KALAHA.DAT" ASFILE 1% 77 INPUT #1%,N% : FOR I%=0% TO N%-1% : INPUT #1%,F(I%) : NEXT I% : CLOSE 1% 80 ONERRORGOTO 0 : ; CHR$(12%) 90 DIM B%(13%),G%(13%) 100 ; 'UTG]NGSST[LLNING (v{lj 1-6):' 110 FOR I%=0% TO 12% : B%(I%)=3% : NEXT I% 120 C%=0% : B%(13%)=0% : B%(6%)=0% 125 F(N%)=0% 130 GOSUB 490 : REM --- RITA BR[DET 140 ; "DITT DRAG"; : GOSUB 310 150 IF E%=0% THEN 230 160 IF M%=H% THEN GOSUB 290 170 IF E%=0% THEN 230 180 ; "MITT DRAG:"; : GOSUB 690 190 IF E%=0% THEN 230 200 IF M%=H% THEN ; "V[NTA - JAG HAR EXTRADRAG:"; : GOSUB 690 210 ; 220 IF E%>0% THEN 140 230 ; : ; : ; "SLUT P] SPELET" 240 D%=B%(6%)-B%(13%) : IF D%<0% THEN ; "JAG VANN MED";-D%" PO[NG" : GOTO 270 250 N%=N%+1% : IF D%=0% THEN ; "OAVGJORT" : GOTO 270 260 ; "DU VANN MED";D%" PO[NG" 270 ; : ; "NYTT SPEL"; : INPUT W$ : IF W$="J" THEN GOTO 100 ELSE GOTO 890 280 REM --- NYTT DRAG --- 290 ; "EN G]NG TILL"; 300 REM --- DITT DRAG ---------------- 310 INPUT M$ : IF ASC(M$)<49 THEN 290 315 M$=LEFT$(M$,1%) : IF M$<"7" THEN M%=VAL(M$) : M%=M%-1% : GOTO 330 320 ; "OTILL]TET DRAG" : GOTO 290 330 IF B%(M%)=0% THEN 320 340 ; CHR$(12%)'DITT DRAG: 'M$ 350 H%=6% : REM --- DIN KALAHA 370 REM --- UTF\R & MINNS DRAG --- 380 K%=M% : GOSUB 610 : REM -- UTF\R DRAGET 390 E%=0% : IF K%>6% THEN K%=K%-7% : REM -- DATORNS DRAG 400 C%=C%+1% : IF C%<9% THEN F(N%)=F(N%)*6%+K% 410 REM --- E=0 => KULOR & SPEL SLUT 420 FOR I%=0% TO 5% : IF B%(I%)<>0% THEN 450 430 NEXT I% 440 GOTO 490 450 FOR I%=7% TO 12% : IF B%(I%)<>0% THEN E%=1% : GOTO 490 460 NEXT I% 480 REM --- RITA BR[DET ------------ 490 ; : ; " "; 500 FOR I%=12% TO 7% STEP -1% : GOSUB 580 : REM ---SKRIVER ANT KULOR 510 NEXT I% 520 ; : I%=13% : GOSUB 580 530 ; " "; : ; B%(6%) : ; " "; 540 FOR I%=0% TO 5% : GOSUB 580 550 NEXT I% 560 ; : ; : RETURN 570 REM --- SKRIVER UT ANT KULOR --- 580 IF B%(I%)<10% THEN ; " "; : REM ---FLYTTAR ENTALSSIFFRA H\GER 590 ; B%(I%); : RETURN 600 REM --- UTF\R DRAGET -------------- 610 P%=B%(M%) : B%(M%)=0% 620 FOR P%=P% TO 1% STEP -1% : M%=M%+1% : IF M%>13% THEN M%=M%-14% 630 B%(M%)=B%(M%)+1% : NEXT P% 640 IF B%(M%)=1% IF M%<>6% IF M%<>13% IF B%(12%-M%)<>0% THEN 670 : REM SISTA KULAN I TOM GROP 650 RETURN 660 REM ---SISTA KULAN I TOM GROP --- 670 B%(H%)=B%(H%)+B%(12%-M%)+1% : B%(M%)=0% : B%(12%-M%)=0% : GOTO 650 : REM ALLT TILL KALAHA 680 REM ------ MITT DRAG -------------- 690 D%=-99% : H%=13% 700 FOR I%=0% TO 13% : G%(I%)=B%(I%) : NEXT I% 710 FOR J%=7% TO 12% : IF B%(J%)=0% THEN 860 720 Q%=0% : M%=J% : GOSUB 610 730 REM ---UTV[RDERAR SPELARENS MOTDRAG 740 FOR I%=0% TO 5% : IF B%(I%)=0% THEN 790 750 L%=B%(I%)+I% : R%=0% 760 IF L%>13% THEN L%=L%-14% : R%=1% : GOTO 760 770 IF B%(L%)=0% THEN IF L%<>6% THEN IF L%<>13% THEN R%=B%(12%-L%)+R% 780 IF R%>Q% THEN Q%=R% : REM --- SPELARENS B[STA MOTDRAG : Q SPELARENS PO[NG 790 NEXT I% 800 Q%=B%(13%)-B%(6%)-Q% : IF C%>8% THEN 840 : REM ---Q [R NU DATORNS B[STA PO[NG 810 K%=J% : IF K%>6% THEN K%=K%-7% 820 FOR I%=0% TO N%-1% : IF F(N%)*6%+K%=INT(F(I%)/6^(7%-C%)) THEN Q%=Q%-2% 830 NEXT I% 840 FOR I%=0% TO 13% : B%(I%)=G%(I%) : NEXT I% 850 IF Q%>=D% THEN A%=J% : D%=Q% 860 NEXT J% 870 M%=A% : ; A%-6% : GOTO 380 890 REM --- SPARA INL[RDA SPEL ------ 900 PREPARE "KALAHA.DAT" ASFILE 1% 910 ; #1%,N% 920 FOR I%=0% TO N%-1% 930 ; #1%,F(I%) 940 NEXT I% 950 CLOSE 1% 960 ; CHR$(12%)CUR(10%,10%)"TACK F\R I DAG" 970 CHAIN 'MENY' : REM END 1000 REM --- REGLERNA ------------- 1010 ; CHR$(12%) : ; 'KALAHA {r ett urgammalt orientaliskt' 1020 ; 'spel. Spelplanen ser ut s} h{r' 1030 ; ' 13 12 11 10 9 8' 1040 ; ' 14 7' 1050 ; ' 1 2 3 4 5 6' : ; 1060 ; 'Vid varej siffra finns en GROP.' 1070 ; '1-6 {r dina gropar, 8-13 datorns' 1080 ; '(som kommer att kallas 1-6 i spelet)' : ; 1090 ; 'Vid spelets start finns 3 kulor i varje' 2000 ; 'grop. Gropens nummer {r ditt drag.' : ; 2005 ; ' 7 {r din KALAHA, 14 {r datorns' 2010 ; 'Det g{ller att f} s} m}nga kulor i sin' 2020 ; 'kalaha som m|jligt.' 2030 ; : ; '(Tryck RETURN)'; : GET W$ : ; CHR$(12%) 2100 ; : ; 'Man drar v{xelvis genom att ta alla' 2110 ; 'Kulor i n}gon (egen) grop och l{gga en' 2120 ; 'i varje grop (inkl kalaha) man passerar' 2125 ; 'p} v{g moturs.' 2130 ; : ; 'Hamnar den sista kulan ensam i en grop' 2135 ; 'och dtt finns kulor i gropen mittemot,' 2140 ; 'tar man b}de den och kulorna i gripen' 2150 ; 'mittemot och l{gger i egen kalaha.' : ; 2160 ; 'Om man i f|rsta draget l{gger sista' 2170 ; 'kulan i egen kalaha, f}r man ett drag' 2180 ; 'extra.' 2190 ; : ; 'Spelet {r slut n{r en spelare har alla' 2200 ; 'gropar tomma.' 2210 ; : ; '(Tryck RETURN f|r att b|rja)' 2220 ; '( U f|r att se reglerna igen)'; : GET W$ 2230 IF W$='U' OR W$='u' GOTO 1000 ELSE RETURN