'=========================================================================== ' Subject: VGA MAZE GENERATOR Date: 02-04-96 (00:59) ' Author: Steve Harmon Code: QB, QBasic, PDS ' Origin: FidoNet QUIK_BAS Echo Packet: EGAVGA.ABC '=========================================================================== 'Don't remember if I wrote this or picked it up somewhere and modified it 'for VGA. It's a little slow, but it works. 100 SCREEN 12 110 CLS 115 DEFINT A-Z 120 A = 106 'width 130 B = 118 'height 140 DIM F(A, B) 150 FORE = 3: BACK = 0 240 FOR Y = 0 TO B * 4 STEP 4 242 FOR X = 0 TO 6 * A 244 PSET (X, Y), FORE: NEXT X, Y 290 FOR X = 0 TO 6 * A STEP 6 292 FOR Y = 0 TO 4 * B 294 PSET (X, Y), FORE: NEXT Y, X 340 FOR E = 1 TO B 342 FOR D = 1 TO A 344 F(D, E) = 0: NEXT D, E 390 J = INT(A / 2): K = INT(B / 2): X = -3: Y = -2: F(J, K) = 2 440 FOR E = 1 TO B: Y = Y + 4 442 FOR D = 1 TO A: X = X + 6 444 IF F(D, E) = 2 THEN GOSUB 540 450 IF INKEY$ <> "" THEN END 452 NEXT D: X = -3: NEXT E: Y = -2: GOTO 440 540 L = INT(RND(1) * 4 + 1) 550 IF D - 1 <> 0 AND F(D - 1, E) = 0 THEN F(D - 1, E) = 1 560 IF D = A THEN 570 ELSE IF F(D + 1, E) = 0 THEN F(D + 1, E) = 1 570 IF E - 1 <> 0 AND F(D, E - 1) = 0 THEN F(D, E - 1) = 1 580 IF B = E THEN 590 ELSE IF F(D, E + 1) = 0 THEN F(D, E + 1) = 1 590 IF L = 1 AND D - 1 <> 0 AND F(D - 1, E) = 1 THEN GOSUB 650 600 IF D = A THEN 610 ELSE IF L = 2 AND F(D + 1, E) = 1 THEN GOSUB 650 610 IF L = 3 AND E - 1 <> 0 AND F(D, E - 1) = 1 THEN GOSUB 720 620 IF B = E THEN 630 ELSE IF L = 4 AND F(D, E + 1) = 1 THEN GOSUB 720 630 IF A * B - 1 = M THEN 790 640 RETURN 650 IF L = 1 THEN F(D - 1, E) = 2: R = X - 3 ELSE IF L = 2 THEN F(D + 1, E) = 2: R = X + 3 660 FOR S = Y - 1 TO Y + 1: PSET (R, S), BACK: NEXT S: M = M + 1: RETURN 720 IF L = 3 THEN F(D, E - 1) = 2: S = Y - 2 ELSE IF L = 4 THEN F(D, E + 1) = 2: S = Y + 2 730 FOR R = X - 2 TO X + 2: PSET (R, S), BACK: NEXT R: M = M + 1: RETURN 790 X = 0: Y = INT(RND(1) * B + 1) * 4 - 3: FOR Y = Y TO Y + 2: PSET (X, Y), BACK: NEXT Y 800 X = A * 6: Y = INT(RND(1) * B + 1) * 4 - 2: FOR Y = Y TO Y + 2: PSET (X, Y), BACK: NEXT Y 890 BEEP: WHILE INKEY$ = "": WEND: END