'===========================================================================
' Subject: TRASH MAN (LIKE PAC-MAN)           Date: 10-11-98 (14:00)       
'  Author: Dan Egbert                         Code: QB, QBasic, PDS        
'  Origin: qbasic.com                       Packet: GAMES.ABC
'===========================================================================
'                              ***************
'                              * Trash   Man *
'                              *by Dan Egbert*
'                              *v. 1.2       *
'                              *             *
'                              ***************
'Modified 8/18/98 by David Zohrob (mallard@qbasic.com) for a delay

delay = 15000           'this is for my p200 mmx - dz

SCREEN 12
'Const's
CONST black = 0, lgray = 1, dgray = 2, white = 3, yellow = 4, tann = 5
CONST dgreen = 6, lblue = 7, blue = 8, dblue = 9, dred = 10, orange = 11
CONST pink = 12, red = 13, lgreen = 14, br = 15
CONST false = 0, true = -1
CONST pi = 3.14


'Other Const's
CONST wide = 35, high = 35, empty = 16, wall1 = 1, trash = 0
CONST grass = 8
CONST numrows = 13, numcols = 18
'Pictures Const's
CONST truck = 3, dead = 5, banana = 10, can = 11, fish = 12, canow = 13
CONST tman = 14, bug = 15, road = 9
'Moving const's
CONST up = 1, down = 2, lefty = 3, righty = 4
'**************
'****************************************************************************
'Dims
DIM truckl(310): DIM truckr(310): DIM banana(310): DIM trashman(310): DIM can(310)
DIM canowr(310): DIM canowl(310): DIM canowu(310): DIM canowd(310): DIM fish(310)
DIM trucku(310): DIM truckd(310): DIM trashmr(310): DIM trashml(310): DIM trashmd(310)
DIM trashmu(310): DIM bug(310): DIM deadtman(310): DIM grass(310): DIM building1(310)
DIM building2(310): DIM building3(310): DIM road(310): DIM orb(310)
DIM board(numrows, numcols)
'****************************************************************************
'Palette's
PALETTE black, 65536 * 0 + 256 * 0 + 0
PALETTE lgray, 65536 * 31 + 256 * 31 + 31
PALETTE dgray, 65536 * 27 + 256 * 23 + 20
PALETTE white, 65536 * 63 + 256 * 63 + 63
PALETTE yellow, 65536 * 30 + 256 * 63 + 63
PALETTE tann, 65536 * 30 + 256 * 43 + 63
PALETTE dgreen, 65536 * 0 + 256 * 10 + 0
PALETTE lblue, 65536 * 63 + 256 * 50 + 0
PALETTE blue, 65536 * 63 + 256 * 22 + 0
PALETTE dblue, 65536 * 63 + 256 * 0 + 0
PALETTE dred, 65536 * 0 + 256 * 0 + 63
PALETTE orange, 65536 * 0 + 256 * 40 + 63
PALETTE pink, 65536 * 30 + 256 * 0 + 63
PALETTE red, 65536 * 15 + 256 * 0 + 63
PALETTE lgreen, 65536 * 0 + 256 * 40 + 0
PALETTE br, 65536 * 9 + 256 * 20 + 30
'****************************************************************************
'Main Program
GOSUB picts
GOSUB title
GOSUB menu
END
'****************************************************************************
picts:
GOSUB truck: GOSUB truck2: GOSUB banana: GOSUB can: GOSUB canowr: GOSUB canowl
GOSUB canowu: GOSUB canowd: GOSUB orb: GOSUB fish: GOSUB trucku: GOSUB truckd
GOSUB trashmr: GOSUB trashml: GOSUB trashmd: GOSUB trashmu: GOSUB bug: GOSUB deadtman
GOSUB grass: GOSUB building1: GOSUB building2: GOSUB building3: GOSUB road
RETURN
'****************************************************************************
'Truck going left
truck:
CLS
LINE (1, 1)-(35, 35), lgray, BF
LINE (10, 11)-(30, 25), br, BF
LINE (10, 15)-(5, 20), br
LINE (5, 20)-(5, 25), br
LINE (5, 25)-(10, 25), br
PAINT (7, 23), br
CIRCLE (25, 27), 3, dgray
PAINT (25, 27), black, dgray
CIRCLE (12, 27), 3, dgray
PAINT (12, 27), black, dgray
LINE (11, 12)-(16, 14), lgray, BF
CIRCLE (6, 23), 1, yellow
PAINT (6, 23), yellow, yellow
GET (1, 1)-(35, 35), truckl
RETURN
'***************************
'Truck going right
truck2:
CLS
LINE (1, 1)-(35, 35), lgray, BF
LINE (5, 11)-(25, 25), br, BF
LINE (25, 15)-(30, 20), br
LINE (30, 20)-(30, 25), br
LINE (30, 25)-(25, 25), br
PAINT (27, 23), br
CIRCLE (23, 27), 3, dgray
PAINT (23, 27), black, dgray
CIRCLE (10, 27), 3, dgray
PAINT (10, 27), black, dgray
LINE (19, 12)-(24, 14), lgray, BF
CIRCLE (29, 23), 1, yellow
PAINT (29, 23), yellow, yellow
GET (1, 1)-(35, 35), truckr
RETURN
'***************************
'truck going up
trucku:
CLS
LINE (1, 1)-(35, 35), lgray, BF
LINE (5, 5)-(30, 30), br, BF
CIRCLE (10, 30), 6, black, pi * 1, pi * 2, 3
LINE (8, 30)-(13, 30), black
PAINT (10, 31), black, black
CIRCLE (26, 30), 6, black, pi * 1, pi * 2, 3
LINE (24, 30)-(29, 30), black
PAINT (26, 31), black, black
GET (1, 1)-(35, 35), trucku
RETURN
'***************************
banana:
CLS
LINE (1, 1)-(35, 35), lgray, BF
CIRCLE (18, 20), 14, black, 1.2 * pi, 2 * pi
CIRCLE (18, 20), 8, black, 1.3 * pi, 2 * pi
CIRCLE (18, 20), 10, black, 1.3 * pi, 2 * pi
LINE (13, 26)-(8, 27), black
LINE (26, 20)-(25, 6), black
LINE (25, 5)-(28, 6), black
LINE (28, 6)-(32, 20), black
LINE (10, 28)-(13, 29), black
PAINT (18, 31), yellow, black
GET (1, 1)-(35, 35), banana
RETURN
'****************************
'truck going down
truckd:
CLS
LINE (1, 1)-(35, 35), lgray, BF
LINE (5, 5)-(30, 30), br, BF
CIRCLE (10, 30), 6, black, pi * 1, pi * 2, 3
LINE (8, 30)-(13, 30), black
PAINT (10, 31), black, black
CIRCLE (26, 30), 6, black, pi * 1, pi * 2, 3
LINE (24, 30)-(29, 30), black
PAINT (26, 31), black, black
CIRCLE (8, 25), 2, yellow
PAINT (8, 25), yellow, yellow
CIRCLE (27, 25), 2, yellow
PAINT (27, 25), yellow, yellow
LINE (13, 17)-(22, 27), black, BF
FOR x = 13 TO 23 STEP 2
LINE (x, 13)-(x, 27), br
LINE (10, 9)-(25, 14), lgray, BF
NEXT x
GET (1, 1)-(35, 35), truckd
RETURN
'***************************
banana2:
CLS
LINE (1, 1)-(35, 35), lgray, BF
LINE (1, 30)-(17, 26), yellow
LINE (15, 15)-(17, 25), yellow
LINE (15, 15)-(20, 17), yellow
LINE (20, 17)-(23, 25), yellow
LINE (23, 25)-(35, 30), yellow
LINE (1, 35)-(35, 35), yellow
LINE (1, 35)-(1, 30), yellow
LINE (35, 35)-(35, 30), yellow
PAINT (20, 27), yellow, yellow
GET (1, 1)-(35, 35), banana
RETURN
'***************************
trashmr:
CLS
LINE (1, 1)-(35, 35), lgray, BF
CIRCLE (17, 10), 5, orange
PAINT (17, 10), orange, orange
CIRCLE (19, 9), 0, black
CIRCLE (21, 12), 3, black, pi * 1, pi * 1.5, .5
LINE (17, 10)-(17, 25), orange
LINE (17, 25)-(12, 32), orange
LINE (17, 25)-(22, 32), orange
LINE (17, 20)-(12, 25), orange
LINE (17, 20)-(22, 25), orange
GET (1, 1)-(35, 35), trashmr
RETURN
'***************************
trashml:
CLS
LINE (1, 1)-(35, 35), lgray, BF
CIRCLE (17, 10), 5, orange
PAINT (17, 10), orange, orange
CIRCLE (15, 9), 0, black
CIRCLE (15, 12), 3, black, pi * 1.4, pi * 2, .5
LINE (17, 10)-(17, 25), orange
LINE (17, 25)-(12, 32), orange
LINE (17, 25)-(22, 32), orange
LINE (17, 20)-(12, 25), orange
LINE (17, 20)-(22, 25), orange
GET (1, 1)-(35, 35), trashml
RETURN
'***************************
trashmd:
CLS
LINE (1, 1)-(35, 35), lgray, BF
CIRCLE (17, 10), 5, orange
PAINT (17, 10), orange, orange
CIRCLE (19, 9), 0, black
CIRCLE (15, 9), 0, black
CIRCLE (17, 12), 3, black, pi * 1, pi * 2, .5
LINE (17, 10)-(17, 25), orange
LINE (17, 25)-(12, 32), orange
LINE (17, 25)-(22, 32), orange
LINE (17, 20)-(12, 25), orange
LINE (17, 20)-(22, 25), orange
GET (1, 1)-(35, 35), trashmd
RETURN
'***************************
trashmu:
CLS
LINE (1, 1)-(35, 35), lgray, BF
CIRCLE (17, 10), 5, orange
PAINT (17, 10), orange, orange
LINE (17, 10)-(17, 25), orange
LINE (17, 25)-(12, 32), orange
LINE (17, 25)-(22, 32), orange
LINE (17, 20)-(12, 25), orange
LINE (17, 20)-(22, 25), orange
GET (1, 1)-(35, 35), trashmu
RETURN
'***************************
deadtman:
CLS
LINE (1, 1)-(35, 35), lgray, BF
CIRCLE (7, 27), 5, orange
PAINT (7, 27), orange, orange
LINE (7, 27)-(25, 27), orange
LINE (25, 27)-(30, 24), orange
LINE (30, 24)-(33, 26), orange
LINE (25, 27)-(29, 32), orange
LINE (29, 32)-(32, 30), orange
LINE (20, 27)-(23, 20), orange
LINE (20, 27)-(23, 31), orange
LINE (5, 25)-(8, 28), black
LINE (8, 25)-(5, 28), black
LINE (10, 23)-(10, 26), black
LINE (10, 26)-(12, 27), black
GET (1, 1)-(35, 35), deadtman
RETURN
'***************************
can:
CLS
LINE (1, 1)-(35, 35), lgray, BF
CIRCLE (17, 10), 7, black, , , .3
LINE (10, 10)-(10, 30), black
LINE (24, 10)-(24, 30), black
PAINT (17, 10), black, black
CIRCLE (17, 30), 7, black, pi * 1, 0, .3
CIRCLE (17, 25), 7, black, pi * 1, 0, .3
CIRCLE (17, 15), 7, black, pi * 1, 0, .3
PAINT (17, 13), dgray, black
PAINT (17, 25), br, black
PAINT (17, 30), dgray, black
GET (1, 1)-(35, 35), can
RETURN
'*************************
canowr:
CLS
LINE (1, 1)-(35, 35), lgray, BF
CIRCLE (5, 20), 7, black, pi * .5, pi * 1.5, 3
LINE (5, 13)-(25, 13), black
LINE (5, 27)-(25, 27), black
CIRCLE (27, 20), 7, black, , , 3
PAINT (27, 20), black, black
LINE (4, 23)-(8, 27), black
LINE (4, 17)-(14, 27), black
LINE (6, 12)-(21, 27), black
LINE (15, 12)-(25, 25), black
LINE (4, 18)-(8, 14), black
LINE (4, 24)-(14, 14), black
LINE (6, 26)-(20, 14), black
LINE (12, 26)-(25, 14), black
LINE (18, 26)-(27, 16), black
CIRCLE (8, 30), 3, dgray
PAINT (8, 30), black, dgray
CIRCLE (20, 30), 3, dgray
PAINT (20, 30), black, dgray
GET (1, 1)-(35, 35), canowr
RETURN
'**************************
canowl:
CLS
LINE (1, 1)-(35, 35), lgray, BF
CIRCLE (5, 20), 7, black, , , 3
LINE (5, 13)-(25, 13), black
LINE (5, 27)-(25, 27), black
CIRCLE (27, 20), 7, black, pi * 1.5, pi * .5, 3
PAINT (5, 20), black, black
LINE (4, 23)-(8, 27), black
LINE (4, 17)-(14, 27), black
LINE (6, 12)-(21, 27), black
LINE (15, 12)-(25, 25), black
LINE (4, 18)-(8, 14), black
LINE (4, 24)-(14, 14), black
LINE (6, 26)-(20, 14), black
LINE (12, 26)-(25, 14), black
LINE (18, 26)-(27, 16), black
CIRCLE (11, 30), 3, dgray
PAINT (11, 30), black, dgray
CIRCLE (23, 30), 3, dgray
PAINT (23, 30), black, dgray
GET (1, 1)-(35, 35), canowl
RETURN
'***************************
canowu:
CLS
LINE (1, 1)-(35, 35), lgray, BF
CIRCLE (17, 17), 7, dgray
PAINT (17, 17), black, dgray
CIRCLE (13, 25), 4, dgray, .7 * pi, 2 * pi, 2
PAINT (13, 25), black, dgray
CIRCLE (20, 25), 4, dgray, .8 * pi, .2 * pi, 2
PAINT (20, 25), black, dgray
GET (1, 1)-(35, 35), canowu
RETURN
'***************************
canowd:
CLS
LINE (1, 1)-(35, 35), lgray, BF
CIRCLE (17, 17), 7, dgray
CIRCLE (17, 17), 4, dgray
PAINT (17, 17), black, dgray
CIRCLE (13, 25), 4, dgray, .7 * pi, 2 * pi, 2
PAINT (13, 25), black, dgray
CIRCLE (20, 25), 4, dgray, .8 * pi, .2 * pi, 2
PAINT (20, 25), black, dgray
LINE (17, 17)-(24, 17), black
LINE (17, 17)-(23, 13), black
LINE (17, 17)-(17, 10), black
LINE (17, 17)-(12, 13), black
LINE (17, 17)-(10, 17), black
LINE (17, 17)-(12, 22), black
LINE (17, 17)-(17, 23), black
LINE (17, 17)-(22, 21), black
GET (1, 1)-(35, 35), canowd
RETURN
'***************************
orb:
CLS
FOR x = 1 TO 35
colory = INT(RND * 10) + 1
LINE (1, x)-(35, x), colory
NEXT x
FOR x = 1 TO 16
colory = INT(RND * 10) + 1
CIRCLE (17, 17), x, colory
NEXT x
GET (1, 1)-(35, 35), orb
RETURN
'***************************
fish:
CLS
LINE (1, 1)-(35, 35), lgray, BF
LINE (5, 17)-(25, 17), white
FOR x = 5 TO 25 STEP 5
LINE (x - 3, 14)-(x, 17), white
LINE (x - 3, 20)-(x, 17), white
NEXT x
LINE (25, 12)-(25, 23), white
CIRCLE (25, 18), 6, white, pi * 1.5, pi * .5
CIRCLE (27, 16), 1, white
PAINT (27, 18), dgray, white
GET (1, 1)-(35, 35), fish
RETURN
'**************************
'Litter Bug
bug:
CLS
LINE (1, 1)-(35, 35), lgray, BF
CIRCLE (17, 17), 12, red, , , 1.5
PAINT (17, 17), red, red
CIRCLE (14, 17), 2, black
CIRCLE (18, 11), 2, black
CIRCLE (16, 23), 2, black
CIRCLE (21, 18), 2, black
PAINT (14, 17), black, black
PAINT (18, 11), black, black
PAINT (16, 23), black, black
PAINT (21, 18), black, black
LINE (24, 24)-(30, 28), black
LINE (25, 17)-(31, 21), black
LINE (24, 10)-(30, 14), black
LINE (10, 24)-(4, 28), black
LINE (9, 17)-(3, 21), black
LINE (10, 10)-(4, 14), black
GET (1, 1)-(35, 35), bug
RETURN
'*************************
'grass
grass:
CLS
LINE (1, 1)-(35, 35), lgreen, BF
LINE (1, 35)-(5, 30), dgreen
LINE (5, 30)-(10, 33), dgreen
LINE (10, 33)-(10, 28), dgreen
LINE (10, 28)-(15, 33), dgreen
LINE (15, 33)-(17, 23), dgreen
LINE (17, 23)-(21, 35), dgreen
LINE (21, 35)-(23, 26), dgreen
LINE (23, 26)-(25, 34), dgreen
LINE (25, 35)-(29, 30), dgreen
LINE (29, 30)-(35, 35), dgreen
GET (1, 1)-(35, 35), grass
RETURN
'**************************
'Building 1
building1:
CLS
LINE (1, 1)-(35, 35), lgray, BF
LINE (2, 2)-(34, 34), dred, BF
FOR y = 4 TO 32 STEP 8
FOR x = 4 TO 32 STEP 8
LINE (x, y)-(x + 4, y + 4), yellow, BF
NEXT x
NEXT y
GET (1, 1)-(35, 35), building1
RETURN
'**************************
' Building 2 :Mc Donalds
building2:
LINE (1, 1)-(35, 35), lgray, BF
LINE (5, 20)-(30, 33), br, BF
LINE (2, 20)-(33, 20), br
LINE (5, 16)-(30, 16), br
LINE (5, 16)-(2, 20), br
LINE (30, 16)-(33, 20), br
PAINT (10, 18), brown, br
CIRCLE (15, 16), 8, yellow, 2 * pi, 1 * pi, 3
CIRCLE (21, 16), 8, yellow, 2 * pi, 1 * pi, 3
LINE (14, 25)-(22, 33), black, B
LINE (18, 25)-(18, 33), black
LINE (7, 25)-(11, 29), lgray, BF
LINE (29, 25)-(25, 29), lgray, BF
FOR x = 28 TO 30
PSET (17, x), black
PSET (19, x), black
NEXT x
GET (1, 1)-(35, 35), building2
RETURN
'****************************
'Building 3: House
building3:
CLS
LINE (1, 1)-(35, 35), lgray, BF
LINE (6, 15)-(30, 34), tann, BF
LINE (3, 15)-(10, 10), tann
LINE (10, 10)-(26, 10), tann
LINE (26, 10)-(33, 15), tann
LINE (33, 15)-(3, 15), tann
PAINT (10, 13), dblue, tann
LINE (15, 25)-(22, 34), black, B
CIRCLE (20, 30), 1, black
PAINT (20, 30), black, black
LINE (8, 17)-(13, 23), black, B
LINE (23, 17)-(28, 23), black, B
GET (1, 1)-(35, 35), building3
RETURN
'**************************
'Road
road:
CLS
LINE (1, 1)-(35, 35), lgray, BF
GET (1, 1)-(35, 35), road
RETURN
'**************************
'****************************************************************************
' Title Screen
title:
PALETTE lgray, 65536 * 0 + 256 * 0 + 0
COLOR dblue
CLS
LOCATE 10, 32
PRINT "T R A S H"
LINE (170, 200)-(170, 250), dred
LINE (170, 200)-(200, 220), dred
LINE (200, 220)-(230, 200), dred
LINE (230, 200)-(230, 250), dred
LINE (230, 250)-(220, 250), dred
LINE (220, 250)-(220, 225), dred
LINE (220, 225)-(200, 235), dred
LINE (200, 235)-(180, 225), dred
LINE (180, 225)-(180, 250), dred
LINE (180, 250)-(170, 250), dred
PAINT (175, 235), dblue, dred
LINE (250, 250)-(270, 200), dred
LINE (270, 200)-(290, 250), dred
LINE (290, 250)-(280, 250), dred
LINE (280, 250)-(275, 240), dred
LINE (275, 240)-(265, 240), dred
LINE (265, 240)-(260, 250), dred
LINE (260, 250)-(250, 250), dred
LINE (265, 230)-(275, 230), dred
LINE (265, 230)-(270, 220), dred
LINE (270, 220)-(275, 230), dred
PAINT (270, 233), dblue, dred
LINE (310, 250)-(320, 200), dred
LINE (320, 200)-(335, 200), dred
LINE (335, 200)-(345, 235), dred
LINE (345, 235)-(360, 200), dred
LINE (360, 200)-(375, 200), dred
LINE (375, 200)-(350, 250), dred
LINE (350, 250)-(340, 250), dred
LINE (340, 250)-(330, 215), dred
LINE (330, 215)-(320, 250), dred
LINE (320, 250)-(310, 250), dred
PAINT (325, 205), dblue, dred
WHILE INKEY$ = ""
WEND
FOR y = 140 TO 220 STEP 10
FOR x = 120 TO 375 STEP 4
PUT (x, y), truckr, PSET
NEXT x
SOUND 200, 1
y = y + 10
IF y = 230 THEN
gh = 1
ELSE gh = 120
END IF
FOR x = 375 TO gh STEP -4
PUT (x, y), truckl, PSET
NEXT x
NEXT y
CLS
PALETTE lgray, 65536 * 31 + 256 * 31 + 31
speed = 2500
RETURN
'****************************************************************************
'the menu
menu:
WHILE NOT dd
CLS
FOR x = 200 TO 400 STEP 35
PUT (x, 150), truckr
NEXT x
FOR x = 200 TO 400 STEP 35
PUT (x, 290), truckl
NEXT x
FOR x = 185 TO 255 STEP 35
PUT (375, x), truckd
NEXT x
FOR x = 185 TO 255 STEP 35
PUT (200, x), trucku
NEXT x
COLOR blue
LOCATE 13, 31
PRINT "1) Play Game"
LOCATE 14, 31
PRINT "2) Instructions"
LOCATE 15, 31
PRINT "3) Top Ten"
LOCATE 16, 31
PRINT "4) Options"
LOCATE 17, 31
PRINT "5) Quit"
LOCATE 18, 31
INPUT "Which one: ", ww$
IF ww$ = "1" THEN
  GOSUB playgame
