'****************************************************************************
CLS
RANDOMIZE TIMER
SCREEN 12
CONST TRUE = -1, false = 0, pi = 3.14
CONST up = 1, down = 2, lefty = 3, righty = 4, stopped = 5
CONST wall = 1, sguyr = 7, sguyl = 3, empty = 0, enemyr = 4, enemyl = 5
CONST bonus = 6, warp = 2, exits = 8
speed = 42000
DIM board(9, 12)
DIM fishbubble(2500)
DIM dirchcs(1000)
DIM erow(1000)
DIM ecol(1000)
DIM choices(1000)
DIM wall(2500)
DIM sguyl(2500)
DIM sguyr(2500)
DIM empty(2500)
DIM exits(2500)
DIM enemyr(2500)
DIM enemyl(2500)
DIM bonus(2500)
DIM warp(2500)
'****************************************************************************
GOSUB drawpics
GOSUB titlescreen
GOSUB main
CHAIN "c:\windows\profiles\alex\desktop\q-basi~1\gameinto"
'****************************************************************************
drawpics:
GOSUB wall
GOSUB sguy
GOSUB empty
GOSUB exits
GOSUB enemy
GOSUB bonus
GOSUB warp
RETURN
'****************************************************************************
wall:
CLS
PAINT (1, 1), 1, 1
CIRCLE (25, 25), 23, 7
LINE (35, 10)-(45, 20), 7
LINE (35, 10)-(30, 15), 7
LINE (30, 15)-(45, 20), 7
PAINT (37, 15), 7, 7
PSET (43, 19), 7
GET (1, 1)-(50, 50), wall
RETURN
'****************************************************************************
sguy:
CLS
PAINT (1, 1), 1, 1
LINE (49, 15)-(49, 35), 0
LINE (49, 15)-(37, 23), 0
LINE (49, 35)-(37, 27), 0
LINE (37, 27)-(25, 35), 0
LINE (25, 35)-(20, 35), 0

LINE (37, 23)-(20, 15), 0
LINE (20, 15)-(10, 17), 0
'front of the body of fish
LINE (20, 35)-(10, 33), 0
LINE (10, 17)-(3, 25), 0
LINE (10, 33)-(3, 25), 0
CIRCLE (12, 22), 3, 0
PAINT (12, 22), 0, 0
CIRCLE (11, 22), 1, 15
PAINT (25, 25), 6, 0
'fin of fish
LINE (25, 25)-(28, 28), 0
LINE (28, 28)-(25, 30), 0
LINE (25, 30)-(18, 25), 0

