CLS DIM maze(20, 60) AS STRING DIM Lover AS STRING DIM monster AS STRING DIM antidote AS STRING DIM YouWon AS STRING DIM YouLost AS STRING DIM YorN AS STRING DIM wall AS STRING DIM Intro AS STRING DIM ResistNoLonger AS STRING DIM Resist2 AS STRING DIM x, y, NumWins, NumLoss, LoverX, Difficulty, LoverY, FairLocation, antidoteX, antidoteY, newmonsterX, newmonsterY, monsterX, monsterY AS INTEGER FairLocation = 0 NumWins = 0 NumLoss = 0 wall = CHR$(219) ResistNoLonger = "You feel it's tug through the grey maze of life..." Resist2 = "Impossible to resist, it draws you in." YouLost = "Next time, get to the drugs a little faster." YouWon = "Congratulations, You managed to avoid a fate worse then death..." Lover = CHR$(2) monster = CHR$(3) antidote = CHR$(236) Intro = "Welcome to Beauty and the Beast... satisfaction not guaranteed." COLOR 6 FOR x = 1 TO LEN(Intro) LOCATE 1, x + 1 PRINT MID$(Intro, x, 1) FOR y = 1 TO 200 NEXT y NEXT x SLEEP 1 DO FOR x = 1 TO 60 FOR y = 1 TO 20 maze(y, x) = "" NEXT y NEXT x RANDOMIZE TIMER CLS INPUT "Chose difficulty level: (Scale of 1 to 10)"; Difficulty IF Difficulty = 0 THEN Difficulty = 5 Difficulty = 500 / Difficulty FOR x = 1 TO 60 FOR y = 1 TO 20 IF INT(RND * 5) = 0 THEN maze(y, x) = wall NEXT y NEXT x FOR x = 1 TO 60 maze(1, x) = wall maze(20, x) = wall NEXT x FOR y = 1 TO 20 maze(y, 1) = wall maze(y, 60) = wall NEXT y DO 'Commented out code sets random location for antidote antidoteX = INT(RND * 20) + 3 antidoteY = INT(RND * 2) + 3 IF NOT (maze(antidoteY, antidoteX - 1) = wall) THEN FairLocation = 1 ELSEIF NOT (maze(antidoteY, antidoteX + 1) = wall) THEN FairLocation = 1 ELSEIF NOT (maze(antidoteY - 1, antidoteX) = wall) THEN FairLocation = 1 ELSEIF NOT (maze(antidoteY + 1, antidoteX) = wall) THEN FairLocation = 1 END IF LOOP UNTIL FairLocation = 1 maze(antidoteY, antidoteX) = antidote FOR x = 1 TO 60 FOR y = 1 TO 20 COLOR 8 IF maze(y, x) = antidote THEN COLOR 1 LOCATE y, x PRINT maze(y, x) NEXT y NEXT x monsterX = 2 monsterY = 2 maze(monsterY, monsterX) = "" COLOR 4 LOCATE monsterY, monsterX PRINT monster LoverX = INT(RND * 30) + 30 LoverY = INT(RND * 10) + 10 maze(LoverY, LoverX) = "" COLOR 14 LOCATE LoverY, LoverX PRINT Lover x = 1 DO IF x = 1 THEN COLOR 4 x = 0 ELSE COLOR 1 x = 1 END IF LOCATE antidoteY, antidoteX PRINT maze(antidoteY, antidoteX) COLOR 14 SELECT CASE INKEY$ CASE CHR$(0) + CHR$(72) 'up IF NOT (maze(LoverY - 1, LoverX)) = wall THEN LOCATE LoverY, LoverX PRINT " " LoverY = LoverY - 1 LOCATE LoverY, LoverX PRINT Lover END IF CASE CHR$(0) + CHR$(75) 'left IF NOT (maze(LoverY, LoverX - 1)) = wall THEN LOCATE LoverY, LoverX PRINT " " LoverX = LoverX - 1 LOCATE LoverY, LoverX PRINT Lover END IF CASE CHR$(0) + CHR$(77) 'right IF NOT (maze(LoverY, LoverX + 1)) = wall THEN LOCATE LoverY, LoverX PRINT " " LoverX = LoverX + 1 LOCATE LoverY, LoverX PRINT Lover END IF CASE CHR$(0) + CHR$(80) 'down IF NOT (maze(LoverY + 1, LoverX)) = wall THEN LOCATE LoverY, LoverX PRINT " " LoverY = LoverY + 1 LOCATE LoverY, LoverX PRINT Lover END IF END SELECT IF c > Difficulty THEN COLOR 4 c = 0 DO IF monsterX > LoverX THEN newmonsterX = monsterX - 1 ELSEIF monsterX < LoverX THEN newmonsterX = monsterX + 1 END IF IF monsterY > LoverY THEN newmonsterY = monsterY - 1 ELSEIF monsterY < LoverY THEN newmonsterY = monsterY + 1 END IF LOCATE monsterY, monsterX PRINT " " IF NOT (maze(newmonsterY, newmonsterX) = wall) AND NOT (maze(newmonsterY, newmonsterX) = antidote) THEN monsterX = newmonsterX monsterY = newmonsterY ELSE x = INT(RND * 4) SELECT CASE x CASE 0 IF NOT (maze(monsterY - 1, monsterX) = wall) AND NOT (maze(monsterY - 1, monsterX) = antidote) THEN monsterY = monsterY - 1 CASE 1 IF NOT (maze(monsterY + 1, monsterX) = wall) AND NOT (maze(monsterY + 1, monsterX) = antidote) THEN monsterY = monsterY + 1 CASE 2 IF NOT (maze(monsterY, monsterX - 1) = wall) AND NOT (maze(monsterY, monsterX - 1) = antidote) THEN monsterX = monsterX - 1 CASE 3 IF NOT (maze(monsterY, monsterX + 1) = wall) AND NOT (maze(monsterY, monsterX + 1) = antidote) THEN monsterX = monsterX + 1 END SELECT END IF LOCATE monsterY, monsterX PRINT monster c = c + 1 IF c = 20 THEN LOCATE monsterY, monsterX PRINT " " monsterX = monsterX + 5 maze(monsterY, monsterX) = "" LOCATE monsterY, monsterX PRINT monster END IF LOOP UNTIL NOT ((oldmonsterX = monsterX) AND (oldmonsterY = monsterY)) oldmonsterX = monsterX oldmonsterY = monsterY c = 0 END IF c = c + 1 LOOP UNTIL ((monsterX = LoverX) AND (monsterY = LoverY)) OR (maze(LoverY, LoverX) = antidote) COLOR 12 IF (monsterX = LoverX) THEN FOR x = 1 TO LEN(YouLost) LOCATE 22, x + 1 PRINT MID$(YouLost, x, 1) FOR y = 1 TO 200 NEXT y NEXT x NumWins = NumWins + 1 NumLoss = 0 ELSE FOR x = 1 TO LEN(YouWon) LOCATE 22, x + 1 PRINT MID$(YouWon, x, 1) FOR y = 1 TO 200 NEXT y NEXT x NumWins = 0 NumLoss = NumLoss + 1 END IF SLEEP 2 CLS IF NOT (NumWins = 3) AND NOT (NumLoss = 3) THEN LOCATE 1, 1 PRINT "Play Again? Y/N" DO YorN = INKEY$ LOOP UNTIL (YorN = "Y") OR (YorN = "y") OR (YorN = "N") OR (YorN = "n") END IF LOOP UNTIL (YorN = "N") OR (YorN = "n") OR NumWins = 3 OR NumLoss = 3 CLS IF NumWins = 3 THEN COLOR 4 FOR x = 1 TO LEN(ResistNoLonger) LOCATE 1, x + 1 PRINT MID$(ResistNoLonger, x, 1) FOR y = 1 TO 200 NEXT y NEXT x FOR x = 1 TO LEN(Resist2) LOCATE 2, x + 1 PRINT MID$(Resist2, x, 1) FOR y = 1 TO 200 NEXT y NEXT x SLEEP 1 CLS SCREEN 12 FOR x = 1 TO 100 CIRCLE (220, 150), x, 4 CIRCLE (350, 150), x, 4 LINE (285, 400)-(x * 3.06 + 130, 200), 4 NEXT x ELSEIF NumLoss = 3 THEN SCREEN 12 FOR x = 1 TO 200 CIRCLE (320, 256), x, 14 NEXT x LINE (200, 180)-(260, 230), 0 LINE (201, 180)-(261, 230), 0 LINE (260, 180)-(200, 230), 0 LINE (261, 180)-(201, 230), 0 LINE (380, 180)-(440, 230), 0 LINE (381, 180)-(441, 230), 0 LINE (440, 180)-(380, 230), 0 LINE (441, 180)-(381, 230), 0 FOR x = -40 TO 4300 PSET ((x / 20) + 220, (SIN(x / 150) * 15) + 350), 0 NEXT x COLOR 14 FOR x = 0 TO 11 PRINT "DRUGS!" LOCATE 1, (x * 7) + 1 NEXT x END IF