ELSEIF ww$ = "2" THEN
  GOSUB instruc
ELSEIF ww$ = "3" THEN
  GOSUB topten
ELSEIF ww$ = "4" THEN
  GOSUB options
ELSEIF ww$ = "5" THEN
  dd = true
ELSEIF ww$ = "TM credits" THEN
GOSUB credits
ELSEIF ww$ = "ORB" THEN
GOSUB playgame
ELSEIF ww$ = "Atrus speaks" THEN
GOSUB atrus
ELSEIF ww$ = "TM gallery" THEN
GOSUB gallery
ELSEIF ww$ = "Trash Man" THEN
GOSUB tmanf
ELSEIF ww$ = "invincible" THEN
GOSUB playgame
ELSEIF ww$ = "confusion" THEN
GOSUB playgame
ELSEIF ww$ = "more points" THEN
GOSUB playgame
END IF
WEND
RETURN
'****************************************************************************
'play game
playgame:
GOSUB getsetup
done = false
GOSUB gameset
WHILE NOT done
doner = false
numtrash = 0
GOSUB screensetup
c$ = INKEY$
WHILE NOT doner
 IF c$ <> "" THEN
    GOSUB keypressed
  END IF
    GOSUB bmovement
    GOSUB movement
  FOR x = 1 TO speed: NEXT x
  c$ = INKEY$