LINE (4, 27)-(15, 27), 1
LINE (10, 33)-(15, 27), 1
LINE (4, 27)-(10, 33), 1
PAINT (10, 30), 1, 1
LINE (4, 27)-(15, 27), 0
LINE (10, 33)-(15, 27), 0
LINE (13, 27)-(10, 30), 0
LINE (10, 30)-(7, 27), 0
PAINT (10, 29), 15, 0
GET (1, 1)-(50, 50), sguyl
'----------------------------------------------------------------------------
CLS
PAINT (1, 1), 1, 1
LINE (2, 15)-(2, 35), 0
LINE (2, 15)-(13, 23), 0
LINE (2, 35)-(13, 27), 0
LINE (13, 23)-(30, 15), 0
LINE (20, 18)-(35, 15), 0
LINE (13, 27)-(25, 35), 0
LINE (25, 35)-(30, 35), 0
'LINE (25, 15)-(30, 10), 4
'LINE (30, 10)-(40, 17), 4
LINE (35, 15)-(40, 17), 0
LINE (30, 35)-(40, 33), 0
LINE (40, 17)-(48, 25), 0
LINE (40, 33)-(48, 25), 0
CIRCLE (38, 22), 3, 0
PAINT (38, 22), 0, 0
CIRCLE (39, 22), 1, 15
PAINT (25, 25), 6, 0
LINE (25, 25)-(22, 28), 0
LINE (22, 28)-(25, 30), 0
LINE (25, 30)-(32, 25), 0
LINE (46, 27)-(35, 27), 1
LINE (40, 33)-(35, 27), 1
LINE (46, 27)-(40, 33), 1
PAINT (40, 30), 1, 1
LINE (46, 27)-(35, 27), 0
LINE (40, 33)-(35, 27), 0
LINE (37, 27)-(40, 30), 0
LINE (40, 30)-(43, 27), 0
PAINT (40, 29), 15, 0
GET (1, 1)-(50, 50), sguyr
CLS
PAINT (1, 1), 1, 1
PUT (1, 1), sguyr, PSET
CIRCLE (25, 25), 23, 13
LINE (35, 10)-(45, 20), 13
LINE (35, 10)-(30, 15), 13
LINE (30, 15)-(45, 20), 13
PAINT (37, 15), 13, 13
PSET (43, 19), 13
GET (1, 1)-(50, 50), fishbubble
RETURN
'****************************************************************************
empty:
CLS
PAINT (1, 1), 1, 1
GET (1, 1)-(50, 50), empty
RETURN
'****************************************************************************
exits:
CLS
PAINT (1, 1), 1, 1
LINE (25, 2)-(25, 25), 14
LINE (13, 25)-(25, 25), 14
LINE (25, 25)-(37, 25), 14
LINE (13, 25)-(11, 37), 14
LINE (37, 25)-(39, 37), 14
LINE (25, 25)-(25, 40), 14
LINE (11, 37)-(8, 34), 14
LINE (39, 37)-(36, 34), 14
LINE (39, 37)-(42, 34), 14
LINE (25, 37)-(22, 34), 14
LINE (25, 37)-(28, 34), 14
CIRCLE (25, 2), 3, 0
PAINT (23, 2), 13, 0
LINE (11, 37)-(14, 34), 14
GET (1, 1)-(50, 50), exits
RETURN
'****************************************************************************
enemy:
CLS
PAINT (1, 1), 1, 1
PUT (1, 1), sguyr, PSET
LINE (25, 16)-(30, 10), 0
LINE (30, 10)-(40, 18), 0
LINE (33, 15)-(33, 20), 6
PAINT (25, 20), 8, 0
CIRCLE (39, 22), 1, 4
LINE (46, 27)-(35, 27), 1
LINE (40, 33)-(35, 27), 1
LINE (46, 27)-(40, 33), 1
PAINT (40, 30), 1, 1
LINE (46, 27)-(35, 27), 0
LINE (40, 33)-(35, 27), 0
LINE (37, 27)-(40, 30), 0
LINE (40, 30)-(43, 27), 0
PAINT (40, 29), 15, 0
GET (1, 1)-(50, 50), enemyr
'----------------------------------------------------------------------------
CLS
PAINT (1, 1), 1, 1
PUT (1, 1), sguyl, PSET
LINE (25, 16)-(20, 10), 0
LINE (20, 10)-(10, 18), 0
LINE (17, 15)-(17, 20), 6

CIRCLE (11, 22), 1, 4
PAINT (25, 20), 8, 0
LINE (4, 27)-(15, 27), 1
LINE (10, 33)-(15, 27), 1
LINE (4, 27)-(10, 33), 1
PAINT (10, 30), 1, 1
LINE (4, 27)-(15, 27), 0
LINE (10, 33)-(15, 27), 0
LINE (13, 27)-(10, 30), 0
LINE (10, 30)-(7, 27), 0
PAINT (10, 29), 15, 0
GET (1, 1)-(50, 50), enemyl
RETURN
'****************************************************************************
bonus:
CLS
PAINT (1, 1), 1, 1
CIRCLE (25, 17), 15, 0, 1.4 * pi, 2 * pi, 1
LINE (40, 17)-(40, 1), 0
LINE (20, 30)-(22, 27), 0
LINE (15, 2)-(10, 7), 0
LINE (15, 2)-(20, 7), 0
LINE (10, 7)-(15, 35), 0
LINE (20, 7)-(25, 30), 0
LINE (15, 35)-(35, 38), 0
LINE (25, 30)-(40, 33), 0
LINE (35, 38)-(40, 45), 0
LINE (40, 33)-(50, 45), 0
LINE (50, 45)-(45, 50), 0
LINE (40, 45)-(45, 50), 0
PAINT (15, 5), 6, 0
GET (1, 1)-(50, 50), bonus
RETURN
'****************************************************************************
warp:
CLS
PAINT (1, 1), 1, 1
CIRCLE (25, 25), 23, 7
LINE (35, 10)-(45, 20), 7
LINE (35, 10)-(30, 15), 7
LINE (30, 15)-(45, 20), 7
PAINT (37, 15), 7, 7
PAINT (25, 25), 13, 7
PSET (43, 19), 7
GET (1, 1)-(50, 50), warp
RETURN
'****************************************************************************
titlescreen:
CLS
RETURN
'****************************************************************************
main:
donemain = false
WHILE NOT donemain
CLS
PAINT (1, 1), 1, 1
row = 1
FOR col = 1 TO 12
PUT ((col - 1) * 50, (row - 1) * 50), wall, PSET
NEXT col
col = 12
FOR row = 1 TO 9
PUT ((col - 1) * 50, (row - 1) * 50), wall, PSET
NEXT row
row = 9
FOR col = 12 TO 1 STEP -1
PUT ((col - 1) * 50, (row - 1) * 50), wall, PSET
NEXT col
col = 1
FOR row = 9 TO 1 STEP -1
PUT ((col - 1) * 50, (row - 1) * 50), wall, PSET
NEXT row
LOCATE 10, 30
COLOR 3
PRINT "Tritons Main Menu"
LOCATE 11, 30
COLOR 11
PRINT "1) Instructions"
LOCATE 12, 30
COLOR 11
PRINT "2) Play Game"
LOCATE 13, 30
COLOR 11
PRINT "3) Cheats"
LOCATE 14, 30
COLOR 11
PRINT "4) Speed"
LOCATE 15, 30
COLOR 11
PRINT "5) Exit"
COLOR 3
LOCATE 16, 30
INPUT "What is your choice?: ", mainchc
IF mainchc = 1 THEN
        'gosub instructions
