Checkers for Two

Author(s): Tom Shields
Publication: Syntax
Pub Details: Syntax/Syntax ZX80 v4 n6 (Volume 4, Issue 6)
Date: June 1983
Pages: 8-10

Play this game just like board checkers. To automatically SAVE the program, type in the listing, start the recorder and press RUN then ENTER. The checkerboard takes about 20 seconds to appear. Press S as soon as the board appears (before the display blinks and the “L” input appears). The program saves under “CHECK.”

At the bottom, a square shows which player moves next. Moving a piece takes 4 steps. First, type the coordinates (first horizontal, then vertical) of the starting and landing squares for each move. Second, press either 1 or 2. Press 1 for single moves and final jumps of multiple moves. Press 2 for all but the last jump of multiple moves (You must enter each jump of a multiple move separately). Third, hit space for a regular move or type C to crown your piece when you get to your opponent’s baseline. Last, ENTER the move. For example: type FGEH1 ENTER to move a black checker from space FG to space EH one single move (shown by 1) without a crown (shown by the space).

Make sure your move is correct before ENTERing. The program stops with an error code after some wrong entries forcing you to reset to the beginning of the game.

CHECKERS uses about 6K RAM.

   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
SYNTACTIC SUM: 31686, 8K ROM

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