LOCATE 28, 35
PRINT "Level "; level
LOCATE 28, 1
PRINT "Score "; newscore
LOCATE 28, 70
PRINT "Lives"; lives
IF numtrash = 0 THEN
IF level <> 7 THEN
GOSUB levelpass
doner = true
level = level + 1
ELSE
GOSUB credits
GOSUB endin
GOSUB entertop
RETURN
END IF
END IF
WEND
WEND
RETURN
'****************************************************************************
screensetup:
IF level = 1 THEN
  RESTORE Board1
ELSEIF level = 2 THEN
  RESTORE Board2
ELSEIF level = 3 THEN
  RESTORE Board3
ELSEIF level = 4 THEN
  RESTORE Board4
ELSEIF level = 5 THEN
  RESTORE Board5
ELSEIF level = 6 THEN
  RESTORE Board6
ELSEIF level = 7 THEN
  RESTORE Board7
END IF
CLS
prow = 12: pcol = 17
brow(1) = 2: bcol(1) = 2: bdirection(1) = righty
brow(2) = 2: bcol(2) = 2: bdirection(2) = righty
brow(3) = 2: bcol(3) = 2: bdirection(3) = down
FOR row = 1 TO numrows
  FOR col = 1 TO numcols
   READ board(row, col)
   IF board(row, col) = trash THEN
    trashs = INT(RND * 3) + 1
      IF trashs = 1 THEN
      PUT ((col - 1) * wide, (row - 1) * high), banana, PSET
      board(row, col) = banana
      ELSEIF trashs = 2 THEN
      PUT ((col - 1) * wide, (row - 1) * high), can, PSET
      board(row, col) = can
      ELSEIF trashs = 3 THEN
      PUT ((col - 1) * wide, (row - 1) * high), fish, PSET
      board(row, col) = fish
      END IF
      numtrash = numtrash + 1
    ELSEIF board(row, col) = grass THEN
      PUT ((col - 1) * wide, (row - 1) * high), grass, PSET
    ELSEIF board(row, col) = wall1 THEN
      IF ww$ = "ORB" THEN
        PUT ((col - 1) * wide, (row - 1) * high), orb, PSET
        ELSEIF ww$ = "confusion" THEN
    trashs = INT(RND * 3) + 1
      IF trashs = 1 THEN
      PUT ((col - 1) * wide, (row - 1) * high), banana, PSET
      board(brow, bcol) = banana
      ELSEIF trashs = 2 THEN
      PUT ((col - 1) * wide, (row - 1) * high), can, PSET
      board(brow, bcol) = can
      ELSEIF trashs = 3 THEN
      PUT ((col - 1) * wide, (row - 1) * high), fish, PSET
      board(brow, bcol) = fish
      END IF
      ELSE
    buildings = INT(RND * 3) + 1
      IF buildings = 1 THEN
            PUT ((col - 1) * wide, (row - 1) * high), building1, PSET
      ELSEIF buildings = 2 THEN
            PUT ((col - 1) * wide, (row - 1) * high), building2, PSET
      ELSEIF buildings = 3 THEN
           PUT ((col - 1) * wide, (row - 1) * high), building3, PSET
      END IF
     END IF
    ELSEIF board(row, col) = empty THEN
      IF vehic$ = "1" THEN
       PUT ((col - 1) * wide, (row - 1) * high), trucku, PSET
      ELSEIF vehic$ = "2" THEN
        PUT ((col - 1) * wide, (row - 1) * high), canowu, PSET
      ELSEIF vehic$ = "3" THEN
        PUT ((col - 1) * wide, (row - 1) * high), trashmu, PSET
      ELSEIF vehic$ = "bug" THEN
           PUT ((col - 1) * wide, (row - 1) * high), bug, PSET
      END IF
    board(row, col) = road
    END IF
  NEXT col