ELSEIF mainchc = 2 THEN
        GOSUB game
ELSEIF mainchc = 3 THEN
        'GOSUB cheatmenu
ELSEIF mainchc = 4 THEN
        CLS
        INPUT "What speed do you want?: ", speed
ELSEIF mainchc = 5 THEN
        donemain = TRUE
END IF
WEND
RETURN
'****************************************************************************
game:
CLS
PAINT (1, 1), 1, 1
COLOR 2
INPUT "If you know a level password type it in: ", levelpass$
IF levelpass$ = "TRITONSFORK" THEN
        level = 2
ELSEIF levelpass$ = "AIRBUBBLE" THEN
        level = 3
ELSEIF levelpass$ = "SHARKATTACK" THEN
        level = 4
ELSEIF levelpass$ = "GUPPY" THEN
        level = 5
ELSEIF levelpass$ = "RAINBOWTROUT" THEN
        level = 6
ELSEIF levelpass$ = "CORALREEF" THEN
        level = 7
ELSE
        level = 1
END IF
'----------------------------------------------------------------------------
DONEGAME = false
bonuscatch = 0
direction = stopped
WHILE NOT DONEGAME
direction = stopped
lives = 10
bonuscatch = 0
donelev = false
GOSUB levelchanger
WHILE NOT donelev
p1 = INT(RND * 63) + 1
p2 = INT(RND * 63) + 1
p3 = INT(RND * 63) + 1
PALETTE 13, p1 * 65536 + p2 * 256 + p3
PUT ((startcol - 1) * 50, (startrow - 1) * 50), wall, PSET
IF srow = startrow AND scol = startcol THEN
        PUT ((startcol - 1) * 50, (startrow - 1) * 50), fishbubble, PSET
END IF
c$ = INKEY$
                FOR x = 1 TO numenemies
                IF srow = erow(x) AND scol = ecol(x) THEN
                        board(srow, scol) = empty
                        lives = lives - 1
                        direction = stopped
                        BEEP
                        PUT ((scol - 1) * 50, (srow - 1) * 50), empty, PSET
                        srow = startrow
                        scol = startcol
                        PUT ((scol - 1) * 50, (srow - 1) * 50), sguyr, PSET
                END IF
                NEXT x

IF lives <= 0 THEN
        donelev = TRUE
        DONEGAME = TRUE
END IF
IF board(srow, scol) = exits THEN
        donelev = TRUE
       
END IF

IF c$ <> "" THEN
        GOSUB keystruck
END IF
FOR delay = 1 TO speed
NEXT delay
GOSUB movement
GOSUB enemymovement
WEND

IF lives > 0 THEN
FOR radius = 1 TO 450
CIRCLE (320, 240), radius, 2
'SOUND INT(RND * 4000) + 300, 1
NEXT radius
FOR radius = 450 TO 1 STEP -1
CIRCLE (320, 240), radius, 0
'SOUND INT(RND * 4000) + 300, 1
NEXT radius
       
        COLOR 2
        LOCATE 15, 40
        PRINT "Good Job!"
        level = level + 1
