Thwart

Developer(s): Gene G. Buza
Date: September 1983
Type: Program
Platform(s): TS 1000

Appears on

Cassette to accompany the September 1983 issue of Synchro-Sette.

Source Code

   5 FAST 
   6 LET FM=0
  10 DIM A$(28)
  20 LET A=.689655
  30 POKE 16418,0
  40 DIM A(14)
  50 DIM B(14)
  60 DIM C(14)
  70 DIM D(14)
  80 LET X=PEEK 16396+256*PEEK 16397
  81 LET A(11)=104+X
  82 LET B(11)=111+X
  83 LET C(11)=118+X
  84 LET D(11)=125+X
  85 LET A(12)=269+X
  86 LET B(12)=276+X
  87 LET C(12)=283+X
  88 LET D(12)=290+X
  89 LET A(13)=434+X
  90 LET B(13)=441+X
  91 LET C(13)=448+X
  92 LET D(13)=455+X
  93 LET A(14)=599+X
  94 LET B(14)=606+X
  95 LET C(14)=613+X
  96 LET D(14)=620+X
  99 LET Z$="% "
 100 GOSUB 1000
 110 PRINT AT 22,0;"WHO GOES FIRST",,"HUMAN(1) OR COMPUTER (2)?";AT 23,6;"%1";AT 23,22;"%2"
 115 SLOW 
 120 LET B$=INKEY$
 130 IF CODE B$<29 OR CODE B$>30 THEN GOTO 110
 140 PRINT AT 22,0;A$;AT 23,0;A$
 150 IF B$="2" THEN PRINT AT 22,0;"OK HUMAN, I\ 'LL GO FIRST :::";
 160 IF B$="1" THEN PRINT AT 22,0;"GO AHEAD HUMAN, YOU\ 'LL LOSE";AT 23,0;"ANYWAY :::"
 170 FOR N=1 TO 50
 180 NEXT N
 190 PRINT AT 22,0;A$;AT 23,0;A$
 200 GOTO 2000
 999 GOTO 999
