-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path23MATCHES.HPB
57 lines (57 loc) · 1.66 KB
/
23MATCHES.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
10 REM *** 23 MATCHES
12 REM *** PEOPLE'S COMPUTER COMPANY,MENLO PARK, CA
90 DIMA$(72)
100 REM *** PRINT THE INSTRUCTIONS
110 PRINT
120 PRINT "WE START WITH A PILE OF 23 MATCHES."
130 PRINT
140 PRINT "WE TAKE TURNS. ON EACH TURN WE CAN REMOVE"
150 PRINT "1, 2, OR 3 MATCHES FORM THE PILE."
160 PRINT "THE ONE WHO HAS TO TAKE THE LAST MATCH LOSES."
170 PRINT
180 PRINT "YOU GO FIRST. ";
190 PRINT "MAY THE BEST COMPUTER (HA HA) WIN."
200 REM *** INITIALIZE THE NUMBER OF MATCHES
210 M=23
220 PRINT
230 PRINT "THERE ARE NOW 23 MATCHES."
300 REM *** THE HUMAN MOVES
310 PRINT "HOW MANY DO YOU TAKE";
320 INPUT H
330 REM *** CHECK IF H = 1, 2, OR 3
340 H=INT(H)
350 IF (H<1) OR (H>3) THEN 800
360 REM *** ADJUST # MATCHES LEFT
370 M=M-H
380 REM *** CHECK IF THE HUMAN LOST
390 IF M <= 0 THEN 850
500 REM *** THE COMPUTER MOVES
510 IF M=0 THEN 880
520 REM *** TRY TO LEAVE 4K + 1 MATCHES
530 R=M-4*INT(M/4)
540 IF R=1 THEN THERE IS NO 'GOOD' MOVE
550 IF R=1 THEN 590
560 REM *** IF R=1 THEN THE WINNING MOVE IS (R+3) MOD 4
570 C=(R+3)-4*(INT(R+3)/4)
580 GOTO 610
590 REM *** MAKE A RANDOM MOVE
600 C=INT(3*RND(0))+1
610 REM *** THE COMPUTER MOVES
620 PRINT "I TOOK";C;
630 REM *** ADJUST # MATCHES LEFT AND PRINT IT
640 M=M-C
650 PRINT ". . . THERE ARE NOW";M;"MATCHES."
660 PRINT
670 GOTO 380
800 REM *** THE HUMAN CHEATED
810 PRINT "YOU CHEATED, BUT I'LL GIVE YOU ANOTHER CHANCE."
820 GOTO 300
850 REM *** THE COMPUTER ONE
860 PRINT "I WON! BETTER LUCK NEXT TIME."
870 GOTO 900
880 PRINT "O.K. SO YOU WON (LUCKY) . . ."
900 REM *** PLAY AGAIN?
910 PRINT "DO YOU WANT TO PLAY AGAIN (YES OR NO)";
920 INPUT A%
930 IF A$[1,1]="Y" THE 200
999 END