Attempt to close right side

This commit is contained in:
Bill Chatfield 2021-02-14 05:26:36 -05:00
parent 2d8bb977b9
commit 587da6f982

204
maze.baz
View File

@ -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)
]