ELSE
FOR radius = 1 TO 450
CIRCLE (320, 240), radius, 4
NEXT radius
FOR radius = 450 TO 1 STEP -1
CIRCLE (320, 240), radius, 0
NEXT radius
       
        COLOR 4
        LOCATE 15, 40
        PRINT "Too Bad!"
END IF
DO
LOCATE 25, 1
PRINT "Press Any Key"
LOOP UNTIL INKEY$ <> ""
IF level = 8 THEN
DONEGAME = TRUE
END IF
WEND
RETURN
'****************************************************************************
keystruck:
p1 = INT(RND * 63) + 1
p2 = INT(RND * 63) + 1
p3 = INT(RND * 63) + 1
PALETTE 13, p1 * 65536 + p2 * 256 + p3

IF c$ = CHR$(27) THEN
        donelev = TRUE
        DONEGAME = TRUE
ELSEIF c$ = " " THEN
        direction = stopped
        IF ch$ = "yes" THEN
                ch$ = "no"
                 board(srow, scol) = empty
        END IF


ELSEIF c$ = CHR$(0) + "H" THEN
        direction = up
        IF ch$ = "yes" THEN
                ch$ = "no"
                 board(srow, scol) = empty
        END IF

ELSEIF c$ = CHR$(0) + "P" THEN
        direction = down
        IF ch$ = "yes" THEN
                ch$ = "no"
                 board(srow, scol) = empty
        END IF

ELSEIF c$ = CHR$(0) + "K" THEN
        direction = lefty
        IF ch$ = "yes" THEN
                ch$ = "no"
                 board(srow, scol) = empty
        END IF

ELSEIF c$ = CHR$(0) + "M" THEN
        direction = righty
        IF ch$ = "yes" THEN
                ch$ = "no"
                 board(srow, scol) = empty
        END IF

ELSEIF c$ = "s" OR c$ = "S" THEN
        direction = stopped
        board(srow, scol) = wall
        PUT ((scol - 1) * 50, (srow - 1) * 50), fishbubble, PSET
        ch$ = "yes"
END IF
RETURN
'****************************************************************************
movement:
p1 = INT(RND * 63) + 1
p2 = INT(RND * 63) + 1
p3 = INT(RND * 63) + 1
PALETTE 13, p1 * 65536 + p2 * 256 + p3

IF board(srow, scol) = exits THEN
        donelev = TRUE
        
END IF

IF direction = up THEN
        IF board(srow - 1, scol) <> wall THEN
                 PUT ((scol - 1) * 50, (srow - 1) * 50), empty, PSET
                 srow = srow - 1
                 PUT ((scol - 1) * 50, (srow - 1) * 50), sguyr, PSET
IF board(srow, scol) = exits THEN
        donelev = TRUE
        
END IF


        END IF
ELSEIF direction = down THEN
        IF board(srow + 1, scol) <> wall THEN
                PUT ((scol - 1) * 50, (srow - 1) * 50), empty, PSET
                srow = srow + 1
                PUT ((scol - 1) * 50, (srow - 1) * 50), sguyl, PSET
IF board(srow, scol) = exits THEN
        donelev = TRUE
        
END IF

        END IF
ELSEIF direction = lefty THEN
        IF board(srow, scol - 1) <> wall THEN
                PUT ((scol - 1) * 50, (srow - 1) * 50), empty, PSET
                scol = scol - 1
                PUT ((scol - 1) * 50, (srow - 1) * 50), sguyl, PSET
                
IF board(srow, scol) = exits THEN
        donelev = TRUE
        
END IF

        END IF
ELSEIF direction = righty THEN
        IF board(srow, scol + 1) <> wall THEN
                PUT ((scol - 1) * 50, (srow - 1) * 50), empty, PSET
                scol = scol + 1
                PUT ((scol - 1) * 50, (srow - 1) * 50), sguyr, PSET
IF board(srow, scol) = exits THEN
        donelev = TRUE
        
END IF

        END IF
END IF
IF srow > 8 THEN
        PUT ((scol - 1) * 50, (srow - 1) * 50), warp, PSET
        srow = 2
        PUT ((scol - 1) * 50, (srow - 1) * 50), sguyl, PSET
