Compucolor.org – Virtual Media

Listing of file='CLUMSY.BAS;01' on disk='vmedia/chip_24-sector.ccvf'

20 REM  "CLUMSY", A ONE-PLAYER GAME BY W. RUST, MARCH 1979
30 REM
50 REM ---HOUSEKEEPING
52 CLEAR 100
54 DIM D(5),W(5),X(5),Y(5),Z(5)
56 DEF FN A(X)= INT (X* RND (1))
100 REM ---INSTRUCTIONS
105 PLOT 14,6,3,12,3,24,9
110 PRINT "- CLUMSY -"
115 PLOT 15,6,6,3,16,16
120 PRINT "A ONE-PLAYER GAME BY W. RUST"
125 PLOT 3,64,0:REM  BLIND CURSOR
130 FOR Z= 1TO 2000:NEXT Z
135 PLOT 15,6,5,12,3,2,3
140 PRINT "YOU ARE TRYING TO GO THROUGH A ROOM IN THE DARK."
142 PRINT :PLOT 6,3
144 PRINT "THERE ARE FIVE PIECES OF FURNITURE IN THE ROOM"
146 PRINT "AND YOU DO NOT WANT TO STUMBLE INTO THEM.
148 PRINT :PLOT 6,7
150 PRINT "YOUR SPACE-AGE ULTRASONIC CANE MODEL Q-34/J TELLS"
152 PRINT "YOU THE DISTANCES TO THE PIECES OF FURNITURE, BUT"
154 PRINT "NOT THE DIRECTIONS.
156 PRINT :PLOT 6,6
158 PRINT "EACH TIME YOU ARE ASKED TO MOVE, ENTER THE"
160 PRINT "DIRECTION YOU WANT TO TAKE A STEP ( N, E, W, S )."
162 PRINT "DO NOT HIT 'RETURN' EACH TIME."
164 PRINT
166 PRINT "YOU ARE THE RED SQUARE."
168 PRINT :PLOT 6,2
170 PRINT "BE CAREFUL: DON'T LET YOUR DISTANCE BECOME LESS"
172 PRINT "THAN 1 STEP!  DON'T BE CLUMSY!"
174 PRINT :PLOT 6,6
176 PRINT "AT THE END OF THE GAME, I WILL TURN ON THE"
178 PRINT "LIGHTS SO YOU CAN SEE HOW WELL YOU DID!"
180 PRINT :PLOT 6,1
182 PRINT "HIT 'RETURN' TO CONTINUE..."
184 PRINT :INPUT Q$
200 REM ---CHOOSE FURNITURE SIZES & LOCATIONS
210 R= PEEK (33209):FOR J= 1TO R:X= RND (1):NEXT J
215 REM  (X,Y)=POS OF UPPER LEFT CORNER
216 REM  (W,Z)=POS OF LOWER RIGHT CORNER, OF PIECES 1,2,3,4,5
220 REM  CHOOSE WHICH FURNITURE WILL TOUCH TOP (TT) AND
221 REM  BOTTOM (TB) BORDERS.
225 T= FN A(8)+ 1:ON TGOTO 231,232,233,234,235,236,237,238,225
231 TT= 1:TB= 2:GOTO 240
232 TT= 1:TB= 3:GOTO 240
233 TT= 1:TB= 5:GOTO 240
234 TT= 3:TB= 2:GOTO 240
235 TT= 3:TB= 5:GOTO 240
236 TT= 4:TB= 2:GOTO 240
237 TT= 4:TB= 3:GOTO 240
238 TT= 4:TB= 5
240 REM  CHOOSE FURNITURE SIZES AND LOCATIONS
250 X(1)= FN A(12)+ 1:Y(1)= FN A(4)+ 6:IF TT= 1THEN Y(1)= 4
260 W(1)= X(1)+ 8:Z(1)= Y(1)+ 8
270 X(2)= FN A(12)+ 4:Y(2)= Z(1)+ 3+ FN A(6)
280 W(2)= X(2)+ 5:Z(2)= Y(2)+ 3:IF TB= 2THEN Z(2)= 30
290 X(3)= FN A(6)+ 24:Y(3)= FN A(11)+ 7:IF TT= 3THEN Y(3)= 4
300 W(3)= X(3)+ 10:Z(3)= 27- FN A(8):IF TB= 3THEN Z(3)= 30
310 X(4)= FN A(8)+ 43:Y(4)= FN A(4)+ 6:IF TT= 4THEN Y(4)= 4
320 W(4)= X(4)+ 10:Z(4)= Y(4)+ 8
330 X(5)= FN A(8)+ 43:Y(5)= Z(4)+ 3+ FN A(6)
340 W(5)= X(5)+ 10:Z(5)= Y(5)+ 3:IF TB= 5THEN Z(5)= 30
400 REM ---DRAW ROOM DISPLAY
410 PLOT 15,6,32,12,27,24
420 PLOT 6,6:FOR Y= 0TO 2:PLOT 3,0,Y,11:NEXT Y
430 PLOT 6,48
440 FOR Y= 3TO 10:PLOT 3,63,Y,32:NEXT Y
445 FOR Y= 17TO 31:PLOT 3,63,Y,32:NEXT Y
450 FOR Y= 3TO 25:PLOT 3,0,Y,32:NEXT Y
460 PLOT 3,0,3,11:PLOT 3,0,31,11
480 A$= "DISTANCES ARE:"
490 PLOT 6,3,3,63,12,27,10
500 PRINT "EXIT"
510 PLOT 27,24
590 PX= 0:PY= 28:REM  INITIAL PLAYER POSITION
600 REM ---PLOT PRESENT POSITION
610 PLOT 6,8:PLOT 3,PX,PY,32
700 REM ---TEST FOR EXIT
710 IF PX= 62AND PY> 10AND PY< 17GOTO 1200
750 REM ---CALC DISTANCES TO FURNITURE
760 FOR J= 1TO 5
770 DX= 0:IF PX< X(J)THEN DX= X(J)- PX
780 IF PX> W(J)THEN DX= PX- W(J)
790 DY= 0:IF PY< Y(J)THEN DY= Y(J)- PY
800 IF PY> Z(J)THEN DY= PY- Z(J)
810 B= SQR (DX* DX+ DY* DY)
820 D(J)= INT (10* B+ .5)/ 10
950 REM ---TEST FOR STUMBLE
960 IF D(J)< 1GOTO 1200
970 NEXT J
1000 REM ---DISPLAY DISTANCES TO FURNITURE
1005 PLOT 15,6,3,8,11:PRINT A$;
1010 PLOT 6,7
1020 PRINT TAB( 15);D(1);TAB( 22);D(2);TAB( 29);D(3);
1021 PRINT TAB( 36);D(4);TAB( 43);D(5)
1100 REM ---INPUT PLAYER'S MOVE
1110 PLOT 6,3,3,56,0
1120 POKE 33278,0
1130 PRINT "MOVE "
1131 PLOT 3,62,0
1135 Q= PEEK (33278)
1140 Z= RND (1):REM  DELAY AND RANDOMIZE
1145 IF Q= 0GOTO 1135
1150 Q$= CHR$ (Q)
1160 IF Q$= "N"THEN PY= PY- 1
1161 IF Q$= "E"THEN PX= PX+ 1
1162 IF Q$= "W"THEN PX= PX- 1
1163 IF Q$= "S"THEN PY= PY+ 1
1170 IF PY< 4THEN PY= 4
1171 IF PY> 30THEN PY= 30
1172 IF PX< 1THEN PX= 1
1173 IF PX> 62THEN PX= 62
1180 PLOT 3,56,0:PRINT "        ":REM  ERASE MOVE DISPLAY
1190 GOTO 600
1200 REM ---DISPLAY FURNITURE
1210 RESTORE
1220 DATA 24,16,40,48,24
1230 FOR J= 1TO 5
1240 READ C:PLOT 6,C
1250 FOR X= X(J)TO W(J)
1260 FOR Y= Y(J)TO Z(J)
1270 PLOT 3,X,Y:PRINT " "
1280 NEXT Y
1290 NEXT X
1300 NEXT J
1350 REM ---WHAT NEXT
1360 PLOT 6,6,3,3,15
1370 INPUT "DO YOU WANT TO TRY AGAIN (Y/N) ";Q$
1380 IF Q$= "Y"GOTO 200
1399 PLOT 6,6,12,27,11
1400 END
1500 PLOT 14,27,18,3,15,27,13:LIST :PRINT :POKE 33265,0:END