Checkers for Two

Developer(s): Tom Shields
Date: 1983
Type: Program
Platform(s): ZX81, TS 1000
Tags: Game

Checkers for two players. The board takes about 20 seconds to draw, with lettered rows and columns; a square at the bottom right shows whose turn it is. To move, type the letters of the starting square and the landing square, then 1 for a single move or the last jump of a multiple jump, or 2 for each earlier jump, then a space for a regular move or C to crown the piece, and ENTER. For example, FGEH1 followed by a space moves a piece from FG to EH. The program does not check moves, so make sure each one is right before you press ENTER; some wrong entries stop it with an error report, and you have to start again.

RUN saves the program first if you press S as soon as the board appears. The article says the game uses about 6K of RAM. One inverse character at the end of line 4485, the key at the bottom of the screen, cannot be read on the scan and is left out of the download.

Published in Syntax June 1983 (Checkers for Two).

Related Articles

Play this game just like board checkers.

Image Gallery

Source Code

   5 FAST
   6 LET A$="█"
   7 LET B$="▒"
   8 LET C$="*"
   9 LET D$="*"
  10 LET Z=0
  20 LET A=5
  21 LET B=7
  22 LET C=9
  23 LET D=11
  24 LET E=13
  25 LET F=15
  26 LET G=17
  27 LET H=19
  40 IF Z=0 THEN GOTO 3000
  50 SLOW
 100 PRINT AT 19,24;B$
 103 INPUT X$
 105 LET X$=X$(1 TO 6)
 116 PRINT AT VAL X$(1),VAL X$(2);" "
 117 IF X$(3)="H" OR X$(6)="C" THEN GOTO 200
 118 PRINT AT VAL X$(3),VAL X$(4);B$
 150 IF VAL X$(3)>VAL X$(1)+2 AND VAL X$(4)>VAL X$(2) THEN PRINT AT VAL X$(1)+2,VAL X$(2)+2;" "
 160 IF VAL X$(3)>VAL X$(1)+2 AND VAL X$(4)<VAL X$(2) THEN PRINT AT VAL X$(1)+2,VAL X$(2)-2;" "
 165 IF X$(5)="2" THEN GOTO 100
 195 GOTO 285
 200 PRINT AT VAL X$(3),VAL X$(4);C$
 205 IF VAL X$(3)<VAL X$(1)-2 AND VAL X$(2)<VAL X$(4) THEN PRINT AT VAL X$(1)-2,VAL X$(2)+2;" "
 210 IF VAL X$(3)<VAL X$(1)-2 AND VAL X$(2)>VAL X$(4) THEN PRINT AT VAL X$(1)-2,VAL X$(2)-2;" "
 220 IF VAL X$(3)>VAL X$(1)+2 AND VAL X$(4)>VAL X$(2) THEN PRINT AT VAL X$(1)+2,VAL X$(2)+2;" "
 230 IF VAL X$(3)>VAL X$(1)+2 AND VAL X$(4)<VAL X$(2) THEN PRINT AT VAL X$(1)+2,VAL X$(2)-2;" "
 280 IF X$(5)="2" THEN GOTO 100
 285 PRINT AT 19,24;A$
 288 INPUT O$
 290 LET O$=O$(1 TO 6)
 300 PRINT AT VAL O$(1),VAL O$(2);" "
 303 IF O$(3)="A" OR O$(6)="C" THEN GOTO 500
 305 PRINT AT VAL O$(3),VAL O$(4);A$
 400 IF VAL O$(3)<VAL O$(1)-2 AND VAL O$(2)<VAL O$(4) THEN PRINT AT VAL O$(1)-2,VAL O$(2)+2;" "
 410 IF VAL O$(3)<VAL O$(1)-2 AND VAL O$(2)>VAL O$(4) THEN PRINT AT VAL O$(1)-2,VAL O$(2)-2;" "
 415 IF O$(5)="2" THEN GOTO 285
 470 GOTO 100
 500 PRINT AT VAL O$(3),VAL O$(4);D$
 510 IF VAL O$(3)<VAL O$(1)-2 AND VAL O$(2)<VAL O$(4) THEN PRINT AT VAL O$(1)-2,VAL O$(2)+2;" "
 520 IF VAL O$(3)<VAL O$(1)-2 AND VAL O$(2)>VAL O$(4) THEN PRINT AT VAL O$(1)-2,VAL O$(2)-2;" "
 530 IF VAL O$(3)>VAL O$(1)+2 AND VAL O$(4)>VAL O$(2) THEN PRINT AT VAL O$(1)+2,VAL O$(2)+2;" "
 540 IF VAL O$(3)>VAL O$(1)+2 AND VAL O$(4)<VAL O$(2) THEN PRINT AT VAL O$(1)+2,VAL O$(2)-2;" "
 545 IF O$(5)="2" THEN GOTO 285
 550 GOTO 100
