mirror of
https://github.com/PDP-10/stacken.git
synced 2026-03-01 17:26:38 +00:00
168 lines
4.4 KiB
QBasic
168 lines
4.4 KiB
QBasic
1 REM PLAYS QUEEN GAME.
|
||
2 PRINT "DO YOU WISH INSTRUCTIONS";
|
||
9 RANDOMIZE
|
||
10 DIM S(64)
|
||
11 FOR I = 1 TO 64
|
||
12 READ S(I)
|
||
13 NEXT I
|
||
14 DATA 81, 71, 61, 51, 41, 31, 21, 11
|
||
15 DATA 92, 82, 72, 62, 52, 42, 32, 22
|
||
16 DATA 103, 93, 83, 73, 63, 53, 43, 33
|
||
17 DATA 114, 104, 94, 84, 74, 64, 54, 44
|
||
18 DATA 125, 115, 105, 95, 85, 75, 65, 55
|
||
19 DATA 136, 126, 116, 106, 96, 86, 76, 66
|
||
20 DATA 147, 137, 127, 117, 107, 97, 87, 77
|
||
21 DATA 158, 148, 138, 128, 118, 108, 98, 88
|
||
22 INPUT W$
|
||
23 IF W$="NO" THEN 30
|
||
24 IF W$="YES" THEN 28
|
||
25 PRINT "INCORRECT ANSWER. PLEASE TYPE 'YES' OR 'NO'";
|
||
26 GOTO 22
|
||
28 GOSUB 5000
|
||
29 GO TO 100
|
||
30 GOSUB 5150
|
||
90 REM ERROR CHECKS.
|
||
100 PRINT "WHERE WOULD YOU LIKE TO START";
|
||
110 INPUT M1
|
||
115 IF M1 = 0 THEN 232
|
||
120 LET T1 = INT(M1/10)
|
||
130 LET U1 = M1 - 10*T1
|
||
140 IF U1 = 1 THEN 200
|
||
150 IF U1 = T1 THEN 200
|
||
160 PRINT "PLEASE READ THE DIRECTIONS AGAIN."
|
||
165 PRINT "YOU HAVE BEGUN ILLEGALLY."
|
||
170 PRINT
|
||
180 GO TO 100
|
||
200 GO SUB 2000
|
||
210 PRINT "MACHINE MOVES TO SQUARE"M
|
||
215 IF M = 158 THEN 3400
|
||
220 PRINT "WHAT IS YOUR MOVE";
|
||
230 INPUT M1
|
||
231 IF M1 <> 0 THEN 239
|
||
232 PRINT
|
||
233 PRINT "IT LOOKS LIKE I HAVE WON BY FORFEIT."
|
||
234 PRINT
|
||
235 GO TO 4000
|
||
239 IF M1 <= M THEN 3200
|
||
240 LET T1 = INT(M1/10)
|
||
250 LET U1 = M1 - 10*T1
|
||
260 LET P = U1 - U
|
||
270 IF P <> 0 THEN 300
|
||
280 LET L = T1 - T
|
||
290 IF L <= 0 THEN 3200
|
||
295 GO TO 200
|
||
300 IF T1 - T <> P THEN 320
|
||
310 GO TO 200
|
||
320 IF T1 - T <> 2*P THEN 3200
|
||
330 GO TO 200
|
||
1990 REM LOCATE MOVE FOR MACHINE.
|
||
2000 IF M1 = 41 THEN 2180
|
||
2010 IF M1 = 44 THEN 2180
|
||
2020 IF M1 = 73 THEN 2180
|
||
2030 IF M1 = 75 THEN 2180
|
||
2040 IF M1 = 126 THEN 2180
|
||
2050 IF M1 = 127 THEN 2180
|
||
2060 IF M1 = 158 THEN 3300
|
||
2065 LET C = 0
|
||
2070 FOR K = 7 TO 1 STEP -1
|
||
2080 LET U = U1
|
||
2090 LET T = T1 + K
|
||
2100 GO SUB 3500
|
||
2105 IF C = 1 THEN 2160
|
||
2110 LET U = U + K
|
||
2120 GO SUB 3500
|
||
2125 IF C = 1 THEN 2160
|
||
2130 LET T = T + K
|
||
2140 GO SUB 3500
|
||
2145 IF C = 1 THEN 2160
|
||
2150 NEXT K
|
||
2155 GO TO 2180
|
||
2160 LET C = 0
|
||
2170 RETURN
|
||
2180 GO SUB 3000
|
||
2190 RETURN
|
||
2990 REM RANDOM MOVE.
|
||
3000 LET Z=RND
|
||
3010 IF Z > .6 THEN 3110
|
||
3020 IF Z > .3 THEN 3070
|
||
3030 LET U = U1
|
||
3040 LET T = T1 + 1
|
||
3050 LET M = 10*T + U
|
||
3060 RETURN
|
||
3070 LET U = U1 + 1
|
||
3080 LET T = T1 + 2
|
||
3090 LET M = 10*T + U
|
||
3100 RETURN
|
||
3110 LET U = U1 + 1
|
||
3120 LET T = T1 + 1
|
||
3130 LET M = 10*T + U
|
||
3140 RETURN
|
||
3190 REM ILLEGAL MOVE MESSAGE.
|
||
3200 PRINT
|
||
3210 PRINT "Y O U C H E A T . . . TRY AGAIN";
|
||
3220 GO TO 230
|
||
3290 REM PLAYER WINS.
|
||
3300 PRINT
|
||
3310 PRINT "C O N G R A T U L A T I O N S . . . "
|
||
3320 PRINT
|
||
3330 PRINT "YOU HAVE WON--VERY WELL PLAYED."
|
||
3340 PRINT "IT LOOKS LIKE I HAVE MET MY MATCH."
|
||
3350 PRINT "THANKS FOR PLAYING--I CAN'T WIN ALL THE TIME."
|
||
3360 PRINT
|
||
3370 GO TO 4000
|
||
3390 REM MACHINE WINS.
|
||
3400 PRINT
|
||
3410 PRINT "NICE TRY, BUT IT LOOKS LIKE I HAVE WON."
|
||
3420 PRINT "THANKS FOR PLAYING."
|
||
3430 PRINT
|
||
3440 GO TO 4000
|
||
3490 REM TEST FOR MACHINE MOVE.
|
||
3500 LET M = 10*T + U
|
||
3510 IF M = 158 THEN 3570
|
||
3520 IF M = 127 THEN 3570
|
||
3530 IF M = 126 THEN 3570
|
||
3540 IF M = 75 THEN 3570
|
||
3550 IF M = 73 THEN 3570
|
||
3560 RETURN
|
||
3570 LET C = 1
|
||
3580 GO TO 3560
|
||
3990 REM ANOTHER GAME?
|
||
4000 PRINT "ANYONE ELSE CARE TO TRY";
|
||
4020 INPUT Q$
|
||
4030 PRINT
|
||
4040 IF Q$="YES" THEN100
|
||
4042 IF Q$="NO" THEN 4050
|
||
4045 PRINT "INCORRECT ANSWER. PLEASE TYPE 'YES' OR 'NO'";
|
||
4046 GOTO 4020
|
||
4050 PRINT "OK - - THANKS AGAIN."
|
||
4060 STOP
|
||
4990 REM DIRECTIONS, ETC. . .
|
||
5000 PRINT "WE ARE GOING TO PLAY A GAME BASED ON ONE OF THE CHESS MOVES."
|
||
5010 PRINT "OUR QUEEN WILL BE ABLE TO MOVE ONLY TO THE LEFT,"
|
||
5020 PRINT "DOWN, AND DIAGONALLY DOWN TO THE LEFT."
|
||
5030 PRINT
|
||
5040 PRINT "THE OBJECT OF THE GAME IS TO PLACE THE QUEEN IN THE"
|
||
5050 PRINT "LOWER LEFT-HAND SQUARE BY ALTERNATING MOVES BETWEEN"
|
||
5060 PRINT "YOU AND THE MACHINE/ THE FIRST ONE TO PLACE THE QUEEN"
|
||
5070 PRINT "THERE, WINS."
|
||
5080 PRINT
|
||
5090 PRINT "YOU GO FIRST AND PLACE THE QUEEN IN ANY ONE OF THE"
|
||
5100 PRINT "SQUARES ON THE TOP ROW OR THE RIGHT-HAND COLUMN."
|
||
5110 PRINT "THAT WILL BE YOUR FIRST MOVE."
|
||
5120 PRINT "WE WILL THEN ALTERNATE MOVES."
|
||
5130 PRINT "YOU MAY FORFEIT AT ANY TIME BY TYPING '0' AS YOUR MOVE."
|
||
5140 PRINT "BE SURE TO PUSH THE 'RETURN' KEY AFTER EACH RESPONSE."
|
||
5150 PRINT
|
||
5160 FOR A = 0 TO 7
|
||
5170 FOR B = 1 TO 8
|
||
5180 LET I = 8*A + B
|
||
5190 PRINT S(I);
|
||
5200 NEXT B
|
||
5210 PRINT
|
||
5220 PRINT
|
||
5225 PRINT
|
||
5230 NEXT A
|
||
5240 PRINT
|
||
5250 RETURN
|
||
99999 END
|
||
|