ELSEIF srow < 2 THEN
        PUT ((scol - 1) * 50, (srow - 1) * 50), warp, PSET
        srow = 8
        PUT ((scol - 1) * 50, (srow - 1) * 50), sguyr, PSET
ELSEIF scol > 11 THEN
        PUT ((scol - 1) * 50, (srow - 1) * 50), warp, PSET
        scol = 2
        PUT ((scol - 1) * 50, (srow - 1) * 50), sguyr, PSET
ELSEIF scol < 2 THEN
        PUT ((scol - 1) * 50, (srow - 1) * 50), warp, PSET
        scol = 11
        PUT ((scol - 1) * 50, (srow - 1) * 50), sguyl, PSET
END IF
IF board(srow, scol) = bonus THEN
        board(srow, scol) = empty
        bonuscatch = bonuscatch + 1
END IF
IF bonuscatch >= bonusnumber THEN
PUT ((exitcol - 1) * 50, (exitrow - 1) * 50), exits, PSET
board(exitrow, exitcol) = exits
END IF
                FOR x = 1 TO numenemies
                IF srow = erow(x) AND scol = ecol(x) THEN
                direction = stopped
                        board(srow, scol) = empty
                        lives = lives - 1
                        BEEP
                        PUT ((scol - 1) * 50, (srow - 1) * 50), empty, PSET
                        srow = startrow
                        scol = startcol
                        PUT ((scol - 1) * 50, (srow - 1) * 50), sguyr, PSET
                END IF
                NEXT x
IF board(srow, scol) = exits THEN
        donelev = TRUE
        
END IF
RETURN
'****************************************************************************
enemymovement:
p1 = INT(RND * 63) + 1
p2 = INT(RND * 63) + 1
p3 = INT(RND * 63) + 1
PALETTE 13, p1 * 65536 + p2 * 256 + p3
board(startrow, startcol) = wall
               
                FOR x = 1 TO numenemies
                IF srow = erow(x) AND scol = ecol(x) THEN
                direction = stopped
                        board(srow, scol) = empty
                        lives = lives - 1
                        BEEP
                        PUT ((scol - 1) * 50, (srow - 1) * 50), empty, PSET
                        srow = startrow
                        scol = startcol
                        PUT ((scol - 1) * 50, (srow - 1) * 50), sguyr, PSET
                END IF
                NEXT x

