home *** CD-ROM | disk | FTP | other *** search
- 100 REM OSERO 6.3
- 110 FORI=1TO39:E$=E$+" ":NEXT
- 120 FORI=1TO39:E$=E$+"[157]":NEXT
- 130 POKE53280,1:POKE53281,1:POKE53272,21:D$="":REM C64 MODS 1983
- 140 FORI=1TO20:D$=D$+"":NEXT
- 150 DIMA(9,9),I4(7),J4(7),D$(2)
- 160 PRINT"[152][147]GREETINGS FROM OSERO"
- 170 PRINT"DO YOU WANT INSTRUCTIONS ? ";
- 180 GOSUB2470:IFX$="N"THENPRINT"NO":GOTO470
- 190 PRINT"YES"
- 200 PRINT"OSERO[146] IS PLAYED ON AN 8 X 8 BOARD,"
- 210 PRINT"ROWS NUMBERED 1[146] TO 8[146] AND COLUMNS A[146] TO H[146]"
- 220 PRINT"THE INITIAL CONFIGURATION IS ALL BLANK,"
- 230 PRINT"EXECPT FOR THE CENTER FOUR SQUARES,"
- 240 PRINT"TRY TO PLACE YOUR PIECE SO THAT IT"
- 250 PRINT"OUTFLANKS MINE, CREATING A HORIZONTAL,"
- 260 PRINT"VERITICAL,OR DIAGONAL RUN OF MY PIECES,"
- 270 PRINT"TURNING THEM INTO YOURS."
- 280 PRINT" [192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192]"
- 290 PRINT" [221] [215] [221] [215] [221] [215] [221] [215] [221] [209]"
- 300 PRINT" [192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192]"
- 310 PRINT"EXAMPLE: WHITE OUTFLANKS BLACK,"
- 320 PRINT"CAPTURING FOUR OF BLACKS PIECES."
- 330 PRINT"[145][145][145][145]";
- 340 FORI=1TO20
- 350 PRINT"[209][157]";:FORL=1TO200:NEXT
- 360 PRINT" [157]";:FORL=1TO200:NEXT
- 370 NEXT
- 380 PRINT"[209] [221][160][209] [221] [209] [221] [209] [221] [209]"
- 390 PRINT"MAKE YOUR MOVE BY ENTERING A NUMBER"
- 400 PRINT"FOR THE ROW AND A LETTER FOR THE COLUMN."
- 410 PRINT"NOTE: YOU MUST CAPTURE AT LEAST ONE OF"
- 420 PRINT"MY PIECES IN THIS WAY IF IT IS AT ALL"
- 430 PRINT"POSSIBLE. IF IT IS NOT POSSIBLE, YOU"
- 440 PRINT"FORFEIT YOUR TURN BY ENTERING 0[146] A[146] FOR"
- 450 PRINT"YOUR MOVE."
- 460 F2=0
- 470 PRINT"SHOULD I PLAY MY BEST ? ";
- 480 S2=0:S4=0:S5=0
- 490 GOSUB2470:IFX$="N"THENPRINT"NO":GOTO520
- 500 PRINT"YES"
- 510 S2=2:S4=1:S5=-2
- 520 B=-1:W=1
- 530 D$(B+1)="[215]":N$(B+1)="BLACK[146]"
- 540 D$(0+1)=" "
- 550 D$(W+1)="[209]":N$(W+1)="WHITE"
- 560 FORK=0TO7
- 570 READI4(K),J4(K)
- 580 NEXT
- 590 FORI=0TO9:FORJ=0TO9
- 600 A(I,J)=0
- 610 NEXTJ,I
- 620 A(4,4)=W:A(5,5)=W
- 630 A(4,5)=B:A(5,4)=B
- 640 C1=2:H1=C1:N1=4:Z=0
- 650 PRINT"DO YOU WANT BLACK OR WHITE ? ";
- 660 C=W:H=B
- 670 GOSUB2470:IFX$="B"THENPRINTN$(0):GOTO700
- 680 PRINTN$(2)
- 690 C=B:H=W
- 700 PRINT"[147]";
- 710 GOSUB2170
- 720 PRINTD$"DO YOU WANT TO GO FIRST ? ";
- 730 GOSUB2470:IFX$="Y"THENPRINT"YES":GOTO1140
- 740 PRINT"NO":PRINT"OK, I AM THINKING !"
- 750 B1=-1:I3=0:J3=0:T1=C:T2=H
- 760 FORI=1TO8:FORJ=1TO8
- 770 IF A(I,J)<>0THEN930
- 780 GOSUB1840
- 790 IFF1=0THEN930
- 800 U=-1
- 810 GOSUB1920
- 820 IFS1=0THEN930
- 830 IF(I=1)OR(I=8)THENS1=S1+S2
- 840 IF(J=1)OR(J=8)THENS1=S1+S2
- 850 IF(I=2)OR(I=7)THENS1=S1+S5
- 860 IF(J=2)OR(J=7)THENS1=S1+S5
- 870 IF(I=3)OR(I=6)THENS1=S1+S4
- 880 IF(J=3)OR(J=6)THENS1=S1+S4
- 890 IFS1<B1THEN930
- 900 IFS1>B1THEN920
- 910 IFRND(1)>0.5THEN930
- 920 B1=S1:I3=I:J3=J
- 930 NEXTJ,I
- 940 IFB1>0THEN1010
- 950 IFS5=0THEN970
- 960 S5=0:PRINT"S5=2":GOTO750
- 970 PRINTD$""E$"I HAVE TO FORFEIT MY MOVE"
- 980 IFZ=1THEN1500
- 990 Z=1
- 1000 GOTO1140
- 1010 Z=0
- 1020 PRINTD$""E$"I WILL MOVE TO "RIGHT$(STR$(I3),1)"[146] "CHR$(J3+64)
- 1030 GOSUB2400
- 1040 I=I3:J=J3:U=1
- 1050 GOSUB1920
- 1060 C1=C1+S1+1
- 1070 H1=H1-S1
- 1080 N1=N1+1
- 1090 PRINTD$""E$"THAT GIVES ME ";
- 1100 PRINTS1;
- 1110 PRINT" OF YOUR PIECES"
- 1120 GOSUB2170
- 1130 IFH1=0ORN1=64THEN1500
- 1140 T1=H:T2=C
- 1150 PRINTD$;E$"INPUT YOUR MOVE -- ROW[146] COL[146] ";
- 1160 GOSUB2330
- 1170 IF(I<0)OR(J<0)THEN1150
- 1180 IFI<>0THEN1250
- 1190 PRINTD$;E$"ARE YOU FORFEITING YOUR TURN ? ";
- 1200 GOSUB2470:IFX$<>"Y"THENPRINT"NO":GOTO1150
- 1210 PRINT"YES"
- 1220 IFZ=1THEN1500
- 1230 Z=1
- 1240 GOTO750
- 1250 IF A(I,J)=0THEN1280
- 1260 PRINTD$""E$"SORRY,SQUARE OCCUPIED;TRY AGAIN"
- 1270 GOTO1360
- 1280 GOSUB1840
- 1290 IFF1=1THEN1320
- 1300 PRINTD$""E$"SORRY,NOT NEXT TO MY PIECES;TRY AGAIN"
- 1310 GOTO1360
- 1320 U=-1
- 1330 GOSUB1920
- 1340 IFS1>0THEN1380
- 1350 PRINTD$""E$"SORRY,DOESN'T FLANK A ROW;TRY AGAIN"
- 1360 PRINTE$
- 1370 GOTO1150
- 1380 Z=0
- 1390 PRINTD$""E$"THAT GIVES YOU ";
- 1400 PRINTS1;
- 1410 PRINT" OF MY PIECES":PRINTE$
- 1420 U=1
- 1430 GOSUB1920
- 1440 H1=H1+S1+1
- 1450 C1=C1-S1
- 1460 N1=N1+1
- 1470 GOSUB2170
- 1480 IFC1=0ORN1=64THEN1500
- 1490 GOTO750
- 1500 PRINTD$;E$:PRINTE$:PRINTE$
- 1510 PRINTD$;E$"YOU HAVE "H1"PIECES"
- 1520 PRINT"I HAVE "C1"PIECES"
- 1530 IFH1=C1THEN1570
- 1540 IFH1>C1THEN1590
- 1550 PRINT"SORRY, I WON THAT ONE."
- 1560 GOTO1600
- 1570 PRINT"A TIE !!"
- 1580 GOTO1780
- 1590 PRINT"YOU WON !"
- 1600 C1=C1-H1
- 1610 IFC1>0THEN1630
- 1620 C1=-C1
- 1630 C1=(64*C1)/N1
- 1640 PRINT"THAT WAS A ";
- 1650 IFC1<11THEN1770
- 1660 IFC1<25THEN1750
- 1670 IFC1<39THEN1730
- 1680 IFC1<53THEN1710
- 1690 PRINT"PERFECT GAME."
- 1700 GOTO1780
- 1710 PRINT"WALKAWAY."
- 1720 GOTO1780
- 1730 PRINT"FIGHT."
- 1740 GOTO1780
- 1750 PRINT"HOT GAME !"
- 1760 GOTO1780
- 1770 PRINT"SQUEAKER !"
- 1780 PRINT
- 1790 PRINT"DO YOU WANT TO PLAY ANOTHER GAME ? ";
- 1800 GOSUB2470:IFX$="Y"THENPRINT"YES":GOTO590
- 1810 PRINT"NO"
- 1820 PRINT"THANKS FOR PLAYING."
- 1830 STOP
- 1840 F1=0
- 1850 FORI1=-1TO1
- 1860 FORJ1=-1TO1
- 1870 IFA(I+I1,J+J1)=T2THEN1900
- 1880 NEXTJ1,I1
- 1890 RETURN
- 1900 F1=1
- 1910 RETURN
- 1920 S1=0
- 1930 FORK=0TO7
- 1940 I5=I4(K)
- 1950 J5=J4(K)
- 1960 I6=I+I5
- 1970 J6=J+J5
- 1980 S3=0
- 1990 IFA(I6,J6)<>T2THEN2150
- 2000 S3=S3+1
- 2010 I6=I6+I5
- 2020 J6=J6+J5
- 2030 IFA(I6,J6)=T1THEN2060
- 2040 IFA(I6,J6)=0 THEN2150
- 2050 GOTO2000
- 2060 S1=S1+S3
- 2070 IFU<>1THEN2150
- 2080 I6=I
- 2090 J6=J
- 2100 FORK1=0TOS3
- 2110 A(I6,J6)=T1
- 2120 I6=I6+I5
- 2130 J6=J6+J5
- 2140 NEXTK1
- 2150 NEXTK
- 2160 RETURN
- 2170 PRINT" O S E R O [146] "
- 2180 X$=" [171][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][219][192][192][192][179]"
- 2190 PRINTE$
- 2200 PRINT" A B C D E F G H "
- 2210 PRINT" [176][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][178][192][192][192][174]"
- 2220 FORI=1TO8
- 2230 PRINTI"[221] ";
- 2240 FORJ=1TO8
- 2250 PRINTD$(A(I,J)+1)" [221] ";
- 2260 NEXTJ
- 2270 PRINT:IFI<>8THENPRINTX$
- 2280 NEXTI
- 2290 PRINT" [173][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][177][192][192][192][189]"
- 2300 RETURN
- 2310 REM INPUT SUBROUTINE
- 2320 PRINTD$""E$"BAD MOVE; TRY AGAIN."
- 2330 I=-1:J=I
- 2340 FORK=1TO2
- 2350 GOSUB2470
- 2360 G=ASC(X$)
- 2370 IF47<GANDG<58THENI=G-48:PRINT""X$"[146] ";
- 2380 IF64<GANDG<74THENJ=G-64:PRINT""X$"[146] ";
- 2390 NEXT:RETURN
- 2400 REM BLINK COMPUTERS MOVE
- 2410 PRINTLEFT$(D$,2*(I3-1)+5);SPC(4*(J3-1)+5);
- 2420 X$=D$(C+1)
- 2430 FORK=1TO9
- 2440 PRINTX$"[157]";:FORL=1TO200:NEXT
- 2450 PRINT" [157]";:FORL=1TO200:NEXT
- 2460 NEXT:RETURN
- 2470 REM INPUT WITH CURSOR
- 2480 FORL=0TO9:GETX$:NEXT
- 2490 GETX$:IFX$<>""THENRETURN
- 2500 PRINT"[166][157]";:FORL=1TO100:NEXT
- 2510 PRINT" [157]";:FORL=1TO100:NEXT
- 2520 GOTO2490
- 2530 DATA 0,1,-1,1,-1,0,-1,-1,0,-1,1,-1,1,0,1,1
-