NEXT row
SLEEP
RETURN
'****************************************************************************
Board1:
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,1,1,1,1,1,0,1,1,1,1,1,0,0,0,1
DATA 1,0,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,1
DATA 1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1
DATA 1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1
DATA 1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
RETURN
'****************************************************************************
Board2:
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,1
DATA 1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1
DATA 1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1
DATA 1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1
DATA 1,0,0,1,1,1,1,1,0,0,0,0,0,1,0,0,0,1
DATA 1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1
DATA 1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1
DATA 1,0,0,1,0,0,0,1,0,0,0,0,0,1,0,0,0,1
DATA 1,0,1,1,1,0,1,1,1,0,0,1,1,1,1,1,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
RETURN
'**************************************
Board3:
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1
DATA 1,0,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1
DATA 1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1
DATA 1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1
DATA 1,0,0,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1
DATA 1,0,1,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1
DATA 1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
RETURN
'****************************************************************************
Board4:
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,1,0,0,1,0,1,1,1,1,1,1,1,0,0,1
DATA 1,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,1
DATA 1,0,0,1,0,0,1,0,1,0,0,0,0,0,1,0,0,1
DATA 1,0,0,1,0,0,1,0,1,0,1,0,1,1,1,1,0,1
DATA 1,0,0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1
DATA 1,0,0,1,0,0,1,0,1,0,1,0,1,0,0,1,0,1
DATA 1,0,0,0,0,0,1,0,1,0,1,0,1,0,0,0,0,1
DATA 1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1
DATA 1,0,1,0,1,0,0,0,0,0,1,0,0,0,0,0,16,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
RETURN
'****************************************************************************
Board6:
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
DATA 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1
DATA 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
RETURN
'****************************************************************************
Board5:
DATA 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
DATA 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
DATA 8,0,0,0,8,0,0,0,0,0,0,0,0,8,0,0,0,8
DATA 8,0,0,0,8,0,0,0,0,0,0,0,0,8,0,0,0,8
DATA 8,0,0,0,8,0,0,0,0,0,0,0,0,8,0,0,0,8
DATA 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
DATA 8,0,0,0,8,0,0,0,0,0,0,0,0,8,0,0,0,8
DATA 8,0,0,0,8,0,0,0,0,0,0,0,0,8,0,0,0,8
DATA 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
DATA 8,0,8,8,8,8,8,8,0,0,8,8,8,8,8,8,0,8
DATA 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8
DATA 8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,8
DATA 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
RETURN
'****************************************************************************
Board7:
DATA 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
DATA 8,0,0,8,8,8,8,8,8,8,8,0,8,8,8,0,8,8
DATA 8,8,0,8,0,0,0,8,0,0,0,0,0,0,0,0,8,8
DATA 8,8,0,0,0,8,0,8,0,8,0,8,8,8,8,8,8,8
DATA 8,8,8,8,8,8,0,0,0,8,0,8,8,0,0,0,8,8
DATA 8,0,0,0,0,0,8,8,8,8,0,0,0,0,8,0,8,8
DATA 8,0,8,8,8,0,0,0,0,8,8,8,8,8,8,0,8,8
DATA 8,0,0,0,0,8,8,8,0,0,0,0,0,0,0,0,8,8
DATA 8,8,8,8,0,8,8,8,8,8,8,8,8,8,8,8,8,8
DATA 8,8,0,0,0,8,8,8,8,8,8,8,0,0,0,8,8,8
DATA 8,8,0,8,8,8,0,0,0,0,0,0,0,8,0,0,8,8
DATA 8,8,0,0,0,0,0,8,8,8,8,8,8,8,8,0,16,8
DATA 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
RETURN
'****************************************************************************
getsetup:
CLS
INPUT "What is your name? ", newname$
CLS
DO
PUT (300, 100), truckr
PUT (200, 200), canowr
PUT (400, 200), trashmr
LOCATE 16, 28
PRINT "2"
LOCATE 17, 18
PRINT "Trash Can On Wheels"
LOCATE 16, 53
PRINT "3"
LOCATE 17, 49
PRINT "Trash Man"
LOCATE 5, 40
PRINT "1"
LOCATE 6, 35
PRINT "Garbage Truck"
LOCATE 28, 24
INPUT "Which vehicle do you want to use? ", vehic$
CLS
LOOP UNTIL vehic$ < "4" AND vehic$ > "0" OR vehic$ = "bug"
CLS
IF vehic$ = "1" THEN
   PUT (300, 200), truckr
   LOCATE 16, 35
   PRINT "Garbage Truck"
   SLEEP 1
