home *** CD-ROM | disk | FTP | other *** search
- 10000 REM *******************************************************************
- 10010 REM ** DEMO - Program to Demonstrate Animation **
- 10020 REM ** Using Files Created by "The Designer" **
- 10030 REM ** Copyright 1983, by Jan B. Young. Permission is granted to **
- 10040 REM ** all purchasers to copy and modify this program for non- **
- 10050 REM ** commercial uses, providing the copyright notice is retained. **
- 10060 REM *******************************************************************
- 10070 KEY OFF
- 10080 REM *******************************************************************
- 10090 REM ** Put Introduction Panel on Screen **
- 10100 REM *******************************************************************
- 10110 SCREEN 1: COLOR 1, 1 'Clear screen
- 10120 LOCATE 6, 18: PRINT "T H E"
- 10130 LOCATE 8, 16: PRINT "M O U S E"
- 10140 LOCATE 16, 8: PRINT "An Animation Demonstration"
- 10150 LOCATE 18, 6: PRINT "Copyright 1983 by Jan B. Young"
- 10160 LOCATE 23, 8: PRINT "Press Any Key to Continue"
- 10170 X$ = INPUT$(1)
- 10180 REM *******************************************************************
- 10190 REM ** Get Sprite and Load in Matrix **
- 10200 REM *******************************************************************
- 10210 OPEN "MOUSE.SPR" FOR INPUT AS #1
- 10220 INPUT #1, RES, PAL, ARR, WID, HGHT 'Defines parameters for the mouse
- 10230 DIM MOUSE(ARR)
- 10240 FOR I = 0 TO ARR 'Load mouse into array
- 10250 INPUT #1, J(0), J(1), J(2), J(3)
- 10260 P = VARPTR(MOUSE(I))
- 10270 FOR N = 0 TO 3
- 10280 POKE P + N, J(N)
- 10290 NEXT N
- 10300 NEXT I
- 10310 CLOSE #1
- 10320 REM *******************************************************************
- 10330 REM ** Put background on Screen **
- 10340 REM *******************************************************************
- 10350 OPEN "MAZE.RES" FOR INPUT AS #1
- 10360 INPUT #1, RES, BAK, PAL 'Defines parameters for maze
- 10370 CLOSE #1
- 10380 SCREEN RES: COLOR BAK, PAL: CLS 'Clear screen
- 10390 DEF SEG = &HB800 'Locate screen buffer
- 10400 BLOAD "MAZE", 0 'Put maze on screen
- 10410 DEF SEG
- 10420 REM *******************************************************************
- 10430 REM ** Animate **
- 10440 REM *******************************************************************
- 10450 HPOS = 7: VPOS = 4: HNEW = 7: VNEW = 4: DIR$ = "E"'Initial values
- 10460 T = VAL(MID$(TIME$, 4, 2)) * 100 + VAL(MID$(TIME$, 7, 2))
- 10470 RANDOMIZE T
- 10480 PUT (HPOS, VPOS), MOUSE 'Put mouse on screen
- 10490 REM LINE (HPOS-5,VPOS-3)-(HPOS+18,VPOS+14),1,B 'Debugging only
- 10500 GOSUB 11250 'Determines freedom to move
- 10510 REM LOCATE 20,20:PRINT NORTH:LOCATE 21,21:PRINT EAST:LOCATE 22,20:PRINT SOUTH:LOCATE 21,19:PRINT WEST:LOCATE 21,30:PRINT DIR$ 'Delete REM for debugging
- 10520 IF DIR$ = "E" THEN GOTO 10570
- 10530 IF DIR$ = "N" THEN GOTO 10720 'DIR$ is direction of motion
- 10540 IF DIR$ = "S" THEN GOTO 10860
- 10550 IF DIR$ = "W" THEN GOTO 11020
- 10560 REM *** Now going east - logic selects next move ***
- 10570 IF EAST = 1 THEN GOTO 10630
- 10580 IF SOUTH = 1 THEN GOTO 10610 'Value East=1 means OK to go east
- 10590 IF NORTH = 1 THEN GOTO 11180 'Value East=0 means path east is blocked
- 10600 GOTO 11170 'See GOTO line for direction chosen
- 10610 IF NORTH = 0 THEN 11200
- 10620 I = RND: IF I > .5 THEN 11200 ELSE 11180
- 10630 IF SOUTH = 1 THEN GOTO 10670
- 10640 IF NORTH = 1 THEN GOTO 10660
- 10650 GOTO 11190
- 10660 I = RND: IF I > .4 THEN 11190 ELSE 11180
- 10670 IF NORTH = 1 THEN GOTO 10690
- 10680 I = RND: IF I > .4 THEN 11190 ELSE 11200
- 10690 I = RND: IF I > .7 THEN 11200
- 10700 IF I > .4 THEN 11180 ELSE 11190
- 10710 REM *** Now going north- logic selects next move ***
- 10720 IF NORTH = 1 THEN GOTO 10780
- 10730 IF WEST = 1 THEN GOTO 10760
- 10740 IF EAST = 1 THEN GOTO 11190
- 10750 GOTO 11200
- 10760 IF EAST = 0 THEN 11170
- 10770 I = RND: IF I > .5 THEN 11190 ELSE 11170
- 10780 IF WEST = 1 THEN GOTO 10820
- 10790 IF EAST = 1 THEN GOTO 10810
- 10800 GOTO 11180
- 10810 I = RND: IF I > .4 THEN 11180 ELSE 11190
- 10820 IF EAST = 1 THEN GOTO 10840
- 10830 IF I > .4 THEN 11180 ELSE 11170
- 10840 I = RND: IF I > .6 THEN 11180
- 10850 I = RND: IF I > .3 THEN 11170 ELSE 11190
- 10860 REM *** Now going south- logic selects next move ***
- 10870 IF SOUTH = 1 THEN GOTO 10940
- 10880 IF WEST = 1 THEN GOTO 10910
- 10890 IF EAST = 1 THEN GOTO 11190
- 10900 GOTO 11180
- 10910 IF EAST = 0 THEN 11170
- 10920 I = RND: IF I > .5 THEN 11170 ELSE 11190
- 10930 IF I > .2 THEN 11170 ELSE 11180
- 10940 IF WEST = 1 THEN GOTO 10980
- 10950 IF EAST = 1 THEN GOTO 10970
- 10960 GOTO 11200
- 10970 I = RND: IF I > .4 THEN 11200 ELSE 11190
- 10980 IF EAST = 1 THEN GOTO 11000
- 10990 I = RND: IF I > .4 THEN 11200 ELSE 11170
- 11000 I = RND: IF I > .7 THEN 11190
- 11010 IF I > .4 THEN 11170 ELSE 11200
- 11020 REM *** Now going west- logic selects next move ***
- 11030 IF WEST = 1 THEN GOTO 11090
- 11040 IF NORTH = 1 THEN GOTO 11070
- 11050 IF SOUTH = 1 THEN GOTO 11200
- 11060 GOTO 11180
- 11070 IF SOUTH = 0 THEN 11180
- 11080 I = RND: IF I > .5 THEN 11200 ELSE 11180
- 11090 IF NORTH = 1 THEN GOTO 11130
- 11100 IF SOUTH = 1 THEN GOTO 11120
- 11110 GOTO 11170
- 11120 I = RND: IF I > .4 THEN 11170 ELSE 11200
- 11130 IF SOUTH = 1 THEN GOTO 11150
- 11140 I = RND: IF I > .4 THEN 11170 ELSE 11180
- 11150 I = RND: IF I > .7 THEN 11180
- 11160 IF I > .4 THEN 11200 ELSE 11170
- 11170 DIR$ = "W": HNEW = HNEW - 1: GOTO 11210'4 statements calculate next position
- 11180 DIR$ = "N": VNEW = VPOS - 1: GOTO 11210
- 11190 DIR$ = "E": HNEW = HPOS + 1: GOTO 11210
- 11200 DIR$ = "S": VNEW = VPOS + 1: GOTO 11210
- 11210 PUT (HPOS, VPOS), MOUSE 'remove mouse from old position
- 11220 REM LINE (HPOS-5,VPOS-3)-(HPOS+18,VPOS+14),0,B 'Debugging only
- 11230 HPOS = HNEW: VPOS = VNEW 'Change position
- 11240 GOTO 10480 'Go back to start
- 11250 REM *******************************************************************
- 11260 REM ** "Feel" for open paths **
- 11270 REM ** Note: Mouse occupies a box extending horizontally from **
- 11280 REM ** HPOS-6 to HPOS+19 and vertically from VPOS-4 to VPOS+15 **
- 11290 REM *******************************************************************
- 11300 WHILE DIR$ = "E"
- 11310 IF POINT(HPOS + 18, VPOS - 4) = 0 AND POINT(HPOS + 19, VPOS - 4) <> 0 THEN NORTH = 1 ELSE NORTH = 0
- 11320 IF POINT(HPOS + 18, VPOS + 15) = 0 AND POINT(HPOS + 19, VPOS + 15) <> 0 THEN SOUTH = 1 ELSE SOUTH = 0
- 11330 IF POINT(HPOS + 19, VPOS + 6) = 0 THEN EAST = 1 ELSE EAST = 0
- 11340 RETURN
- 11350 WEND
- 11360 WHILE DIR$ = "W"
- 11370 IF POINT(HPOS - 5, VPOS - 4) = 0 AND POINT(HPOS - 6, VPOS - 4) <> 0 THEN NORTH = 1 ELSE NORTH = 0
- 11380 IF POINT(HPOS - 5, VPOS + 15) = 0 AND POINT(HPOS - 6, VPOS + 15) <> 0 THEN SOUTH = 1 ELSE SOUTH = 0
- 11390 IF POINT(HPOS - 6, VPOS + 6) = 0 THEN WEST = 1 ELSE WEST = 0
- 11400 RETURN
- 11410 WEND
- 11420 WHILE DIR$ = "N"
- 11430 IF POINT(HPOS - 6, VPOS - 3) = 0 AND POINT(HPOS - 6, VPOS - 4) <> 0 THEN WEST = 1 ELSE WEST = 0
- 11440 IF POINT(HPOS + 19, VPOS - 3) = 0 AND POINT(HPOS + 19, VPOS - 4) <> 0 THEN EAST = 1 ELSE EAST = 0
- 11450 IF POINT(HPOS + 6, VPOS - 4) = 0 THEN NORTH = 1 ELSE NORTH = 0
- 11460 RETURN
- 11470 WEND
- 11480 WHILE DIR$ = "S"
- 11490 IF POINT(HPOS - 6, VPOS + 14) = 0 AND POINT(HPOS - 6, VPOS + 15) <> 0 THEN WEST = 1 ELSE WEST = 0
- 11500 IF POINT(HPOS + 19, VPOS + 14) = 0 AND POINT(HPOS + 19, VPOS + 15) <> 0 THEN EAST = 1 ELSE EAST = 0
- 11510 IF POINT(HPOS + 5, VPOS + 15) = 0 THEN SOUTH = 1 ELSE SOUTH = 0
- 11520 RETURN
- 11530 WEND
-
-