FOR x = 1 TO numenemies
        dirchcs = 0
        IF enemydir(x) = up THEN
                IF board(erow(x) - 1, ecol(x)) <> wall AND board(erow(x) - 1, ecol(x)) <> exits AND board(erow(x) - 1, ecol(x)) <> bonus THEN
                        PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), empty, PSET
                        erow(x) = erow(x) - 1
                        PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), enemyr, PSET

                        IF erow(x) < 2 THEN
                                PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), warp, PSET
                                erow(x) = 8
                                PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), enemyr, PSET
                        END IF

                END IF
                IF board(erow(x), ecol(x) - 1) <> wall AND board(erow(x), ecol(x) - 1) <> bonus AND board(erow(x), ecol(x) - 1) <> exits THEN
                        dirchcs = dirchcs + 1
                        choices(dirchcs) = lefty
                END IF
                IF board(erow(x) - 1, ecol(x)) <> wall AND board(erow(x) - 1, ecol(x)) <> bonus AND board(erow(x) - 1, ecol(x)) <> exits THEN
                        dirchcs = dirchcs + 1
                        choices(dirchcs) = up
                END IF
                IF board(erow(x), ecol(x) + 1) <> wall AND board(erow(x), ecol(x) + 1) <> bonus AND board(erow(x), ecol(x) + 1) <> exits THEN
                        dirchcs = dirchcs + 1
                        choices(dirchcs) = righty
                END IF
                IF dirchcs > 0 THEN
                        enemydir(x) = choices(INT(RND * dirchcs) + 1)
                ELSE
                        enemydir(x) = down
                END IF
        ELSEIF enemydir(x) = down THEN
                IF board(erow(x) + 1, ecol(x)) <> wall AND board(erow(x) + 1, ecol(x)) <> exits AND board(erow(x) + 1, ecol(x)) <> bonus THEN
                        PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), empty, PSET
                        erow(x) = erow(x) + 1
                        PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), enemyl, PSET

                        IF erow(x) > 8 THEN
                                PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), warp, PSET
                                erow(x) = 2
                                PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), enemyl, PSET
                        END IF
                END IF
                IF board(erow(x), ecol(x) - 1) <> wall AND board(erow(x), ecol(x) - 1) <> bonus AND board(erow(x), ecol(x) - 1) <> exits THEN
                        dirchcs = dirchcs + 1
                        choices(dirchcs) = lefty
                END IF
                IF board(erow(x) + 1, ecol(x)) <> wall AND board(erow(x) + 1, ecol(x)) <> bonus AND board(erow(x) + 1, ecol(x)) <> exits THEN
                        dirchcs = dirchcs + 1
                        choices(dirchcs) = down
                END IF
                IF board(erow(x), ecol(x) + 1) <> wall AND board(erow(x), ecol(x) + 1) <> bonus AND board(erow(x), ecol(x) + 1) <> exits THEN
                        dirchcs = dirchcs + 1
                        choices(dirchcs) = righty
                END IF
                IF dirchcs > 0 THEN
                        enemydir(x) = choices(INT(RND * dirchcs) + 1)
                ELSE
                        enemydir(x) = up
                END IF

        ELSEIF enemydir(x) = lefty THEN
                IF board(erow(x), ecol(x) - 1) <> wall AND board(erow(x), ecol(x) - 1) <> exits AND board(erow(x), ecol(x) - 1) <> bonus THEN
                        PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), empty, PSET
                        ecol(x) = ecol(x) - 1
                        PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), enemyl, PSET

                IF ecol(x) < 2 THEN
                                PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), warp, PSET
                                ecol(x) = 11
                                PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), enemyl, PSET
                END IF
                END IF
                IF board(erow(x), ecol(x) - 1) <> wall AND board(erow(x), ecol(x) - 1) <> bonus AND board(erow(x), ecol(x) - 1) <> exits THEN
                        dirchcs = dirchcs + 1
                        choices(dirchcs) = lefty
                END IF
                IF board(erow(x) + 1, ecol(x)) <> wall AND board(erow(x) + 1, ecol(x)) <> bonus AND board(erow(x) + 1, ecol(x)) <> exits THEN
                        dirchcs = dirchs + 1
                        choices(dirchcs) = down
                END IF
                IF board(erow(x) - 1, ecol(x)) <> wall AND board(erow(x) - 1, ecol(x)) <> bonus AND board(erow(x) - 1, ecol(x)) <> exits THEN
                dirchcs = dirchcs + 1
                choices(dirchcs) = up
                END IF
                IF dirchcs > 0 THEN
                        enemydir(x) = choices(INT(RND * dirchcs) + 1)
                ELSE
                        enemydir(x) = righty
                END IF

        ELSEIF enemydir(x) = righty THEN
                IF board(erow(x), ecol(x) + 1) <> wall AND board(erow(x), ecol(x) + 1) <> exits AND board(erow(x), ecol(x) + 1) <> bonus THEN
                        PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), empty, PSET
                        ecol(x) = ecol(x) + 1
                        PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), enemyr, PSET

                        IF ecol(x) > 11 THEN
                                PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), warp, PSET
                                ecol(x) = 2
                                PUT ((ecol(x) - 1) * 50, (erow(x) - 1) * 50), enemyr, PSET
                        END IF
                END IF
        
                IF board(erow(x), ecol(x) + 1) <> wall AND board(erow(x), ecol(x) + 1) <> bonus AND board(erow(x), ecol(x) + 1) <> exits THEN
                        dirchcs = dirchcs + 1
                        choices(dirchcs) = righty
                END IF
                IF board(erow(x) + 1, ecol(x)) <> wall AND board(erow(x) + 1, ecol(x)) <> bonus AND board(erow(x) + 1, ecol(x)) <> exits THEN
                        dirchcs = dirchcs + 1
                        choices(dirchcs) = down
                END IF
                IF board(erow(x) - 1, ecol(x)) <> wall AND board(erow(x) - 1, ecol(x)) <> bonus AND board(erow(x) - 1, ecol(x)) <> exits THEN
                dirchcs = dirchcs + 1
                        choices(dirchcs) = up
                END IF
                IF dirchcs > 0 THEN
                        enemydir(x) = choices(INT(RND * dirchcs) + 1)
                ELSE
                        enemydir(x) = lefty
                END IF
        END IF