ELSEIF vehic$ = "2" THEN
  PUT (300, 200), canowr
   LOCATE 16, 36
   PRINT "Trash Can"
   LOCATE 17, 36
   PRINT "On Wheels"
  SLEEP 1
ELSEIF vehic$ = "3" THEN
  PUT (300, 200), trashmr
   LOCATE 16, 36
   PRINT "Trash Man"
  SLEEP 1
END IF
passdone = false
WHILE NOT passdone
DO
CLS
INPUT "What level?(1-4) ", levelq
LOOP UNTIL levelq < 8 AND levelq > 0
IF levelq > 4 AND levelq < 8 THEN
INPUT "Enter Password ", onetopass$
 IF onetopass$ = "Atrus" THEN
 level = levelq
 passdone = true
 END IF
ELSE
level = levelq
passdone = true
END IF
WEND
RETURN
'****************************************************************************
instruc:
CLS
PRINT "The object of the game is to pick up all of the trash laying around the screen."
PRINT "But there will be litter bugs wandering around the screen.  If you run"
PRINT "into one you will die.  But if you still have a life left you can continue"
PRINT "with just as much trash pick up as when you died."
PRINT "TIP:  Most the time if you get stuck somewhere you can just press q to stop it."
LOCATE 29, 35
INPUT "Press <ENTER>", intent$
RETURN
'****************************************************************************
keypressed:
IF c$ = CHR$(0) + "H" THEN
  direction = up
ELSEIF c$ = CHR$(0) + "P" THEN
  direction = down
ELSEIF c$ = CHR$(0) + "M" THEN
  direction = righty
ELSEIF c$ = CHR$(0) + "K" THEN
  direction = lefty
END IF
IF c$ = "q" THEN
done = true
doner = true
ELSEIF c$ = "l" THEN
lives = lives + 10
ELSEIF c$ = "d" THEN
GOSUB died
END IF
RETURN
'****************************************************************************
movement:
 FOR i = 1 TO delay
 NEXT i
 IF direction = up THEN
  IF board(prow - 1, pcol) <> wall1 AND board(prow - 1, pcol) <> grass THEN
    GOSUB check
    prow = prow - 1
    IF vehic$ = "1" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), trucku, PSET
    ELSEIF vehic$ = "2" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), canowu, PSET
    ELSEIF vehic$ = "3" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), trashmu, PSET
    ELSEIF vehic$ = "bug" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), bug, PSET
    END IF
  END IF
ELSEIF direction = down THEN
  IF board(prow + 1, pcol) <> wall1 AND board(prow + 1, pcol) <> grass THEN
    GOSUB check
    prow = prow + 1
    IF vehic$ = "1" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), truckd, PSET
    ELSEIF vehic$ = "2" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), canowd, PSET
    ELSEIF vehic$ = "3" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), trashmd, PSET
    ELSEIF vehic$ = "bug" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), bug, PSET
    END IF
  END IF
ELSEIF direction = lefty THEN
  IF board(prow, pcol - 1) <> wall1 AND board(prow, pcol - 1) <> grass THEN
    GOSUB check
    pcol = pcol - 1
    IF vehic$ = "1" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), truckl, PSET
    ELSEIF vehic$ = "2" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), canowl, PSET
    ELSEIF vehic$ = "3" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), trashml, PSET
    ELSEIF vehic$ = "bug" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), bug, PSET
    END IF
  END IF
ELSEIF direction = righty THEN
  IF board(prow, pcol + 1) <> wall1 AND board(prow, pcol + 1) <> grass THEN
    GOSUB check
    pcol = pcol + 1
    IF vehic$ = "1" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), truckr, PSET
    ELSEIF vehic$ = "2" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), canowr, PSET
    ELSEIF vehic$ = "3" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), trashmr, PSET
    ELSEIF vehic$ = "bug" THEN
      PUT ((pcol - 1) * high, (prow - 1) * wide), bug, PSET
    END IF
 END IF
