mirror of
https://github.com/gungwald/maze.git
synced 2024-06-15 19:29:34 +00:00
Attempt to close right side
This commit is contained in:
parent
2d8bb977b9
commit
587da6f982
204
maze.baz
204
maze.baz
|
@ -1,117 +1,93 @@
|
||||||
REM cxxxxxx|\\\\\\\\\\\\\\\\\\\\\\\\\>
|
rem
|
||||||
|
REM cxxxxxx|/////////////////////////>
|
||||||
REM
|
REM
|
||||||
REM MAZE - DRAWS A MAZE-LIKE PATTERN
|
REM MAZE - DRAWS A MAZE-LIKE PATTERN
|
||||||
REM AUTHOR - BILL CHATFIELD
|
REM AUTHOR - BILL CHATFIELD
|
||||||
REM
|
REM
|
||||||
REM cxxxxxx|\\\\\\\\\\\\\\\\\\\\\\\\\>
|
REM cxxxxxx|/////////////////////////>
|
||||||
REM
|
rem
|
||||||
REM //////////////
|
|
||||||
REM INITIALIZATION
|
|
||||||
REM //////////////
|
REM //////////////
|
||||||
LET SW = 560: LET SH = 192: REM SCREEN WIDTH AND HEIGHT
|
REM Init
|
||||||
LET W = 10: LET H = 5: REM DEFAULT SEGMENT DIMENSIONS
|
REM //////////////
|
||||||
LET KBD = - 16384: REM ADDRESS OF KEYPRESS DETECTION BYTE
|
let ret$ = chr$(13)
|
||||||
LET MF = - 16302: REM HGR MIXEDOFF
|
let esc$ = chr$(27)
|
||||||
LET RL = 78:RH = 79: REM RNDL AND RNDH
|
LET SW = 140 : SH = 192: REM SCREEN WIDTH AND HEIGHT
|
||||||
LET SEED = PEEK (RL) + PEEK (RH) * 256: REM GET RND SEED
|
LET KBD = -16384: REM Addr of byte that is neg if key pressed
|
||||||
LET NA = RND ( - SEED): REM SEED RANDOM NUM GENERATOR
|
LET RL = 78 : RH = 79: REM RNDL AND RNDH
|
||||||
DIM COLOURS(5): REM ARRAY FOR 6 COLORS NUM'D 0-5
|
LET SEED = PEEK (RL) + PEEK (RH) * 256: REM GET RND SEED
|
||||||
REM USELESS COLORS SKIPPED: BLACK2=4, WHITE1=3
|
LET NA = RND ( - SEED): REM SEED RANDOM NUM GENERATOR
|
||||||
LET COLOURS(0) = 1: REM GREEN
|
HOME
|
||||||
LET COLOURS(1) = 2: REM VIOLET
|
VTAB 24
|
||||||
LET COLOURS(2) = 5: REM ORANGE
|
& HGR2 : REM FULL SCREEN DOUBLE HIGH RES
|
||||||
LET COLOURS(3) = 6: REM BLUE
|
& MODE(2) : REM 16-color mode
|
||||||
LET COLOURS(4) = 7: REM WHITE2
|
|
||||||
LET COLOURS(5) = 0: REM BLACK1
|
|
||||||
LET PAUSED = 0
|
REM //////////////////////////
|
||||||
HOME
|
REM Draw Screen
|
||||||
GOSUB 1000: REM INSTRUCTIONS
|
REM //////////////////////////
|
||||||
REM //////////////////////////
|
£drawScreen
|
||||||
REM OUTER SCREEN PRINTING LOOP
|
LET BG = 0: rem Black
|
||||||
REM //////////////////////////
|
let fg = int(rnd(1)*15) +1: rem Gives 1 to 15
|
||||||
& HGR2 : & MODE(1): REM SWITCH TO FULL SCREEN DOUBLE HIGH RES
|
& BCOLOR=BG
|
||||||
LET BG = INT ( RND (1) * 2): REM BLACK OR COLORED BG
|
& CLEAR : REM Draw background
|
||||||
IF BG = 0 THEN FG = COLOURS( INT ( RND (1) * 6))
|
& HCOLOR=FG
|
||||||
IF BG = 1 THEN BG = COLOURS( INT ( RND (1) * 6)):FG = 0
|
let s = int(rnd(1) * 5) + 4: REM Gives 4 to 8
|
||||||
IF FG = BG THEN 300: REM DON'T LET THEM BE THE SAME
|
let s = 8
|
||||||
LET FG = 1:BG = 0
|
LET W = s
|
||||||
PRINT "FG=";FG;" BG=";BG
|
LET H = s
|
||||||
& B COLOR= BG
|
PRINT "W=";W;" H=";H;" FG=";FG;" BG=";BG
|
||||||
& CLEAR : REM DRAW BG.K
|
|
||||||
& HCOLOR= FG
|
|
||||||
LET X1 = 0:Y1 = 0: REM RESET TO TOP LEFT
|
REM ///////////////////////////
|
||||||
LET W = INT ( RND (1) * 10) + 20: REM RANDOM SEGMENT WIDTH
|
REM Draw Segment
|
||||||
LET H = INT ( RND (1) * 10) + 8: REM RANDOM SEGMENT HEIGHT
|
REM ///////////////////////////
|
||||||
REM ///////////////////////////
|
£drawSegments
|
||||||
REM INNER SEGMENT PRINTING LOOP
|
let mx = (int(sw / w) - 1) * w
|
||||||
REM ///////////////////////////
|
let my = (int(sh / h) - 1) * h
|
||||||
REM 512
|
for y1 = 0 to my step h
|
||||||
IF PEEK (KBD) > 127 THEN 600: REM DETECTS A KEYPRESS
|
let y2 = y1 + h
|
||||||
LET X2 = X1 + W:Y2 = Y1 + H: REM RIGHT END OF SEGMENT
|
for x1 = 0 to mx step w
|
||||||
REM DETECTS END OF LINE
|
if peek(kbd) > 127 then gosub @checkKeypress
|
||||||
IF X2 > = SW THEN X1 = 0:X2 = X1 + W:Y1 = Y1 + H:Y2 = Y1 + H
|
let x2 = x1 + w
|
||||||
IF Y2 > = SH THEN 300: REM DETECTS BOTTOM OF SCREEN
|
let T = INT ( RND (1) * 2): REM Segment type
|
||||||
LET N = INT ( RND (1) * 2): REM SELECT A / OR \ SEGMENT
|
gosub @drawSegment
|
||||||
IF N = 0 THEN & HPLOT X1,Y2 TO X2,Y1: REM DRAW A /
|
next
|
||||||
IF N = 1 THEN & HPLOT X1,Y1 TO X2,Y2: REM DRAW A \
|
let x2 = sw - 1
|
||||||
LET X1 = X1 + W: REM ADVANCE LEFT END OF SEGMENT
|
let dy = int((x2 - x1) * h / w)
|
||||||
GOTO 512: REM LOOP TO NEXT SEGMENT
|
let T = INT ( RND (1) * 2): REM Segment type
|
||||||
REM ///////////
|
let yb = y1: rem Backup y1
|
||||||
REM KEY HANDLER
|
if t = 0 then y1 = y2 - dy
|
||||||
REM ///////////
|
if t = 1 then y2 = y1 + dy
|
||||||
REM 600
|
gosub @drawSegment
|
||||||
GET KEY$
|
let y1 = yb: rem Restore y1
|
||||||
IF KEY$ = CHR$ (27) THEN 700: REM ESC QUITS
|
next
|
||||||
IF KEY$ = "Q" OR KEY$ = "q" THEN 700: REM Q QUITS ALSO
|
GOTO @drawScreen
|
||||||
IF KEY$ = CHR$ (13) THEN 300: REM RETURN ADVANCES SCREEN
|
|
||||||
REM TAB AND ARROW KEYS ALSO ADVANCE SCREEN
|
|
||||||
IF CHR$ (8) < = KEY$ AND KEY$ < = CHR$ (11) THEN 300
|
£drawSegment
|
||||||
IF KEY$ = CHR$ (21) THEN 300
|
IF T = 0 THEN & HPLOT X1,Y2 TO X2,Y1
|
||||||
IF KEY$ = CHR$ (32) AND PAUSED = 0 THEN PAUSED = 1: GOTO 630
|
IF T = 1 THEN & HPLOT X1,Y1 TO X2,Y2
|
||||||
IF KEY$ = CHR$ (32) AND PAUSED = 1 THEN PAUSED = 0: GOTO 512
|
return
|
||||||
GOTO 512: REM UNRECOGNIZED KEY SO JUST CONTINUE
|
|
||||||
REM 630
|
|
||||||
IF PEEK (KBD) < = 127 THEN 630: REM PAUSE
|
REM //////////////////////////
|
||||||
GOTO 600: REM CHECK THE KEY THAT UNPAUSED
|
REM KEY HANDLER
|
||||||
& TEXT
|
REM //////////////////////////
|
||||||
|
£checkKeypress
|
||||||
|
get KEY$
|
||||||
|
if key$ = " " then pop : goto @drawScreen
|
||||||
|
if key$ = esc$ then pop : goto @exit
|
||||||
|
if key$ = ret$ then pop : goto @drawScreen
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
rem ////////////////
|
||||||
|
rem Exit
|
||||||
|
rem ////////////////
|
||||||
|
£exit
|
||||||
|
& TEXT
|
||||||
PRINT "MAZE TERMINATED";
|
PRINT "MAZE TERMINATED";
|
||||||
END
|
END
|
||||||
REM ////////////
|
|
||||||
REM INSTRUCTIONS
|
|
||||||
REM ////////////
|
|
||||||
VTAB 18
|
|
||||||
PRINT "KEYBOARD COMMANDS:"
|
|
||||||
PRINT "-----------------"
|
|
||||||
PRINT "ESC, Q = QUIT"
|
|
||||||
PRINT "TAB, ARROWS, RETURN = NEXT SCREEN"
|
|
||||||
PRINT "SPACEBAR = PAUSE/RESUME"
|
|
||||||
PRINT
|
|
||||||
PRINT "PRESS ANY KEY TO CONTINUE";
|
|
||||||
GET KEY$
|
|
||||||
HOME : VTAB 24
|
|
||||||
RETURN
|
|
||||||
REM ///////////
|
|
||||||
REM FILL SCREEN
|
|
||||||
REM ///////////
|
|
||||||
FOR Y = 0 TO SH - 1
|
|
||||||
HPLOT 0,Y TO SW - 1,Y
|
|
||||||
NEXT
|
|
||||||
RETURN
|
|
||||||
REM c==o
|
|
||||||
REM _/____\_
|
|
||||||
REM _.,--'" ||^ || "`z._
|
|
||||||
REM /_/^ ___\|| || _/o\ "`-._
|
|
||||||
REM _/ ]. L_| || .|| \_/_ . _`--._
|
|
||||||
REM /_~7 _ . " ||. || /] \ ]. (_) . "`--.
|
|
||||||
REM |__7~.(_)_ []|+--+|/____T_____________L|
|
|
||||||
REM |__| _^(_) /^ __\____ _ _|
|
|
||||||
REM |__| (_){_) J ]K{__ L___ _ _]
|
|
||||||
REM |__| . _(_) \v /__________|________
|
|
||||||
REM l__l_ (_). []|+-+-<\^ L . _ - ---L|
|
|
||||||
REM \__\ __. ||^l \Y] /_] (_) . _,--'
|
|
||||||
REM \~_] L_| || .\ .\\/~. _,--'"
|
|
||||||
REM \_\ . __/|| |\ \`-+-<'"
|
|
||||||
REM "`---._|J__L|X o~~|[\\ "Millenium Falcon"
|
|
||||||
REM -Row \____/ \___|[// Modified Corellian
|
|
||||||
REM `--' `--+-' YT-1300 Transport (1)
|
|
||||||
]
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user