1010 CLS 
1020 FOR N=0 TO 28
1030 PRINT AT 0,N;Z$;AT A*N,0;Z$;AT 5,N;Z$;AT A*N,7;Z$;AT 10,N;Z$;AT A*N,14;Z$;AT 15,N;Z$;AT A*N,21;Z$;AT 20,N;Z$;AT A*N,28;Z$
1040 NEXT N
1050 PRINT AT 1,1;"A1";AT 1,8;"B1";AT 1,15;"C1";AT 1,22;"D1"
1060 PRINT AT 6,1;"A2";AT 6,8;"B2";AT 6,15;"C2";AT 6,22;"D2"
1070 PRINT AT 11,1;"A3";AT 11,8;"B3";AT 11,15;"C3";AT 11,22;"D3"
1080 PRINT AT 16,1;"A4";AT 16,8;"B4";AT 16,15;"C4";AT 16,22;"D4"
1090 FOR N=0 TO 20
1100 PRINT AT N,0;"\ :";AT N,28;"\: "
1110 NEXT N
1120 PRINT AT 0,29;"\''% \''";AT 1,30;"% ";AT 2,30;"% ";AT 4,29;"\:  \ :";AT 5,29;"% % % ";AT 6,29;"\:  \ :";AT 8,29;"\:  \ :";AT 9,29;"\: \..\ :";AT 10,29;"\': \:'";AT 12,29;"\.'\''\'.";AT 13,29;"\:.\..\.:";AT 14,29;"\:  \ :";AT 16,29;"\:'\''\'.";AT 17,29;"\:.\..\.'";AT 18,29;"\:  \'.";AT 20,29;"\''% \''";AT 21,30;"% ";AT 22,30;"% "
1999 RETURN 
2000 IF B$="1" THEN GOTO 2020
2001 REM % %C%O%M%P%U%T%E%R% %F%I%R%S%T% %M%O%V%E% 
2002 LET P$=CHR$ (INT (2*RND)+39)
2003 LET FM=1
2004 GOTO 2007
2005 REM % %C%O%M%P%U%T%E%R% %M%O%V%E% 
2006 LET P$=""
2007 LET SC=10
2008 LET CD=128
2009 IF P$<>"" THEN GOTO 2017
2010 IF FM<=2 THEN GOSUB 9000
2011 IF P$<>"" AND FM<=3 THEN GOTO 2018
2012 GOSUB 6000
2013 IF P$<>"" THEN GOTO 2017
2014 GOSUB 4000
2015 IF P$<>"" THEN GOTO 2018
2016 GOSUB 6300
2018 GOSUB 7000
2019 GOSUB 7500
2027 REM % %H%U%M%A%N% %M%O%V%E% 
2028 PRINT AT 22,0;"YOUR MOVE, HUMAN :::"
2029 LET B$=""
2030 LET CD=136
2035 LET FM=FM+1
2040 LET SC=1
2050 LET P$=INKEY$
2060 IF CODE P$<38 OR CODE P$>41 THEN GOTO 2050
2065 PRINT AT 22,0;A$
2070 GOSUB 7000
2075 GOSUB 8000
2080 GOTO 2005
4000 REM % %H%U%M%A%N% %A%C%R%O%S%S% 
4001 IF A(4)+B(4)=2 AND C(4)=0 THEN LET P$="C"
4002 IF C(4)+B(4)=2 AND A(4)=0 THEN LET P$="A"
4003 IF C(4)+B(4)=2 AND D(4)=0 THEN LET P$="D"
4004 IF C(4)+D(4)=2 AND B(4)=0 THEN LET P$="B"
4005 IF B(4)+D(4)=2 AND C(4)=0 THEN LET P$="B"
4006 IF A(4)+C(4)=2 AND B(4)=0 THEN LET P$="B"
4007 IF P$<>"" THEN RETURN 
4010 FOR N=3 TO 1 STEP -1
4015 IF B(N)=0 AND B(N+1)<>0 AND A(N)+C(N)=2 THEN LET P$="B"
4020 IF A(N)=0 AND A(N+1)<>0 AND B(N)+C(N)=2 THEN LET P$="A"
4025 IF C(N)=0 AND C(N+1)<>0 AND B(N)+D(N)=2 THEN LET P$="C"
4030 IF B(N)=0 AND B(N+1)<>0 AND C(N)+D(N)=2 THEN LET P$="B"
4040 IF C(N)=0 AND C(N+1)<>0 AND A(N)+B(N)=2 THEN LET P$="C"
4050 IF D(N)=0 AND D(N+1)<>0 AND C(N)+B(N)=2 THEN LET P$="D"
4060 NEXT N
4070 IF P$<>"" THEN RETURN 
4080 REM % %C%H%E%C%K% %H%U%M%A%N% %U%P%/%D%O%W%N% 
4090 FOR N=2 TO 1 STEP -1
4100 IF A(N+1)+A(N+2)=2 AND A(N)=0 THEN LET P$="A"
4110 IF B(N+1)+B(N+2)=2 AND B(N)=0 THEN LET P$="B"
4120 IF C(N+1)+C(N+2)=2 AND C(N)=0 THEN LET P$="C"
4130 IF D(N+1)+D(N+2)=2 AND D(N)=0 THEN LET P$="D"
4140 NEXT N
4150 IF P$<>"" THEN RETURN 
4160 REM % %C%H%E%C%K% %H%U%M%A%N% %D%I%A%G%O%N%A%L% 
4165 LET NI=0
4170 IF (A(3)+B(2)=2) AND (C(2)<>0) THEN LET P$="C"
4175 IF A(4)+C(2)=2 AND B(4)<>0 AND B(3)=0 THEN LET P$="B"
4180 IF (B(3)+C(2)=2) AND (D(2)<>0) AND D(1)=0 THEN LET P$="D"
4181 IF (B(3)+D(1)=2) AND (C(2)=0) AND C(3)<>0 THEN LET P$="C"
4182 IF (C(2)+D(1)=2) AND (B(3)=0) AND B(4)<>0 THEN LET P$="B"
4183 IF P$<>"" THEN RETURN 
4185 IF A(3)+C(1)=2 AND B(3)<>0 AND B(2)=0 THEN LET P$="B"
4186 IF A(3)+B(2)=2 AND C(2)<>0 AND C(1)=0 THEN LET P$="C"
4187 IF C(1)+B(2)=2 AND A(4)<>0 AND A(3)=0 THEN LET P$="A"
4188 IF P$<>"" THEN RETURN 
4190 IF (A(4)+B(3)=2) AND (C(3)<>0) AND C(2)=0 THEN LET P$="C"
4191 IF (A(4)+C(2)=2) AND (B(4)<>0) AND B(3)=0 THEN LET P$="B"
4192 IF P$<>"" THEN RETURN 
4195 IF B(4)+D(2)=2 AND C(4)<>0 AND C(3)=0 THEN LET P$="C"
4196 IF B(4)+C(3)=2 AND D(3)<>0 AND D(2)=0 THEN LET P$="D"
4197 IF D(2)+C(3)=2 AND B(4)=0 THEN LET P$="B"
4198 IF P$<>"" THEN RETURN 
4210 IF (C(4)+B(3)=2) AND (A(3)<>0) AND A(2)=0 THEN LET P$="A"
4211 IF (C(4)+A(2)=2) AND (B(4)<>0) AND B(3)=0 THEN LET P$="B"
4212 IF (B(3)+A(2)=2) AND (C(4)=0) THEN LET P$="C"
4213 IF P$<>"" THEN RETURN 
4215 IF B(2)+D(4)=2 AND C(4)<>0 AND C(3)=0 THEN LET P$="C"
4216 IF B(2)+C(3)=2 AND D(4)=0 THEN LET P$="D"
4217 IF D(4)+C(3)=2 AND B(2)=0 AND B(3)<>0 THEN LET P$="B"
4218 IF P$<>"" THEN RETURN 
4225 IF B(1)+D(3)=2 AND C(3)<>0 AND C(2)=0 THEN LET P$="C"
4226 IF B(1)+C(2)=2 AND D(4)<>0 AND D(3)=0 THEN LET P$="D"
4227 IF D(3)+C(2)=2 AND B(2)<>0 AND B(1)=0 THEN LET P$="B"
4228 IF P$<>"" THEN RETURN 
4230 IF (C(3)+B(2)=2) AND (A(2)<>0) AND A(1)=0 THEN LET P$="A"
4231 IF (C(3)+A(1)=2) AND (B(3)<>0) AND B(2)=0 THEN LET P$="B"
4232 IF (B(2)+A(1)=2) AND (C(4)<>0) AND C(3)=0 THEN LET P$="C"
4250 IF P$<>"" THEN RETURN 
4300 FOR N=3 TO 1 STEP -1
4310 IF A(N)+B(N)=2 AND C(N+1)=0 AND P$="C" THEN GOTO 4500
4320 IF A(N)+C(N)=2 AND B(N+1)=0 AND P$="B" THEN GOTO 4500
4330 IF B(N)+C(N)=2 AND A(N+1)=0 AND P$="A" THEN GOTO 4500
4340 IF B(N)+C(N)=2 AND D(N+1)=0 AND P$="D" THEN GOTO 4500
4350 IF C(N)+D(N)=2 AND B(N+1)=0 AND P$="B" THEN GOTO 4500
4360 IF B(N)+D(N)=2 AND C(N+1)=0 AND P$="C" THEN GOTO 4500
4370 NEXT N
4380 IF P$<>"" THEN RETURN 
4500 REM % %F%I%N%D% %R%A%N%D%O%M% %B%O%X% 
4510 LET P$=CHR$ (38+INT (RND*4))
4520 IF NI>4 THEN RETURN 
4530 LET NI=NI+1
4540 GOTO 4300
6000 REM % %C%O%M%P%U%T%E%R\:.%S% %M%O%V%E% 
6001 LET RI=0
6005 LET CT=A(1)+A(2)+A(3)+A(4)+B(1)+B(2)+B(3)+B(4)+C(1)+C(2)+C(3)+C(4)+D(1)+D(2)+D(3)+D(4)
6010 IF CT>77 THEN GOTO 7060
6015 LET P$=""
6016 REM % %C%O%M%P%U%T%E%R% %W%I%N% %A%C%R%O%S%S% 
6020 FOR N=4 TO 1 STEP -1
6030 IF C(N)=0 AND A(N)+B(N)=20 THEN LET P$="C"
6040 IF A(N)=0 AND B(N)+C(N)=20 THEN LET P$="A"
6060 IF B(N)=0 AND C(N)+D(N)=20 THEN LET P$="B"
6070 IF D(N)=0 AND B(N)+C(N)=20 THEN LET P$="D"
6080 NEXT N
6090 IF P$<>"" THEN GOTO 6991
6095 REM % %C%O%M%P%U%T%E%R% %W%I%N% %D%O%W%N% 
6100 FOR N=1 TO 2
6110 IF A(N+2)+A(N+1)=20 AND A(N)=0 THEN LET P$="A"
6120 IF B(N+2)+B(N+1)=20 AND B(N)=0 THEN LET P$="B"
6130 IF C(N+2)+C(N+1)=20 AND C(N)=0 THEN LET P$="C"
6140 IF D(N+2)+D(N+1)=20 AND D(N)=0 THEN LET P$="D"
6145 IF P$<>"" THEN GOTO 6991
6147 REM % %C%O%M%P%U%T%E%R% %W%I%N% %D%I%A%G%O%N%A%L% 
6150 IF (A(2)+B(3)=20) AND (C(1)=0) THEN LET P$="C"
6151 IF (A(2)+C(4)=20) AND (B(3)=0) AND (B(4)<>0) THEN LET P$="B"
6152 IF (B(3)+C(4)=20) AND (A(2)=0) AND (A(3)<>0) THEN LET P$="A"
6155 IF (A(4)+C(2)=20) AND (B(4)<>0) AND B(3)=0 THEN LET P$="B"
6156 IF (A(4)+B(3)=20) AND (C(3)<>0) AND C(2)=0 THEN LET P$="C"
6157 IF (C(2)+B(3)=20) AND (A(1)<>0) THEN LET P$="A"
6160 IF (B(4)+C(3)=20) AND (D(3)<>0) AND D(2)=0 THEN LET P$="D"
6161 IF (B(4)+D(2)=20) AND (C(4)<>0) AND C(3)=0 THEN LET P$="C"
6162 IF (C(3)+D(2)=20) AND (B(4)=0) THEN LET P$="B"
6165 IF (B(4)+C(3)=20) AND (D(3)<>0) AND (D(2)=0) THEN LET P$="D"
6166 IF (D(2)+C(3)=20) AND (B(4)=0) THEN LET P$="B"
6167 IF (B(4)+D(2)=20) AND (C(4)<>0) AND (C(3)=0) THEN LET P$="C"
6170 IF (D(4)+C(3)=20) AND (B(3)<>0) AND (B(2)=0) THEN LET P$="B"
6171 IF (D(4)+B(2)=20) AND (C(4)<>0) AND (C(3)=0) THEN LET P$="C"
6172 IF (C(3)+B(2)=20) AND (D(4)=0) THEN LET P$="D"
6175 IF (A(3)+B(2)=20) AND (C(2)<>0) AND (C(1)=0) THEN LET P$="C"
6176 IF (A(3)+C(1)=20) AND (B(3)<>0) AND (B(2)=0) THEN LET P$="B"
6177 IF (B(2)+C(1)=20) AND (A(4)<>0) AND (A(3)=0) THEN LET P$="A"
6180 IF (B(3)+C(2)=20) AND (D(2)<>0) AND (D(1)=0) THEN LET P$="D"
6181 IF (B(3)+D(1)=20) AND (C(3)<>0) AND (C(2)=0) THEN LET P$="C"
6182 IF (C(2)+D(1)=20) AND (B(4)<>0) AND (B(3)=0) THEN LET P$="B"
6185 IF (D(3)+B(1)=20) AND (C(3)<>0) AND (C(2)=0) THEN LET P$="C"
6186 IF (D(3)+C(2)=20) AND (B(2)<>0) AND (B(1)=0) THEN LET P$="B"
6187 IF (B(1)+C(2)=20) AND (D(2)<>0) AND (D(3)=0) THEN LET P$="D"
6190 IF (C(3)+A(1)=20) AND (B(3)<>0) AND (B(2)=0) THEN LET P$="B"
6191 IF (C(3)+B(2)=20) AND (A(2)<>0) AND (A(1)=0) THEN LET P$="A"
6192 IF (A(1)+B(2)=20) AND (C(2)<>0) AND (C(3)=0) THEN LET P$="C"
6200 RETURN 
6300 IF P$="" THEN LET P$=CHR$ (38+INT (RND*4))
6305 LET RI=0
6310 FOR N=3 TO 1 STEP -1
6320 IF A(N)+B(N)=2 AND C(N+1)=0 AND P$="C" THEN GOTO 6500
6325 IF B(N)+D(N)=2 AND C(N+1)=0 AND P$="C" THEN GOTO 6500
6330 IF C(N)+B(N)=2 AND A(N+1)=0 AND P$="A" THEN GOTO 6500
6335 IF C(N)+A(N)=2 AND B(N+1)=0 AND P$="B" THEN GOTO 6500
6340 IF C(N)+D(N)=2 AND B(N+1)=0 AND P$="B" THEN GOTO 6500
6345 IF C(N)+B(N)=2 AND D(N+1)=0 AND P$="D" THEN GOTO 6500
6350 NEXT N
6360 GOTO 6990
6500 LET P$=CHR$ (38+INT (RND*4))
6510 IF RI>4 THEN GOTO 6991
6520 LET RI=RI+1
6530 GOTO 6310
6991 LET CD=128
6992 LET SC=10
6993 RETURN 
7000 REM % %F%I%N%D% %L%E%V%E%L% 
7001 LET CT=A(1)+A(2)+A(3)+A(4)+B(1)+B(2)+B(3)+B(4)+C(1)+C(2)+C(3)+C(4)+D(1)+D(2)+D(3)+D(4)
7005 IF CT>77 THEN GOTO 7060
7010 IF P$="A" THEN GOTO 7100
7020 IF P$="B" THEN GOTO 7200
7030 IF P$="C" THEN GOTO 7300
7040 IF P$="D" THEN GOTO 7400
7060 PRINT AT 22,0;"YOUR LUCKY. IT\ 'S A DRAW ::"
7070 GOTO 7810
7100 IF A(1)<>0 THEN GOTO 7200
7105 REM % %F%I%N%D%S% %B%O%X% 
7110 FOR N=1 TO 4
7120 IF A(N)<>0 THEN GOTO 7140
7130 NEXT N
7140 POKE A(N+9),CD
7150 LET A(N-1)=SC
7160 RETURN 
7200 IF B(1)<>0 THEN GOTO 7300
7210 FOR N=1 TO 4
7220 IF B(N)<>0 THEN GOTO 7240
7230 NEXT N
7240 POKE B(N+9),CD
7250 LET B(N-1)=SC
7260 RETURN 
7300 IF C(1)<>0 THEN GOTO 7400
7310 FOR N=1 TO 4
7320 IF C(N)<>0 THEN GOTO 7340
7330 NEXT N
7340 POKE C(N+9),CD
7350 LET C(N-1)=SC
7360 RETURN 
7400 IF D(1)<>0 THEN GOTO 7100
7410 FOR N=1 TO 4
7420 IF D(N)<>0 THEN GOTO 7440
7430 NEXT N
7440 POKE D(N+9),CD
7450 LET D(N-1)=SC
7460 RETURN 
7500 REM % %C%O%M%P%U%T%E%R% %W%I%N% %U%P%/%D%O%W%N% 
7505 FOR N=1 TO 2
7510 IF A(N)+A(N+1)+A(N+2)=30 THEN GOTO 7800
7520 IF B(N)+B(N+1)+B(N+2)=30 THEN GOTO 7800
7530 IF C(N)+C(N+1)+C(N+2)=30 THEN GOTO 7800
7540 IF D(N)+D(N+1)+D(N+2)=30 THEN GOTO 7800
7542 NEXT N
7545 REM % %C%O%M%P%U%T%E%R% %W%I%N% %A%C%R%O%S%S% 
7550 FOR N=1 TO 4
7560 IF A(N)+B(N)+C(N)=30 THEN GOTO 7800
7570 IF B(N)+C(N)+D(N)=30 THEN GOTO 7800
7580 NEXT N
7585 REM % %C%O%M%P%U%T%E%R% %W%I%N% %D%I%A%G%O%N%A%L% 
7590 IF (A(1)+B(2)+C(3)=30) OR (A(2)+B(3)+C(4)=30) OR (A(4)+B(3)+C(2)=30) OR (B(3)+C(2)+D(1)=30) THEN GOTO 7800
7600 IF (B(2)+C(3)+D(4)=30) OR (B(1)+C(2)+D(3)=30) OR (A(3)+B(2)+C(1)=30) OR (B(4)+C(3)+D(2)=30) THEN GOTO 7800
7799 RETURN 
7800 REM % %C%O%M%P%U%T%E%R% %W%I%N% 
7805 PRINT AT 22,0;"I WIN (OF COURSE)";AT 23,0;"PRESS ENTER FOR A NEW GAME.";
7810 PAUSE 40000
7820 CLS 
7830 RUN 
8000 REM % %H%U%M%A%N% %W%I%N% %U%P%/%D%O%W%N% 
8005 FOR N=1 TO 2
8010 IF A(N)+A(N+1)+A(N+2)=3 THEN GOTO 8500
8020 IF B(N)+B(N+1)+B(N+2)=3 THEN GOTO 8500
8030 IF C(N)+C(N+1)+C(N+2)=3 THEN GOTO 8500
8040 IF D(N)+D(N+1)+D(N+2)=3 THEN GOTO 8500
8045 REM % %H%U%M%A%N% %W%I%N% %A%C%R%O%S%S% 
8050 FOR N=1 TO 4
8060 IF A(N)+B(N)+C(N)=3 THEN GOTO 8500
8070 IF B(N)+C(N)+D(N)=3 THEN GOTO 8500
8080 NEXT N
8085 REM % %H%U%M%A%N% %W%I%N% %D%I%A%G%O%N%A%L% 
8090 IF (A(1)+B(2)+C(3)=3) OR (A(2)+B(3)+C(4)=3) OR (A(4)+B(3)+C(2)=3) OR (B(3)+C(2)+D(1)=3) THEN GOTO 8500
8100 IF (B(2)+C(3)+D(4)=3) OR (B(1)+C(2)+D(3)=3) OR (A(3)+B(2)+C(1)=3) OR (B(4)+C(3)+D(2)=3) THEN GOTO 8500
8499 RETURN 
8500 REM % %H%U%M%A%N% %W%I%N% 
8505 PRINT AT 22,0;"WHAT LUCK, IT WON\ 'T HAPPEN AGAIN";AT 23,0;"PRESS ENTER FOR A NEW GAME.";
8510 GOTO 7810
9000 IF B(4)=1 THEN LET P$="C"
9010 IF C(4)=1 THEN LET P$="B"
9020 IF P$<>"" THEN GOTO 9498
9030 IF B(4)=10 AND C(4)=0 AND D(4)=0 AND A(4)=0 THEN LET P$="C"
9040 IF C(4)=10 AND B(4)=0 AND D(4)=0 AND A(4)=0 THEN LET P$="B"
9050 IF P$<>"" THEN GOTO 9498
9100 IF B(4)=10 AND B(3)=0 THEN LET P$="B"
9110 IF C(4)=10 AND C(3)=0 THEN LET P$="C"
9120 IF P$<>"" THEN GOTO 9498
9130 IF A(4)=1 AND B(4)=0 THEN LET P$="B"
9140 IF D(4)=1 AND C(4)=0 THEN LET P$="C"
9150 IF P$<>"" THEN GOTO 9498
9160 IF B(4)=10 AND B(3)=0 THEN LET P$="B"
9170 IF C(4)=10 AND C(3)=0 THEN LET P$="C"
9498 LET FM=FM+1
9499 RETURN 
9998 SAVE "THWAR%T"
9999 RUN 
Scroll to Top