END IF
RETURN
'****************************************************************************
check:
IF board(prow, pcol) = banana THEN
  IF ww$ = "more points" THEN
  newscore = newscore + 30
  ELSE
  newscore = newscore + 1
  END IF
  PUT ((pcol - 1) * high, (prow - 1) * wide), road, PSET
  board(prow, pcol) = road
  numtrash = numtrash - 1
ELSEIF board(prow, pcol) = can THEN
  IF ww$ = "more points" THEN
  newscore = newscore + 30
  ELSE
  newscore = newscore + 1
  END IF
  PUT ((pcol - 1) * high, (prow - 1) * wide), road, PSET
  board(prow, pcol) = road
  numtrash = numtrash - 1
ELSEIF board(prow, pcol) = fish THEN
  IF ww$ = "more points" THEN
  newscore = newscore + 30
  ELSE
  newscore = newscore + 1
  END IF
  PUT ((pcol - 1) * high, (prow - 1) * wide), road, PSET
  board(prow, pcol) = road
  numtrash = numtrash - 1
ELSEIF board(prow, pcol) = road THEN
  PUT ((pcol - 1) * high, (prow - 1) * wide), road, PSET
END IF
RETURN
'****************************************************************************
bmovement:
FOR x = 1 TO 3
  IF prow = brow(x) AND pcol = bcol(x) THEN
    IF ww$ = "invincible" OR level = 7 THEN
    GOSUB died2
    ELSE
    GOSUB died
    END IF
  END IF
NEXT x
IF NOT done THEN
FOR x = 1 TO 3
  numways = 0
  IF bdirection(x) = up THEN
    IF board(brow(x), bcol(x) - 1) <> wall1 AND board(brow(x), bcol(x) - 1) <> grass THEN
      numways = numways + 1
      way(numways) = lefty
    END IF
    IF board(brow(x), bcol(x) + 1) <> wall1 AND board(brow(x), bcol(x) + 1) <> grass THEN
      numways = numways + 1
      way(numways) = righty
    END IF
    IF board(brow(x) - 1, bcol(x)) <> wall1 AND board(brow(x) - 1, bcol(x)) <> grass THEN
      numways = numways + 1
      way(numways) = up
    END IF
  ELSEIF bdirection(x) = righty THEN
    IF board(brow(x) + 1, bcol(x)) <> wall1 AND board(brow(x) + 1, bcol(x)) <> grass THEN
      numways = numways + 1
      way(numways) = down
    END IF
    IF board(brow(x), bcol(x) + 1) <> wall1 AND board(brow(x), bcol(x) + 1) <> grass THEN
      numways = numways + 1
      way(numways) = righty
    END IF
    IF board(brow(x) - 1, bcol(x)) <> wall1 AND board(brow(x) - 1, bcol(x)) <> grass THEN
      numways = numways + 1
      way(numways) = up
    END IF
  ELSEIF bdirection(x) = lefty THEN
    IF board(brow(x) + 1, bcol(x)) <> wall1 AND board(brow(x) + 1, bcol(x)) <> grass THEN
      numways = numways + 1
      way(numways) = down
    END IF
    IF board(brow(x), bcol(x) - 1) <> wall1 AND board(brow(x), bcol(x) - 1) <> grass THEN
      numways = numways + 1
      way(numways) = lefty
    END IF
    IF board(brow(x) - 1, bcol(x)) <> wall1 AND board(brow(x) - 1, bcol(x)) <> grass THEN
      numways = numways + 1
      way(numways) = up
    END IF
  ELSEIF bdirection(x) = down THEN
    IF board(brow(x) + 1, bcol(x)) <> wall1 AND board(brow(x) + 1, bcol(x)) <> grass THEN
      numways = numways + 1
      way(numways) = down
    END IF
    IF board(brow(x), bcol(x) + 1) <> wall1 AND board(brow(x), bcol(x) + 1) <> grass THEN
      numways = numways + 1
      way(numways) = righty
    END IF
    IF board(brow(x), bcol(x) - 1) <> wall1 AND board(brow(x), bcol(x) - 1) <> grass THEN
      numways = numways + 1
      way(numways) = lefty
    END IF
  END IF
  IF numways = 0 THEN
    IF bdirection(x) = up THEN
      bdirection(x) = down
    ELSEIF bdirection(x) = down THEN
      bdirection(x) = up
    ELSEIF bdirection(x) = lefty THEN
      bdirection(x) = righty
    ELSEIF bdirection(x) = righty THEN
      bdirection(x) = lefty
    END IF
  ELSEIF numways <> 0 THEN
    bway = INT(RND * numways) + 1
    bdirection(x) = way(bway)
    IF bdirection(x) = lefty THEN
      GOSUB bcheck
      bcol(x) = bcol(x) - 1
      PUT ((bcol(x) - 1) * wide, (brow(x) - 1) * high), bug, PSET
    ELSEIF bdirection(x) = righty THEN
      GOSUB bcheck
      bcol(x) = bcol(x) + 1
      PUT ((bcol(x) - 1) * wide, (brow(x) - 1) * high), bug, PSET
    ELSEIF bdirection(x) = up THEN
      GOSUB bcheck
      brow(x) = brow(x) - 1
      PUT ((bcol(x) - 1) * wide, (brow(x) - 1) * high), bug, PSET
    ELSEIF bdirection(x) = down THEN
      GOSUB bcheck
      brow(x) = brow(x) + 1
      PUT ((bcol(x) - 1) * wide, (brow(x) - 1) * high), bug, PSET
    END IF
  END IF
NEXT x
FOR x = 1 TO 3
  IF prow = brow(x) AND pcol = bcol(x) THEN
    IF ww$ = "invincible" OR level = 7 THEN
    GOSUB died2
    ELSE
    GOSUB died
    END IF
  END IF
NEXT x
END IF
RETURN
'****************************************************************************
bcheck:
IF board(brow(x), bcol(x)) = banana THEN
    PUT ((bcol(x) - 1) * wide, (brow(x) - 1) * high), banana, PSET
ELSEIF board(brow(x), bcol(x)) = can THEN
    PUT ((bcol(x) - 1) * wide, (brow(x) - 1) * high), can, PSET
ELSEIF board(brow(x), bcol(x)) = fish THEN
    PUT ((bcol(x) - 1) * wide, (brow(x) - 1) * high), fish, PSET
ELSEIF board(brow(x), bcol(x)) = road THEN
    PUT ((bcol(x) - 1) * wide, (brow(x) - 1) * high), road, PSET
END IF
RETURN
'***************************************************************************
died2:
RETURN
'***************************************************************************
died:
PUT ((pcol - 1) * high, (prow - 1) * wide), deadtman, PSET
SOUND 300, 2
SLEEP 1
CLS
LOCATE 15, 35
PRINT "You died!"
SLEEP 1
lives = lives - 1
IF lives = 0 THEN
done = true
doner = true
GOSUB entertop
GOSUB seetopten
ELSE
GOSUB refresh
END IF
RETURN
'****************************************************************************
entertop:
GOSUB LOADTOPTEN
CLS
FOUND = false
CURSCORE = 1
WHILE NOT FOUND AND CURSCORE <= 10
  IF newscore > sScore(CURSCORE) THEN
    FOUND = true
  ELSE
    CURSCORE = CURSCORE + 1
  END IF
