-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathothello.bas
More file actions
133 lines (122 loc) · 4.15 KB
/
Copy pathothello.bas
File metadata and controls
133 lines (122 loc) · 4.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
10 REM PROGRAMME DE JEU-L'ORDINATEUR INDIVIDUEL-FICHE NO.1
20 GOSUB 100:REM PROLOGUE DU JEU
30 REM BOUCLE DES PARTIES
40 GOSUB 200:REM PROLOGUE DE LA PARTIE
50 GOSUB 300:REM PARTIE
60 PRINT "VOULEZ-VOUS JOUER UNE AUTRE PARTIE ";:GOSUB 9000
70 IF R$="O" THEN 30
80 GOSUB 900:REM EPILOGUE DU JEU
90 END
100 REM PROLOGUE DU JEU
110 PRINT:PRINT:PRINT "OTHELLO"
120 DIM A(9,9),I4(8),J4(8)
130 C$="ABCDEFGH":D$=".XO":B=2:N=3:P=2:B9=-100: REM RANDOMIZE
140 FOR K=1 TO 8:READ I4(K):NEXT K
150 DATA 0,-1,-1,-1,0,1,1,1
160 FOR K=1 TO 8:READ J4(K):NEXT K
170 DATA 1,1,0,-1,-1,-1,0,1
199 RETURN
200 REM PROLOGUE DE LA PARTIE
210 FOR I=0 TO 9:FOR J=0 TO 9:A(I,J)=1:NEXT J:NEXT I
220 A(4,4)=B:A(5,5)=B:A(4,5)=N:A(5,4)=N:O1=2:H1=2:N1=4:P9=0:I7=3:I8=6:J7=3:J8=6
230 INPUT "VOULEZ-VOUS LES X OU LES O ";R$
240 IF R$="O" THEN O=B:H=N:GOTO 299
250 IF R$="X" THEN O=N:H=B:GOTO 299
255 GOTO 230
299 RETURN
300 REM PARTIE-L'ORDINATEUR INDIVIDUEL-FICHE NO 1815
310 PRINT "VOULEZ-VOUS JOUER EN PREMIER ";:GOSUB 9000
320 IF R$="O" THEN 350
330 GOSUB 1000:REM L'ORDINATEUR JOUE
340 IF H1=0 OR N1=64 OR P9=2 THEN 400
350 GOSUB 2000: REM LE JOUEUR JOUE
360 IF O1>0 AND N1<64 AND P9<2 THEN 330
400 PRINT "VOUS AVEZ ";H1;" PIONS ET MOI ";O1
500 IF H1>O1 THEN PRINT "BRAVO, VOUS AVEZ GAGNE":GOTO 899
510 IF H1=O1 THEN PRINT "NOUS SOMMES EX-AEQUO":GOTO 899
520 PRINT "J'AI GAGNE! J'AI GAGNE!"
899 RETURN
900 REM EPILOGUE DU JEU
910 PRINT "AU REVOIR":PRINT:PRINT
999 RETURN
1000 IF P9=0 THEN GOSUB 4000:REM L'ORDINATEUR JOUE
1010 GOSUB 9100: PRINT "HMMM...";:B1=B9:I9=0:J9=0:T1=O:T2=H
1020 FOR I=I7 TO I8:FOR J=J7 TO J8
1030 IF A(I,J)<>1 THEN 1140
1040 U=-1:GOSUB 3000:S1=S
1050 IF S=0 THEN 1140
1060 IF I=1 OR I=8 THEN S1=S1+P
1070 IF I=2 OR I=7 THEN S1=S1-P
1080 IF J=1 OR J=8 THEN S1=S1+P
1090 IF J=2 OR J=7 THEN S1=S1-P
1100 IF S1<B1 THEN 1140
1110 IF S1>B1 THEN B1=S1:N2=1:I9=I:J9=J:GOTO 1140
1120 N2=N2+1:REM ON A ENCORE TROUVE UNE POSSIBILITE
1130 IF INT(RND(N2))=0 THEN I9=I:J9=J
1140 NEXT J:NEXT I
1150 IF B1=B9 THEN PRINT "JE DOIS PASSER":P9=P9+1:GOTO 1999
1160 P9=0:I=I9:J=J9:PRINT "JE JOUE EN ";I;",";MID$(C$,J,1):U=1:GOSUB 3000
1170 O1=O1+S+1:H1=H1-S:N1=N1+1:PRINT "CE QUI ME DONNE ";S;" PIONS"
1999 RETURN
2000 T1=H:T2=O:REM LE JOUEUR JOUE
2010 IF P9=0 THEN GOSUB 4000
2020 INPUT "OU JOUEZ-VOUS ";I,R$
2030 IF I<0 OR I>8 THEN PRINT "NUMERO DE LIGNE ENTRE 0 ET 8, SVP":GOTO 2010
2040 IF I>0 THEN 2090
2050 PRINT "PASSEZ-VOUS VOTRE TOUR ";:GOSUB 9000
2060 IF R$="N" THEN 2020
2070 GOSUB 5000:REM VERIFICATION QU'IL DOIT PASSER
2080 IF N2>0 THEN GOTO 2160
2085 P9=P9+1:GOTO 2999
2090 J=0:FOR J1=1 TO 8
2100 IF R$=MID$(C$,J1,1) THEN J=J1:J1=8
2110 NEXT J1
2120 IF J=0 THEN PRINT "COLONNE INCORRECTE":GOTO 2020
2130 IF A(I,J)<>1 THEN PRINT "CASE DEJA OCCUPEE":GOTO 2020
2140 U=-1:GOSUB 3000
2150 IF S=0 THEN PRINT "CETTE CASE N'EST PAS AU BOUT D'UNE RANGEE":GOTO 2020
2160 P9=0:U=1:GOSUB 3000:PRINT "CECI VOUS DONE ";S;" PIONS"
2170 H1=H1+S+1:O1=O1-S:N1=N1+1
2999 RETURN
3000 S=0:REM COMPTAGE DES PIONS PRIS EN JOUANT EN I,J
3010 FOR K=1 TO 8:I5=I4(K):J5=J4(K):I6=I+I5:J6=J+J5:S1=0
3020 IF A(I6,J6)<>T2 THEN 3080
3030 S1=S1+1:I6=I6+I5:J6=J6+J5
3040 IF A(I6,J6)=T2 THEN 3030
3050 IF A(I6,J6)<>T1 THEN 3080
3060 S=S+S1
3070 IF U=1 THEN I6=I:J6=J:FOR K1=0 TO S1:A(I6,J6)=T1:I6=I6+I5:J6=J6+J5:NEXT K1
3080 NEXT K
3090 IF U<>1 THEN 3999
3100 IF I=I7 AND I7>1 THEN I7=I7-1
3110 IF I=I8 AND I8<8 THEN I8=I8+1
3120 IF J=J7 AND J7>1 THEN J7=J7-1
3130 IF J=J8 AND J8<8 THEN J8=J8+1
3999 RETURN
4000 REM IMPRESSION DU JEU
4010 PRINT:PRINT " A B C D E F G H"
4020 FOR I=1 TO 8:PRINT I;
4030 FOR J=1 TO 8:PRINT " ";MID$(D$,A(I,J),1);:NEXT J
4040 PRINT:NEXT I
4050 PRINT
4999 RETURN
5000 REM LE JOUEUR A-T-IL LE DROIT DE PASSER
5010 N2=0:I9=0:J9=0
5020 FOR I=I7 TO I8:FOR J=J7 TO J8
5030 IF A(I,J)<>1 THEN 5090
5040 U=-1:GOSUB 3000
5050 IF S=0 THEN 5090
5060 N2=N2+1
5070 IF INT(RND(N2))=0 THEN I9=I:J9=J
5080 IF N2=1 THEN PRINT "VOUS AVIEZ ";
5090 NEXT J:NEXT I
5100 IF N2=0 THEN 5999
5110 I=I9:J=J9:PRINT N2;" POSSIBILITES DE JEU"
5120 PRINT "JE DECIDE ARBITRAIREMENT QUE VOUS JOUEZ EN ";I;", ";MID$(C$,J,1)
5999 RETURN
9000 INPUT R$
9010 IF R$<>"O" AND R$<>"N" THEN PRINT "O OU N";:GOTO 9000
9020 RETURN
9100 REM ATTENTE POUR ECRITURE SUR ECRAN
9110 REM INPUT R$
9120 RETURN