-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathABASE.HPB
118 lines (118 loc) · 2.8 KB
/
ABASE.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
10 REM-ABASE-A NUMBER GUESSING GAME
20 REM-PETER KATE, 10/5/73, RAVENSWOOD
30 DIM A$[15],B$[15]
40 L=8
50 REM THE NUMBER OF GUESSES CAN BE CHANGED BY CHANGING 'L' IN LINE 40
60 PRINT "THIS IS A NUMBER GUESSING GAME USING DIFFERENT BASES"
70 PRINT "YOU TELL THE COMPUTER WHAT BASE YOU WANT TO PLAY IN."
80 PRINT "THE COMPUTER WILL SELECT A NUMBER IN YOUR BASE"
90 PRINT "AND YOU TRY TO GUESS THE NUMBER."
100 PRINT "THE COMPUTER WILL TELL YOU IF YOUR GUESS IS TOO HIGH,"
110 PRINT "TOO LOW, OR IN THE WRONG BASE."
120 PRINT "YOU WILL HAVE""L" TRIES TO GUESS THE NUMBER."
130 PRINT
140 PRINT "WHAT BASE DO YOU WISH TO PLAY IN";
150 INPUT Z
160 IF Z<11 AND Z>1 AND Z=INT(Z) THEN 200
170 PRINT "PLEASE TRY A BASE BETWEEN 2 AND 10"
180 GOTO 140
190 REM THE COMPUTER PICKS A NUMBER
200 P=INT(100*RND(0))+1
210 X=0
220 A=1
230 IF P<Z^A THEN 260
240 A=A+1
250 GOTO 230
260 A=A-1
270 IF A=0 THEN 390
280 B=1
290 J=B*Z^A
300 IF J>B THEN 330
310 B=B+1
320 GOTO 290
330 B=B-1
340 J=B*Z^A
350 Y=B*10^A
360 X=X+Y
370 P=P-J
380 GOTO 260
390 Z1=Z-1
410 RESTORE
420 FOR C=1 TO Z1
430 READ d
440 NEXT C
450 G=1
460 F=D
470 GOSUB 990
480 PRINT "O.K. I HAVE A NUMBER IN MIND BETWEEN 1 AND"A$" BASE"Z
490 PRINT TAB(10);"---- GUESS #"G;
500 INPUT Y
510 IF Y>D OR Y<1 THEN 800
520 R=0
530 Q=Y
540 GOSUB 840
550 IF r=1 THEN 780
560 IF Y=E THEN 650
570 G=G+1
580 IF G=L+1 THEN 740
590 REM THE COMPUTER FINDS OUT IF YOUR NUMBER IS TOO HIGH OR TOO LOW
600 IF Y>E THEN 630
610 PRINT TAB(5);"TOO LOW. GUESS #"G;
620 GOTO 500
630 PRINT TAB(5);"TOO HIGH. GUESS #"G;
640 GOTO 500
650 IF G=1 THEN 720
660 PRINT "RIGHT!! IT TOOK YOU "G" GUESSES."
670 PRINT "DO YOU WANT TO PLAY AGAIN";
680 INPUT R$[1,1]
690 IF R$[1,1]="N" THEN 1130
700 PRINT
710 GOTO 140
720 PRINT "WOW!! YOU GOT IT IN 1 GUESS!!"
730 GOTO 670
740 F=E
750 GOSUB 990
760 PRINT "YOU LOSE, BUCKWHEAT! THE NUMBER IN BASE"Z" WAS "B$
770 GOTO 670
780 PRINT "THERE IS NO SUCH NUMBER IN BASE"Z". TRY AGAIN."
790 GOTO 490
800 PRINT "I SAID A NUMBER BETWEEN 1 AND "B$". TRY AGAIN."
810 GOTO 490
820 REM THIS SUBROUTINE FINDS OUT IF THE NUMBER IS ACCEPTABLE
830 REM IN THE GIVEN BASE
840 A=1
850 IF Q<10^A THEN 880
860 A=A+1
870 GOTO 850
830 A=A-1
890 IF A=0 THEN 940
900 W=INT(.1^A*0+.00005)
910 Q=Q-10^A*W
910 IF W>=Z THEN 960
920 Q=Q-10^A*W
930 GOTO 880
940 IF Q>=Z THEN 960
950 GOTO 970
960 R=1
970 RETURN
980 REM THIS SUBROUTINE CHANGES THE NUMBER INTO A STRING
990 A$=1234567890"
1000 R$=""
1010 S=1
1020 K=6
1030 IF F>=10^K THEN 1070
1040 K=K-1
1050 GOTO 1030
1060 K=K-1
1070 T=INT(.1*^K*F+.00005)
1080 F=F-10^K*T
1090 IF T=0 THEN 1140
1100 B$[S,S]=A$[T,T]
1110 IF K=0 THEN 1160
1120 S=S+1
1130 GOTO 1060
1140 B$[S,S]=A$[10,10]
1150 GOTO 1110
1060 RETURN
1170 DATA 1.1001E+06,10201,1210,400,244,202,144,121,100
1180 END