WEND
IF NOT FOUND THEN
  LOCATE 11, 17
  PRINT "Sorry your score did not make it on the top ten."
  SLEEP 2
ELSE
  'FUTURE SPOT TO INPUT NAME
   LOCATE 11, 17
   PRINT "Congratulations your score made it on the top ten!"
   SLEEP 2
   FOR x = 9 TO CURSCORE STEP -1
     sScore(x + 1) = sScore(x)
     player$(x + 1) = player$(x)
   NEXT x
   sScore(CURSCORE) = newscore
   player$(CURSCORE) = newname$
   OPEN "\TOPTEN.HIS" FOR OUTPUT AS #1
 FOR x = 1 TO 10
     PRINT #1, player$(x)
     PRINT #1, sScore(x)
   NEXT x
   CLOSE #1
END IF
RETURN
'****************************************************************************
gameset:
newscore = 0
lives = 15
speed = speed
RETURN
'****************************************************************************
refresh:
board(12, 17) = empty
prow = 12: pcol = 17
brow(1) = 2: bcol(1) = 2: bdirection(1) = righty
brow(2) = 2: bcol(2) = 2: bdirection(2) = righty
brow(3) = 2: bcol(3) = 2: bdirection(3) = down
FOR row = 1 TO numrows
  FOR col = 1 TO numcols
   IF board(row, col) = banana THEN
      PUT ((col - 1) * wide, (row - 1) * high), banana, PSET
      ELSEIF board(row, col) = can THEN
      PUT ((col - 1) * wide, (row - 1) * high), can, PSET
      ELSEIF board(row, col) = fish THEN
      PUT ((col - 1) * wide, (row - 1) * high), fish, PSET
    ELSEIF board(row, col) = grass THEN
      PUT ((col - 1) * wide, (row - 1) * high), grass, PSET
    ELSEIF board(row, col) = wall1 THEN
      IF ww$ = "ORB" THEN
        PUT ((col - 1) * wide, (row - 1) * high), orb, PSET
        ELSEIF ww$ = "confusion" THEN
    trashs = INT(RND * 3) + 1
      IF trashs = 1 THEN
      PUT ((col - 1) * wide, (row - 1) * high), banana, PSET
      board(brow, bcol) = banana
      ELSEIF trashs = 2 THEN
      PUT ((col - 1) * wide, (row - 1) * high), can, PSET
      board(brow, bcol) = can
      ELSEIF trashs = 3 THEN
      PUT ((col - 1) * wide, (row - 1) * high), fish, PSET
      board(brow, bcol) = fish
      END IF
      ELSE
    buildings = INT(RND * 3) + 1
      IF buildings = 1 THEN
            PUT ((col - 1) * wide, (row - 1) * high), building1, PSET
      ELSEIF buildings = 2 THEN
            PUT ((col - 1) * wide, (row - 1) * high), building2, PSET
      ELSEIF buildings = 3 THEN
           PUT ((col - 1) * wide, (row - 1) * high), building3, PSET
      END IF
     END IF
    ELSEIF board(row, col) = empty THEN
      IF vehic$ = "1" THEN
        PUT ((col - 1) * wide, (row - 1) * high), trucku, PSET
      ELSEIF vehic$ = "2" THEN
        PUT ((col - 1) * wide, (row - 1) * high), canowu, PSET
      ELSEIF vehic$ = "3" THEN
        PUT ((col - 1) * wide, (row - 1) * high), trashmu, PSET
      ELSEIF vehic$ = "bug" THEN
           PUT ((col - 1) * wide, (row - 1) * high), bug, PSET
      END IF
      board(row, col) = road
      ELSEIF board(row, col) = road THEN
        PUT ((col - 1) * wide, (row - 1) * high), road, PSET
     END IF
  NEXT col
NEXT row
RETURN
'****************************************************************************
options:
DO
 CLS
  LOCATE 9, 28
  PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
  LOCATE 14, 28
  PRINT "º                     º"
  LOCATE 14, 28
  PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼"
  COLOR blue
  LOCATE 10, 28
  PRINT "º1.Speed              º"
  LOCATE 11, 28
  PRINT "º2.Go back            º"
  LOCATE 12, 28
  PRINT "º                     º"
  LOCATE 13, 50
  PRINT "º"
  LOCATE 13, 28
  INPUT "ºWhich one? ", opwhi
  IF opwhi = 1 THEN
    GOSUB spe
  ELSEIF opwhi = 2 THEN
    RETURN
  END IF
LOOP UNTIL opwhi < 3 > 0
'****************************************************************************
spe:
CLS
PRINT ""
PRINT "Fast                                  Slow"
PRINT "1  2  3  4  5  6  7  8  9  10..........100"
PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ............."
PRINT "Good for slow             Good for fast"
PRINT "computers(486)         computers(pentium) "
PRINT ""
INPUT "What speed? ", speedr
speed = speedr * 100

RETURN
'****************************************************************************
levelpass:
PLAY "t255l8o2gabo3do2p10bo3dp5"
CLS
LOCATE 15, 10
PRINT "Congratulations!!  You passed the level!  On to the next one!"
SLEEP 2
RETURN
'****************************************************************************
endin:
CLS
LOCATE 1, 20
INPUT "Put in (Atrus speaks) at the main menu.", endinent
RETURN
'****************************************************************************
topten:
BACK = false
WHILE NOT BACK
  COLOR blue
  CLS
  LOCATE 9, 28
  PRINT "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
  LOCATE 14, 28
  PRINT "º                     º"
  LOCATE 14, 28
  PRINT "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¼"
  COLOR blue
  LOCATE 10, 28
  PRINT "º1.Clear Top Ten      º"
  LOCATE 11, 28
  PRINT "º2.See Topten         º"
  LOCATE 12, 28
  PRINT "º3.Go Back            º"
  LOCATE 13, 50
  PRINT "º"
  LOCATE 13, 28
  INPUT "ºWHICH ONE: ", CHOICE$
  IF CHOICE$ = "1" THEN
    GOSUB NEWTOPTEN
  ELSEIF CHOICE$ = "2" THEN
    GOSUB seetopten
ELSEIF CHOICE$ = "3" THEN
    BACK = true
  END IF
WEND
CLS
RETURN
'********************************************************************************
NEWTOPTEN:
CLS
INPUT "Are you sure? ", yornt$
IF yornt$ = "y" OR yornt$ = "Y" THEN
ELSE
  RETURN
END IF
CLS
LOCATE 15, 1
OPEN "\TOPTEN.HIS" FOR OUTPUT AS #1
FOR x = 1 TO 10
  PRINT #1, "......."
  PRINT #1, 0
NEXT x
CLOSE #1
RETURN
'********************************************************************************
seetopten:
GOSUB LOADTOPTEN
CLS
FOR x = 1 TO 10
  COLOR red
  LOCATE 2, 30
  PRINT "Top Ten Citizens"
  COLOR blue
  LOCATE 3 + x, 24
  PRINT player$(x)
  LOCATE 3 + x, 52
  PRINT sScore(x)
NEXT x
LOCATE 28, 30
SLEEP
RETURN
'********************************************************************************
LOADTOPTEN:
CLS
LOCATE 15, 1
OPEN "\TOPTEN.HIS" FOR INPUT AS #1
FOR x = 1 TO 10
  INPUT #1, player$(x)
  INPUT #1, sScore(x)
