1 REM Ins{nd av Jan Strandqvist <2895> 1985-09-28 00.35.12 10 REM 1985-09-27 Stockholm 11 REM 14 REM Fr}n (2895) Jan Strandqvist 15 REM 16 REM Till ABC-klubben 17 REM ================ 20 REM 21 REM Svar p} klubbens f|rfr}gan! 22 REM 23 REM Jag provade att s{nda ett spel- program till ABC-klubben och 24 REM anv{nde ett Demo-program som jag fick n{r jag k|pte min ABC80. 25 REM 26 REM Programmet "OTHELLO" {r fr}n denna LUXOR DEMO-kassett. 30 REM 40 REM >> 50 DIM A%(9,9),I4%(8),J4%(8),C$(8),D$(2) 60 ; CHR$(12);"- O T H E L L O -" 70 ; CUR(5,0); 80 PRINT "Beh|ver du instruktioner : "; 90 INPUT X$ 100 IF LEFT$(X$,1)="N" THEN 280 110 IF LEFT$(X$,1)<>"J" THEN 90 120 PRINT CHR$(12); 130 PRINT "OTHELLO SPELAS P] EN PLAN MED 8X8 RUTOR,"; 140 PRINT "RAD 1 TILL 8 OCH KOLUMN A TILL H." 150 PRINT "MAN STARTAR ALLTID MED F\LJANDE M\NSTER:" 160 PRINT " O X" 170 PRINT " X O" 180 ; 190 ; "VI TURAS OM ATT L[GGA 1 PJ[S VAR." 200 ; "N[R MAN LAGT UT EN PJ[S, F]R MAN" 210 ; "ALLA MOTSPELARENS PJ[SER MELLAN ENS" 220 ; "EGNA PJ[SER OCH DEN UTLAGDA PJ[SEN." 230 ; "OBS! MAN M]STE 'TA' MINST EN AV" 240 ; "MOTSPELARENS PJ[SER VARJE G]NG, ANNARS" 250 ; "M]STE MAN ST] \VER DET DRAGET." 260 ; " DETTA G\R MAN GENOM ATT SVARA 'A0' ." 270 ; 280 PRINT : ; 290 F2%=0 300 RESTORE : ; : ; "SKA JAG SPELA EFTER B[STA F\RM]GA "; 310 S2%=0 320 INPUT X$ 330 IF LEFT$(X$,1)="N" THEN 360 340 IF LEFT$(X$,1)<>"J" THEN 320 350 S2%=2 360 B%=-1 370 W%=1 380 D$(B%+1)="X" 390 D$(0%+1)=" " 400 D$(W%+1)="O" 410 FOR K%=1 TO 8 420 READ I4%(K%) 430 NEXT K% 440 DATA 0,-1,-1,-1,0,1,1,1 450 FOR K%=1 TO 8 460 READ J4%(K%) 470 NEXT K% 480 DATA 1,1,0,-1,-1,-1,0,1 490 FOR K%=1 TO 8 500 READ C$(K%) 510 NEXT K% 520 DATA "A","B","C","D","E","F","G","H" 530 PRINT 540 FOR I%=0 TO 9 550 FOR J%=0 TO 9 560 A%(I%,J%)=0 570 NEXT J% 580 NEXT I% 590 A%(4,4)=W% 600 A%(5,5)=W% 610 A%(4,5)=B% 620 A%(5,4)=B% 630 C1%=2 640 H1%=2 650 N1%=4 660 Z%=0 670 PRINT "VILL DU HA X ELLER O"; 680 C%=W% 690 H%=B% 700 INPUT X$ 710 IF X$="X" THEN 750 720 IF X$<>"O" THEN 700 730 C%=B% 740 H%=W% 750 PRINT "VILL DU DRA F\RST"; 760 INPUT X$ 770 IF LEFT$(X$,1)="N" THEN 820 780 IF LEFT$(X$,1)<>"J" THEN 760 790 GOSUB 2860 800 GOSUB 2790 810 GOTO 1320 820 GOSUB 2860 : GOTO 850 830 IF F2%=0 THEN 850 840 INPUT X$ 850 B1%=-1 860 I3%=0 : J3%=0 870 T1%=C% 880 T2%=H% 890 FOR I%=1 TO 8 900 FOR J%=1 TO 8 910 IF A%(I%,J%)<>0 THEN 1080 920 GOSUB 2450 930 IF F1%=0 THEN 1080 940 U%=-1 950 GOSUB 2540 960 IF S1%=0 THEN 1080 970 IF (I%-1)*(I%-8)<>0 THEN 990 980 S1%=S1%+S2% 990 IF (J%-1)*(J%-8)<>0 THEN 1010 1000 S1%=S1%+S2% 1010 IF S1%B1% THEN 1050 1030 R=RND 1040 IF R>.5 THEN 1080 1050 B1%=S1% 1060 I3%=I% 1070 J3%=J% 1080 NEXT J% 1090 NEXT I% 1100 IF B1%>0 THEN 1150 1110 ; CUR(22,0);"JAG M]STE AVST] MITT DRAG"; 1120 IF Z%=1 THEN 1930 1130 Z%=1 1140 GOTO 1320 1150 Z=0 1160 ; CUR(0%,0%);"MITT DRAG: "; 1170 PRINT C$(J3%); 1180 PRINT CHR$(I3%+48%); 1190 I%=I3% 1200 J%=J3% 1210 U%=1 1220 GOSUB 2540 1230 C1%=C1%+S1%+1 1240 H1%=H1%-S1% 1250 N1%=N1%+1 1260 ; CUR(22%,0%);"JAG TOG"; 1270 PRINT S1%; 1280 PRINT " AV DINA PJ[SER";SPACE$(15%); 1290 GOSUB 2790 1300 IF H1%=0 THEN 1930 1310 IF N1%=64 THEN 1930 1320 T1%=H% 1330 T2%=C% 1340 ; CUR(1%,0%);"DITT DRAG:";SPACE$(12%); 1350 ; CUR(1%,12%); 1360 INPUTLINE Z$ : Z$=LEFT$(Z$,LEN(Z$)-2%) 1370 IF LEN(Z$)=2 THEN 1380 ELSE 1400 1380 Z1=ASC(LEFT$(Z$,1)) : Z2=ASC(MID$(Z$,2,1)) 1390 IF Z1>47 AND Z1<57 AND Z2>64 AND Z2<73 OR Z1>64 AND Z1<73 AND Z2>47 AND Z2<57 THEN 1410 1400 ; CHR$(7%);CUR(2%,0%);"FEL. F\RS\K IGEN. ";CUR(3%,0%);SPACE$(15%); : GOTO 1340 1410 IF Z1>57 THEN 1430 1420 I%=Z1-48% : X$=CHR$(Z2) : GOTO 1440 1430 I%=Z2-48% : X$=CHR$(Z1) 1440 IF I%<0 THEN 1360 1450 IF I%>8 THEN 1360 1460 IF I%<>0 THEN 1570 1470 ; CUR(3,0);SPACE$(14); 1480 ; CUR(2%,0%);"AVST]R DU ?"; 1490 ; SPACE$(11);CUR(2%,12%); 1500 INPUTLINE X$ : X$=LEFT$(X$,LEN(X$)-2%) 1510 ; CUR(2%,0%);SPACE$(22%); 1520 IF LEN(X$)=0 THEN 1480 1530 IF LEFT$(X$,1)<>"J" THEN 1340 1540 IF Z%=1 THEN 1930 1550 Z%=1 1560 GOTO 830 1570 ; CUR(2%,0%);SPACE$(22%); 1580 FOR J%=1 TO 8 1590 IF C$(J%)=LEFT$(X$,1) THEN 1620 1600 NEXT J% 1610 GOTO 1360 1620 IF A%(I%,J%)=0 THEN 1660 1630 ; CUR(2%,0%);"UPPTAGEN RUTA" 1640 ; CUR(3%,0%);"-F\RS\K IGEN." 1650 GOTO 1340 1660 GOSUB 2450 1670 IF F1%=1 THEN 1710 1680 ; CUR(2%,0%);"EJ BREDVID MINA PJ[SER" 1690 ; CUR(3%,0%);"-F\RS\K IGEN." 1700 GOTO 1340 1710 U%=-1 1720 GOSUB 2540 1730 IF S1%>0 THEN 1780 1740 ; CUR(2%,0%);"DU KAN EJ V[NDA N]GRA" 1750 ; CUR(3%,0%);"F\RS\K IGEN."; 1760 GOTO 1340 1770 REM Hans drag OK. 1780 Z%=0 1790 ; CUR(2%,0%);SPACE$(22%); 1800 ; CUR(3%,0%);SPACE$(15%); 1810 ; CUR(23%,0%);" DU TOG"; 1820 PRINT S1%; 1830 PRINT " AV MINA PJ[SER";SPACE$(14%); 1840 U%=1 1850 GOSUB 2540 1860 H1%=H1%+S1%+1 1870 C1%=C1%-S1% 1880 N1%=N1%+1 1890 GOSUB 2790 1900 IF C1%=0 THEN 1930 1910 IF N1%=64 THEN 1930 1920 GOTO 830 1930 FOR I%=0% TO 10% : ; CHR$(7); : NEXT I% 1940 ; CUR(3%,0%); 1950 PRINT "DU HAR"; 1960 PRINT H1% 1970 PRINT "PJ[SER" 1980 ; "OCH JAG" 1990 ; "HAR"; 2000 PRINT C1% 2010 PRINT "PJ[SER" 2020 IF H1%=C1% THEN 2060 2030 IF H1%>C1% THEN 2080 2040 ; : ; "JAG VANN!" : ; 2050 GOTO 2090 2060 PRINT "OAVGJORT!!" 2070 GOTO 2280 2080 PRINT "DU VANN !" 2090 C1%=C1%-H1% 2100 IF C1%>0 THEN 2120 2110 C1%=-C1% 2120 C1%=(64*C1%)/N1% 2130 IF C1%<11 THEN 2270 2140 IF C1%<25 THEN 2250 2150 IF C1%<39 THEN 2230 2160 IF C1%<53 THEN 2200 2170 PRINT "PERFEKT" 2180 ; "PARTI !" 2190 GOTO 2280 2200 PRINT "SKAPLIGT" 2210 ; "SPELAT !" 2220 GOTO 2280 2230 PRINT "BRA FIGHT" 2240 GOTO 2280 2250 PRINT "SKICKLIGT!" 2260 GOTO 2280 2270 PRINT "FUSK !" 2280 PRINT CUR(22,0);SPACE$(39%); 2290 ; CUR(22,0);"ETT SPEL TILL "; 2300 INPUT X$ 2310 IF LEFT$(X$,1)<>"J" THEN 2410 2320 ; CUR(0,0);SPACE$(22) 2330 ; SPACE$(22) 2340 ; SPACE$(15) 2350 FOR I%=4% TO 21% 2360 ; SPACE$(11) 2370 NEXT I% 2380 ; SPACE$(15) 2390 ; SPACE$(39) 2400 GOTO 300 2410 ; CUR(22,0);SPACE$(39); 2420 ; CUR(23,0);SPACE$(39); 2430 ; CUR(21,0);"TACK F\R IDAG."; 2440 GOTO 3140 2450 FOR I1%=-1 TO 1 2460 FOR J1%=-1 TO 1 2470 IF A%(I%+I1%,J%+J1%)=T2% THEN 2520 2480 NEXT J1% 2490 NEXT I1% 2500 F1%=0 2510 RETURN 2520 F1%=1 2530 RETURN 2540 S1%=0 2550 FOR K%=1 TO 8 2560 I5%=I4%(K%) 2570 J5%=J4%(K%) 2580 I6%=I%+I5% 2590 J6%=J%+J5% 2600 S3%=0 2610 IF A%(I6%,J6%)<>T2% THEN 2770 2620 S3%=S3%+1 2630 I6%=I6%+I5% 2640 J6%=J6%+J5% 2650 IF A%(I6%,J6%)=T1% THEN 2680 2660 IF A%(I6%,J6%)=0 THEN 2770 2670 GOTO 2620 2680 S1%=S1%+S3% 2690 IF U%<>1 THEN 2770 2700 I6%=I% 2710 J6%=J% 2720 FOR K1%=0 TO S3% 2730 A%(I6%,J6%)=T1% 2740 I6%=I6%+I5% 2750 J6%=J6%+J5% 2760 NEXT K1% 2770 NEXT K% 2780 RETURN 2790 FOR I%=1% TO 8% 2800 FOR J%=1% TO 8% 2810 ; CUR(2%*I%+3%,3%*J%+12%); 2820 ; D$(A%(I%,J%)+1%); 2830 NEXT J% 2840 NEXT I% 2850 RETURN 2860 ; CHR$(12); : REM Init br{det 2870 FOR I%=0% TO 2% : ; CUR(I%,22%);CHR$(151) : NEXT I% 2880 FOR I%=1% TO 6% 2890 SETDOT I%,46% : SETDOT I%,75% 2900 NEXT I% 2910 FOR I%=47% TO 75% 2920 SETDOT 1%,I% : SETDOT 6%,I% 2930 NEXT I% 2940 ; CUR(1%,24%);"O T H E L L O" 2950 FOR I%=4% TO 20% 2960 ; CUR(I%,12%);CHR$(151); 2970 ; CUR(I%,38%);CHR$(135); 2980 NEXT I% 2990 FOR I%=13% TO 61% STEP 6% 3000 FOR J%=27% TO 75% 3010 SETDOT I%,J% 3020 NEXT J% : NEXT I% 3030 FOR I%=27% TO 75% STEP 6% : FOR J%=13% TO 61% 3040 SETDOT J%,I% 3050 NEXT J% : NEXT I% 3060 FOR I%=1% TO 8% 3070 ; CUR(3%+I%*2%,10%);I%;CUR(3%+I%*2%,39%);CHR$(I%+48%); 3080 NEXT I% 3090 FOR I%=1% TO 8% 3100 ; CUR(3%,12%+I%*3%);CHR$(64+I%); 3110 ; CUR(21%,12%+I%*3%);CHR$(64+I%); 3120 NEXT I% 3130 RETURN 3140 END