-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathZOT.HPB
74 lines (74 loc) · 4.01 KB
/
ZOT.HPB
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
1 REM *** THE GAME OF ZOT
2 REM *** PEOPLE'S COMPUTER COMPANY : AUGUST 4, 1974 (ABDICATION DAY)
3 REM *** PROGRAMED BY : MARC LE BRUN
100 REM *** PROGRAM STRUCTURE
110 REM ***
120 REM *** AT THE START OF THE RUN THE BOARD (B) AND STRINGS FOR
130 REM *** THE SIDE OT MOVE FROM (S$) THE NAMES OF THE COMPASS
140 REM *** DIRECTIONS (D$) AND ARBITRARY ANSWERS (A$) ARE
150 REM *** DIMENSIONED AT LINE 700. INSTRUCTIONS ARE PRINTED
160 REM *** BY THE BLOCK OF LINES BEGINNING AT LINE 800.
200 REM *** THE GAME PROPER BGINS AT LINE 1000. WHERE THE NUMBER OF
210 REM *** ROWS AND COLUMNS (0<R,C<11) ARE INPUT. THE BOARD B IS
220 REM *** FILLED WITH STARS (=1) , THE AUXILLIARY VALUES R1 AND C1
230 REM *** (USED IN VARIOUS CONDITIONALS) ARE INITIALIZED, AS ARE
240 REM *** THE TOTAL NUMBER OF STARS IN THE BOARD (N) AND THE PLAYER
250 REM *** WHOSE TURN IT IS (P).
260 REM *** THE LOOP TRAVERSED FOR EACH MOVE BEGINS AT LINE 2000.
270 REM *** FIRST THE BOARD IS PRINTED. THE THE SECTION FOR FETCH-
280 REM *** ING THE ACTUAL MOVE IS ENTERED (AT LINE 3000).THE SIDE
290 REM *** OF THE BOARD (S) IS INPUT, CHECKED, AND CONVERTED TO A
300 REM *** NUMERICAL INDEX (D). THEN THE MOVE ROW & COLUMN (I0,J0)
310 REM *** ARE FETCHED AND CHECKED. A SOMEWHAT COMPLICATED SECTION
320 REM *** FOR CHECKING AND EXECUTING THE ZOT IS BEGUN AT 4000.
330 REM *** THE BASIC PROCEDURE IS TO BEGIN AT THE SPECIFICED ROW &
340 REM *** COLUMN AND SCAN OUTWARD (WITH CO-ORDINATE INDICIES I & J)
350 REM *** TO THE SIDE OF THE BOARD SPECIFIED BY D. THIS IS ACCOMP-
360 REM *** LISHED BY USING TWO INCREMEBTS I1 & J1. ONE OF THESE IS
370 REM *** ZERO AND THE OTHER + OR - 1, DEPENDING ON THE DIRECTION
380 REM *** OF THE ZOT. I1 & J1 ARE DERIVED BY BLACK MAGIC FROM D
390 REM *** VIA THE TEMPORARY VARIABLES D0 AND S, WHICH PLAY NO FUR-
400 REM *** THER ROLE IN THE ALGORITHM.
410 REM *** IN THE INITIAL SCAN A SWITCH (S0) =1 INDICATES
420 REM *** CANNING OVER STARS, =0 SCANNING OVER SPACE. THE TRANSI-
430 REM *** TION (OF S0) 1->0 IS LEGAL (TO ALLOW ZOTTING OVER LEADING
440 REM *** SPACES). A 0->1 TRANSITION INDICATES THAT THE STARS ARE
450 REM *** NOT CONSECUTIVE. A COUNTER (C0) OF THE NUMBER OF STARS
460 REM *** SCANNED IS KEPT TO #1 SIMPLIFY THEIR REMOVAL IF THE
470 REM *** ZOT IS LEGAL AND #2 TO DETECT A ZOT CONTAINING NO STARS
480 REM *** (WHICH CONDITION IS NOT CAUGHT BY THE S0 'TRANSITIONS')
490 REM *** IF THE MOVE PASSES ALL THESE TESTS THE INITIAL C0 POSI-
500 REM *** TIONS ARE RESCANNED (WITH THE HELP OF A DUMMY INDEX K)
510 REM *** AND SET TO ZERO. THEN N IS UPDATED, IF IT'S ZERO THE LAST
520 REM *** STAR HAS BEEN SOTTED AND WE ENTER A TERMINAL DIALOG. IF
530 REM *** THE GAME'S STILL AFOOR WE SETUP FOR THE NEXT PLAYER AND
540 REM *** RE-ENTER THE LOOP FROM THE TOP (I.E. LINE 2000).
550 REM ***
560 REM *** AT LINE 5000 A SUBROUTINE THAT INSISTS ON A YES OR NO
570 REM *** REPLY BEGINS. A IS SET TO 1 FOR 'YES', 0 FOR 'NO'.
580 REM ***
590 REM *** THESE REMARKS SHOULD SIMPLIFY UNTANGLING THE CODE.
600 REM *** HOWEVER, BASICK IS HARDLY A TRANSPARENT LANGUAGE.
610 REM *** THIS CODE IS DESIGNED TO BE SIMPLE AND COMPREHENSIBLE,
620 REM *** NOT 'EFFICIENT' (WHATEVER THAT MEANS) !!!
630 REM ***
700 REM *** ONE ONLY INITIALIZATIONS
710 DIM B(10,10),S$(1),D$(4),A$(72)
720 D$="NSWE"
730 PRINT
740 PRINT "*** THE GAME OF ZOT ***"
750 PRINT
760 PRINT "DO YOU WANT INSTRUCTIONS ";
770 GOSUB 5000
780 PRINT
790 IF A=0 THEN 1000
800 REM *** INSTRUCTIONS
810 PRINT "IN THE GAME OF ZOT THE TWO (HUMAN) PLAYERS COMPETE TO GET"
820 PRINT "THE LAST BITE OF A RECTANGULAR COOKIE. A MOVE, CALLED A"
830 PRINT "'ZOT', CONSISTS OF TAKING ALL THE STARS IN A LINE BETWEEN"
840 PRINT "A GIVEN SIDE OF THE BOARD AND A PARTICULAR STAR. THE SIDES"
850 PRINT "OF THE BOARD ARE NAMED N,E,S & W (FOR NORTH, EAST ETC.)"
860 PRINT "LIKE ON A MAP. THE POSITION OF THE STAR IS GIVEN BY THE"
870 PRINT "ROW AND COLUMN IT'S IN. FOR EXAMPLE, IF THE FIRST MOVE"
880 PRINT "ON A 5 BY 5 (ROWS BY COLUMNS) BOARD WERE ' E,3,2 ' THE RE-"
890 PRINT "SULTING BOARD WOULD BE :"