NEXT x
CLOSE #1
RETURN
'********************************************************************************
atrus:
PLAY "t255l8o2gabo3do2p10bo3dp5"
ON PLAY(1) GOSUB music
PLAY ON
PLAY "MB"
FOR x = 1 TO 480
colry = INT(RND * 10) + 1
LINE (1, x)-(640, x), colry
NEXT x
FOR z = 1 TO 5
FOR x = 1 TO 200
colory = INT(RND * 10) + 1
CIRCLE (300, 250), x, colory
NEXT x
NEXT z
PUT (285, 235), truckr, PSET
PRINT " No, he knows, he knows, the forbiden secret has been unleashed.  I dare not    "
PRINT " think of what has happened to the ORB.  Now he knows my weakspot. AAAAHHHHHH!!!"
DO: LOOP UNTIL INKEY$ <> ""
FOR x = 1 TO 600
LINE (1, x)-(640, x), red
FOR y = 1 TO 50
NEXT y
NEXT x
PLAY OFF
FOR x = 1 TO 640
colry = INT(RND * 10) + 1
LINE (x, 1)-(x, 480), colry
NEXT x
a$ = "C O D E S"
b$ = "TM credits,  TM gallery,  Trash Man,  Atrus speaks"
c$ = "This is the password for levels 5-7:  Atrus       "
d$ = "invincible,  more points,  options,  confusion    "
e$ = "Enter this at the vehicle menu:  bug              "
FOR w = 1 TO LEN(a$)
SOUND 200, .1
LOCATE 2, 40
PRINT LEFT$(a$, w)
FOR q = 1 TO 500
NEXT q
NEXT w
FOR w = 1 TO LEN(b$)
SOUND 200, .1
LOCATE 4, 20
PRINT LEFT$(b$, w)
FOR q = 1 TO 500
NEXT q
NEXT w
FOR w = 1 TO LEN(c$)
SOUND 200, .1
LOCATE 7, 20
PRINT LEFT$(c$, w)
FOR q = 1 TO 500
NEXT q
NEXT w
FOR w = 1 TO LEN(d$)
SOUND 200, .1
LOCATE 5, 20
PRINT LEFT$(d$, w)
FOR q = 1 TO 500
NEXT q
NEXT w
FOR w = 1 TO LEN(e$)
SOUND 200, .1
LOCATE 8, 20
PRINT LEFT$(e$, w)
FOR q = 1 TO 500
NEXT q
NEXT w
DO: LOOP UNTIL INKEY$ = "q"
RETURN
music:
PLAY "MB MNT150L32O1DEFG"
RETURN
credits:
PLAY "t255l8o2gabo3do2p10bo3dp5"
ON PLAY(1) GOSUB music2
PLAY ON
PLAY "MB"
CLS
FOR x = 1 TO 30
FOR y = 1 TO 600
NEXT y
LOCATE 10, x
PRINT " Producer-Programmer "
NEXT x
FOR x = 60 TO 34 STEP -1
FOR y = 1 TO 600
NEXT y
LOCATE 11, x
PRINT " Dan Egbert "
NEXT x
SLEEP 1
CLS
FOR x = 1 TO 30
FOR y = 1 TO 600
NEXT y
LOCATE 10, x
PRINT " Superviser-Director "
NEXT x
FOR x = 60 TO 37 STEP -1
FOR y = 1 TO 600
NEXT y
LOCATE 11, x
PRINT " Mr King "
NEXT x
SLEEP 1
CLS
LOCATE 10, 35
c$ = "Thanks for playing!!"
FOR w = 1 TO LEN(c$)
LOCATE 10, 30
PRINT LEFT$(c$, w)
FOR q = 1 TO 900
NEXT q
NEXT w
PLAY OFF
SLEEP 1
RETURN
music2:
PLAY "MB l4o4co3bo4l2cl5co3bo4l2cl4co3bo4l2cl4o3gcl3b-"
RETURN
gallery:
CLS
LOCATE 1, 20
PRINT "Welcome to the Trash Man Picture Gallery"
SLEEP 2
PLAY "t255l8o2gabo3do2p10bo3dp5"
ON PLAY(1) GOSUB music3
PLAY ON
PLAY "MB"
CLS
PUT (285, 235), truckr, PSET
SLEEP 1
PUT (285, 235), trucku, PSET
SLEEP 1
PUT (285, 235), truckl, PSET
SLEEP 1
PUT (285, 235), truckd, PSET
SLEEP 1
PUT (285, 235), canowr, PSET
SLEEP 1
PUT (285, 235), canowu, PSET
SLEEP 1
PUT (285, 235), canowl, PSET
SLEEP 1
PUT (285, 235), canowd, PSET
SLEEP 1
PUT (285, 235), trashmr, PSET
SLEEP 1
PUT (285, 235), trashmu, PSET
SLEEP 1
PUT (285, 235), trashml, PSET
SLEEP 1
PUT (285, 235), trashmd, PSET
SLEEP 1
PUT (285, 235), fish, PSET
SLEEP 1
PUT (285, 235), banana, PSET
SLEEP 1
PUT (285, 235), grass, PSET
SLEEP 1
PUT (285, 235), building1, PSET
SLEEP 1
PUT (285, 235), building2, PSET
SLEEP 1
PUT (285, 235), building3, PSET
SLEEP 1
PUT (285, 235), can, PSET
SLEEP 1
PUT (285, 235), orb, PSET
SLEEP 1
PUT (285, 235), road, PSET
SLEEP 1
PUT (285, 235), deadtman, PSET
PLAY OFF
SLEEP 1
RETURN
music3:
PLAY "MB l8o1dd+l8eo2co1eo2co1eo2l2l6cp5cdl8ecdeo1bo2dl2cp2"
RETURN
tmanf:
PLAY "t255l8o2gabo3do2p10bo3dp5"
PALETTE lgray, 65536 * 0 + 256 * 0 + 0
CLS
FOR x = 1 TO 600 STEP 3
PUT (x, 95), truckr, PSET
NEXT x
CLS
FOR x = 1 TO 75
PUT (50, 50), trashmr, PSET
PUT (50, 50), trashmu, PSET
PUT (50, 50), trashml, PSET
PUT (50, 50), trashmd, PSET
NEXT x
FOR x = 600 TO 1 STEP -3
PUT (x, 50), truckl, PSET
NEXT x
SOUND 37, 2
CLS
PUT (50, 50), deadtman, PSET
SLEEP 1
DO
CLS
FOR x = 35 TO 445 STEP 3
PUT (1, x), truckd, PSET
PUT (1, x - 35), trashmd, PSET
NEXT x
CLS
FOR x = 35 TO 605 STEP 3
PUT (x, 445), truckr, PSET
PUT (x - 35, 445), trashmr, PSET
NEXT x
CLS
FOR x = 445 TO 35 STEP -3
PUT (605, x - 35), trucku, PSET
PUT (605, x), trashmu, PSET
NEXT x
CLS
FOR x = 605 TO 35 STEP -3
PUT (x - 35, 1), truckl, PSET
PUT (x, 1), trashml, PSET
NEXT x
CLS
LOOP UNTIL INKEY$ = "q"
PALETTE lgray, 65536 * 31 + 256 * 31 + 31
RETURN