NEXT x
RETURN
'****************************************************************************
levelchanger:
CLS
done = false
IF level = 1 THEN
        RESTORE level1
ELSEIF level = 2 THEN
        CLS
        PAINT (1, 1), 1, 1
        COLOR 3
        PRINT "Level 2   Password = TRITONSFORK"
        LOCATE 25, 1
        PRINT "PRESS ANY KEY"
        DO
        LOOP UNTIL INKEY$ <> ""
        RESTORE level2
ELSEIF level = 3 THEN
        CLS
        PAINT (1, 1), 1, 1
        COLOR 3
        PRINT "Level 3   Password = AIRBUBBLE"
        LOCATE 25, 1
        PRINT "PRESS ANY KEY"
        DO
        LOOP UNTIL INKEY$ <> ""
        RESTORE level3
ELSEIF level = 4 THEN
        CLS
        PAINT (1, 1), 1, 1
        COLOR 3
        PRINT "Level 5   Password = SHARKATTACK"
        LOCATE 25, 1
        PRINT "PRESS ANY KEY"
        DO
        LOOP UNTIL INKEY$ <> ""
        RESTORE level4
ELSEIF level = 5 THEN
        CLS
        PAINT (1, 1), 1, 1
        COLOR 3
        PRINT "Level 5   Password = GUPPY"
        LOCATE 25, 1
        PRINT "PRESS ANY KEY"
        DO
        LOOP UNTIL INKEY$ <> ""
        RESTORE level5
ELSEIF level = 6 THEN
        CLS
        PAINT (1, 1), 1, 1
        COLOR 3
        PRINT "Level 6   Password = RAINBOWTROUT"
        LOCATE 25, 1
        PRINT "PRESS ANY KEY"
        DO
        LOOP UNTIL INKEY$ <> ""
        RESTORE level6
ELSEIF level = 7 THEN
        CLS
        PAINT (1, 1), 1, 1
        COLOR 3
        PRINT "Level 7   Password = CORALREEF"
        LOCATE 25, 1
        PRINT "PRESS ANY KEY"
        DO
        LOOP UNTIL INKEY$ <> ""
        RESTORE level7
ELSE
        done = TRUE
        DONEGAME = TRUE
END IF
IF done = false THEN
numenemies = 0
bonusnumber = 0
FOR row = 1 TO 9
FOR col = 1 TO 12
READ board(row, col)
IF board(row, col) = empty THEN
        PUT ((col - 1) * 50, (row - 1) * 50), empty, PSET
ELSEIF board(row, col) = wall THEN
        PUT ((col - 1) * 50, (row - 1) * 50), wall, PSET
ELSEIF board(row, col) = sguyr THEN
        startrow = row
        board(row, col) = wall
        startcol = col
        srow = row
        scol = col
        PUT ((col - 1) * 50, (row - 1) * 50), sguyr, PSET
ELSEIF board(row, col) = sguyl THEN
        startrow = row
        startcol = col
        board(row, col) = wall
        srow = row
        scol = col
        PUT ((col - 1) * 50, (row - 1) * 50), sguyl, PSET
ELSEIF board(row, col) = enemyr THEN
        numenemies = numenemies + 1
        board(row, col) = empty
        erow(numenemies) = row
        ecol(numenemies) = col
        enemydir(numenemies) = INT(RND * 4) + 1
        PUT ((col - 1) * 50, (row - 1) * 50), enemyr, PSET
ELSEIF board(row, col) = enemyl THEN
        numenemies = numenemies + 1
        board(row, col) = empty
        erow(numenemies) = row
        ecol(numenemies) = col
        enemydir(numenemies) = INT(RND * 4) + 1
        PUT ((col - 1) * 50, (row - 1) * 50), enemyl, PSET
ELSEIF board(row, col) = bonus THEN
        bonusnumber = bonusnumber + 1
        PUT ((col - 1) * 50, (row - 1) * 50), bonus, PSET
ELSEIF board(row, col) = warp THEN
        PUT ((col - 1) * 50, (row - 1) * 50), warp, PSET
ELSEIF board(row, col) = exits THEN
        exitrow = row
        exitcol = col
        board(row, col) = wall
        PUT ((col - 1) * 50, (row - 1) * 50), wall, PSET
