mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-12 07:40:50 -08:00
71 lines
2.0 KiB
QBasic
71 lines
2.0 KiB
QBasic
5 PRINT TAB(34);"AWARI"
|
|
7 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
|
|
10 DATA 0
|
|
15 DIM B(13),G(13),F(50):READ N
|
|
20 PRINT:PRINT:E=0
|
|
25 FOR I=0 TO 12:B(I)=3:NEXT I
|
|
30 C=0:F(N)=0:B(13)=0:B(6)=0
|
|
35 GOSUB 500
|
|
40 PRINT "YOUR MOVE";:GOSUB 110
|
|
45 IF E=0 THEN 80
|
|
50 IF M=H THEN GOSUB 100
|
|
55 IF E=0 THEN 80
|
|
60 PRINT "MY MOVE IS ";:GOSUB 800
|
|
65 IF E=0 THEN 80
|
|
70 IF M=H THEN PRINT ",";:GOSUB 800
|
|
75 IF E>0 THEN 35
|
|
80 PRINT:PRINT"GAME OVER"
|
|
85 D=B(6)-B(13):IF D<0 THEN PRINT "I WIN BY";-D;"POINTS":GOTO 20
|
|
90 N=N+1:IF D=0 THEN PRINT "DRAWN GAME":GOTO 20
|
|
95 PRINT "YOU WIN BY";D;"POINTS":GOTO 20
|
|
100 PRINT "AGAIN";
|
|
110 INPUT M:IF M<7 THEN IF M>0 THEN M=M-1:GOTO 130
|
|
120 PRINT "ILLEGAL MOVE":GOTO 100
|
|
130 IF B(M)=0 THEN 120
|
|
140 H=6:GOSUB 200
|
|
150 GOTO 500
|
|
200 K=M:GOSUB 600
|
|
205 E=0:IF K>6 THEN K=K-7
|
|
210 C=C+1:IF C<9 THEN F(N)=F(N)*6+K
|
|
215 FOR I=0 TO 5:IF B(I)<>0 THEN 230
|
|
220 NEXT I
|
|
225 RETURN
|
|
230 FOR I=7 TO 12:IF B(I)<>0 THEN E=1:RETURN
|
|
235 GOTO 220
|
|
500 PRINT:PRINT" ";
|
|
505 FOR I=12 TO 7 STEP -1:GOSUB 580
|
|
510 NEXT I
|
|
515 PRINT:I=13:GOSUB 580
|
|
520 PRINT " ";:PRINT B(6):PRINT " ";
|
|
525 FOR I=0 TO 5:GOSUB 580
|
|
530 NEXT I
|
|
535 PRINT:PRINT:RETURN
|
|
580 IF B(I)<10 THEN PRINT " ";
|
|
585 PRINT B(I);:RETURN
|
|
600 P=B(M):B(M)=0
|
|
605 FOR P=P TO 1 STEP -1:M=M+1:IF M>13 THEN M=M-14
|
|
610 B(M)=B(M)+1:NEXT P
|
|
615 IF B(M)=1 THEN IF M<>6 THEN IF M<>13 THEN IF B(12-M)<>0 THEN 625
|
|
620 RETURN
|
|
625 B(H)=B(H)+B(12-M)+1:B(M)=0:B(12-M)=0:RETURN
|
|
800 D=-99:H=13
|
|
805 FOR I=0 TO 13:G(I)=B(I):NEXT I
|
|
810 FOR J=7 TO 12:IF B(J)=0 THEN 885
|
|
815 Q=0:M=J:GOSUB 600
|
|
820 FOR I=0 TO 5:IF B(I)=0 THEN 845
|
|
825 L=B(I)+I:R=0
|
|
830 IF L>13 THEN L=L-14:R=1:GOTO 830
|
|
835 IF B(L)=0 THEN IF L<>6 THEN IF L<>13 THEN R=B(12-L)+R
|
|
840 IF R>Q THEN Q=R
|
|
845 NEXT I
|
|
850 Q=B(13)-B(6)-Q:IF C>8 THEN 875
|
|
855 K=J:IF K>6 THEN K=K-7
|
|
860 FOR I=0 TO N-1:IF F(N)*6+K=INT(F(I)/6^(7-C)+.1) THEN Q=Q-2
|
|
870 NEXT I
|
|
875 FOR I=0 TO 13:B(I)=G(I):NEXT I
|
|
880 IF Q>=D THEN A=J:D=Q
|
|
885 NEXT J
|
|
890 M=A:PRINT CHR$(42+M);:GOTO 200
|
|
900 FOR I=0 TO N-1:PRINT B(I):NEXT I
|
|
999 END
|