3000 PRINT AT 2,A;"A";TAB B;"B";TAB C;"C";TAB D;"D";TAB E;"E";TAB F;"F";TAB G;"G";TAB H;"H"
3010 PRINT AT A,2;"A";AT B,2;"B";AT C,2;"C";AT D,2;"D";AT E,2;"E";AT F,2;"F";AT G,2;"G";AT H,2;"H"
3020 LET Z=Z+1
3110 PRINT AT A,B;B$;TAB D;B$;TAB F;B$;TAB H;B$
3120 PRINT AT B,A;B$;TAB C;B$;TAB E;B$;TAB G;B$
3130 PRINT AT C,B;B$;TAB D;B$;TAB F;B$;TAB H;B$
3160 PRINT AT F,A;A$;TAB C;A$;TAB E;A$;TAB G;A$
3170 PRINT AT G,B;A$;TAB D;A$;TAB F;A$;TAB H;A$
3180 PRINT AT H,A;A$;TAB C;A$;TAB E;A$;TAB G;A$
4050 LET A=13
4055 LET B=40
4090 LET Y=3
4100 FOR X=A TO B STEP 8
4120 PLOT X,Y
4150 NEXT X
4155 LET Y=Y+1
4160 IF Y=7 OR Y=15 OR Y=23 THEN LET Y=Y+4
4165 IF Y=31 THEN LET A=A+1
4170 IF Y=31 THEN LET B=B+1
4173 IF Y=31 THEN LET Y=3
4175 IF A=17 THEN GOTO 4220
4200 GOTO 4100
4220 LET A=9
4230 LET B=36
4240 LET Y=7
4250 FOR X=A TO B STEP 8
4260 PLOT X,Y
4270 NEXT X
4280 LET Y=Y+1
4285 IF Y=11 OR Y=19 OR Y=27 THEN LET Y=Y+4
4290 IF Y=35 THEN LET A=A+1
4295 IF Y=35 THEN LET B=B+1
4300 IF Y=35 THEN LET Y=7
4310 IF A=13 THEN GOTO 4345
4320 GOTO 4250
4345 LET Y=2
4350 FOR X=8 TO 41
4355 PLOT X,Y
4358 IF X=41 AND Y=35 THEN GOTO 4400
4360 IF X=41 THEN LET Y=35
4380 NEXT X
4390 GOTO 4350
4400 LET X=8
4410 FOR Y=2 TO 35
4420 PLOT X,Y
4425 IF Y=35 AND X=41 THEN GOTO 4460
4430 IF Y=35 THEN LET X=41
4435 IF Y=35 THEN GOTO 4410
4450 NEXT Y
4460 PRINT AT 19,26;"PLAYS";AT 20,26;"NOW"
4465 PRINT AT 0,23;"TO MOVE";AT 1,25;"TYPE";AT 2,23;"CO-ORDS"
4470 PRINT AT 5,22;"HORZ-VERT";AT 6,25;"FROM";AT 8,22;"HORZ-VERT";AT 9,26;"TO"
4475 PRINT AT 11,22;"NOW 1, 2 IF";AT 12,22;"MULTI-MOVE";AT 14,22;"SPACE=REG.";AT 15,22;"C=CROWN"
4480 PRINT AT 17,22;"NOW ENTER"
4485 PRINT AT 21,0;""" ▄▄▄▄▄ [illegible]"""
4490 PRINT AT 0,0;"* AND * = CROWNS"
4570 PAUSE 500
4580 IF INKEY$="S" THEN SAVE "CHECK"
4585 LET Z=Z+1
4590 GOTO 20

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.