END IF
NEXT col
NEXT row
END IF
RETURN
'****************************************************************************
level1:
DATA 1,1,2,1,1,1,2,1,1,1,2,1
DATA 1,0,0,0,1,7,0,0,0,1,0,1
DATA 2,0,1,1,1,1,1,1,0,1,0,2
DATA 1,0,5,0,0,0,0,1,6,1,0,1
DATA 1,1,1,1,1,0,1,1,0,1,0,1
DATA 1,0,6,0,0,0,0,6,0,1,6,1
DATA 2,0,0,0,6,4,1,1,1,1,0,2
DATA 1,6,0,0,1,0,0,0,0,0,0,1
DATA 1,1,2,1,1,8,2,1,1,1,2,1
level2:
DATA 2,1,2,2,2,2,2,2,2,2,1,2
DATA 1,6,0,0,0,0,0,0,0,0,6,1
DATA 2,0,0,0,0,5,0,0,7,0,0,2
DATA 2,0,0,0,0,0,0,0,0,0,0,2
DATA 2,0,0,4,0,8,0,0,5,0,0,2
DATA 2,0,0,0,0,0,0,0,0,0,0,2
DATA 2,0,0,0,0,4,0,0,0,0,0,2
DATA 1,6,0,0,0,0,0,0,0,0,6,1
DATA 2,1,2,2,2,2,2,2,2,2,1,2
level3:
DATA 1,1,1,2,1,2,1,2,1,2,1,2
DATA 2,5,1,0,1,0,1,0,1,0,0,1
DATA 1,0,0,0,0,0,0,0,6,0,0,2
DATA 2,0,0,1,6,1,0,1,0,1,0,1
DATA 1,0,0,0,0,0,0,5,0,0,0,2
DATA 1,0,1,0,1,0,1,0,1,0,1,1
DATA 1,0,0,6,0,0,0,0,6,7,0,2
DATA 1,0,8,0,1,0,1,0,1,0,1,1
DATA 1,1,1,2,1,2,1,2,1,2,1,2
level4:
DATA 2,2,1,2,2,2,2,1,2,2,2,2
DATA 2,0,7,0,0,0,0,0,0,0,0,2
DATA 1,8,1,1,1,1,1,1,1,1,0,1
DATA 1,1,6,6,0,0,0,0,6,1,0,1
DATA 2,0,0,0,0,0,0,0,0,1,0,2
DATA 2,0,5,0,5,0,0,0,6,1,0,2
DATA 2,0,0,0,0,0,0,1,1,1,0,2
DATA 2,0,0,0,0,0,0,6,0,0,0,2
DATA 2,2,1,2,2,2,2,1,2,2,2,2
level5:
DATA 1,1,1,1,1,1,1,1,1,1,2,1
DATA 1,7,6,6,6,6,6,6,6,6,0,1
DATA 1,6,6,6,6,6,6,6,6,6,6,1
DATA 1,6,6,6,6,6,6,6,6,6,6,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,8,0,0,0,0,0,0,0,0,0,1
DATA 1,0,5,4,5,4,5,0,0,1,6,1
DATA 1,0,0,0,0,0,0,0,0,1,0,1
DATA 1,1,1,1,1,1,1,1,1,1,2,1
level6:                       
DATA 1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,7,0,0,1,6,0,0,5,0,8,1
DATA 1,6,0,6,1,6,6,0,0,0,0,1
DATA 1,0,0,0,1,0,0,0,0,0,0,1
DATA 1,0,6,0,1,0,5,0,6,6,0,1
DATA 1,0,0,0,1,0,0,0,0,6,4,1
DATA 1,6,0,6,1,0,1,1,1,1,6,1
DATA 2,0,0,0,1,0,0,0,0,0,0,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1
level7:
DATA 1,1,2,1,1,1,1,1,1,1,2,1
DATA 1,7,0,1,0,1,0,8,1,6,0,1
DATA 1,0,0,0,0,0,0,0,1,0,1,1
DATA 1,1,1,1,0,1,0,1,1,6,0,1
DATA 2,0,1,0,5,5,0,0,1,1,0,2
DATA 1,0,1,1,0,1,0,1,1,1,1,1
DATA 1,0,0,1,0,0,0,0,1,5,6,1
DATA 1,1,0,1,0,1,0,1,1,6,0,1
DATA 1,1,2,1,1,1,1,1,1,1,2,1

RETURN
'****************************************************************************

