'===========================================================================
' Subject: CAT & MOUSE LIKE GAME              Date: 05-24-97 (22:03)       
'  Author: Chris McKenzie                     Code: QB, QBasic, PDS        
'  Origin: mckenzie@calwest.net             Packet: GAMES.ABC
'===========================================================================
'look out for invisible walls
SCREEN 13

top:
 CLS
  FOR colors = 1 TO 7
   LINE (96 + colors, 0)-(96 + colors, 90), 27 - colors
   LINE (89 + colors, 0)-(89 + colors, 90), colors + 17
 NEXT colors
COLOR 17
PRINT "Finish"
DIM world(110)
RANDOMIZE TIMER
 FOR x = 1 TO 10
  FOR y = 1 TO 10
   world(y + 10 * x) = RND * 8 MOD 5
    IF world(y + 10 * x) = 1 THEN
    FOR h = 0 TO 6
     LINE (8 * x, 8 * y + h)-(8 * x + 8, 8 * y + h + 1), h + 20, BF
    NEXT h
  END IF
 NEXT y
NEXT x
world(100) = 0
 FOR x = 0 TO 60
  FOR y = 0 TO 10
  IF POINT(x, y) = 17 THEN LINE (75 + x, 100 + y)-(75 + x, 100 + y), y + 25
  NEXT y
 NEXT x
LINE (70, 95)-(128, 111), 21, B
x = 1
y = 2
xbad = 10
ybad = 10

beginning:
 h$ = INKEY$
 xbefore = x
 ybefore = y
  IF h$ = "6" AND x < 10 THEN x = x + 1
  IF h$ = "2" AND y < 10 THEN y = y + 1
  IF h$ = "4" AND x > 0 THEN x = x - 1
  IF h$ = "8" AND y > 0 THEN y = y - 1
  IF h$ = CHR$(27) THEN SYSTEM
  IF h$ <> "" THEN GOTO button
GOTO beginning

button:
  IF world(x * 10 + y) = 1 THEN
   x = xbefore
   y = ybefore
    FOR soundrand = 1 TO 50
     SOUND 37 + RND * 20, .028
    NEXT soundrand
  END IF
 LINE (8 * xbefore, 8 * ybefore)-(8 * xbefore + 8, 8 * ybefore + 8), 0, BF
  FOR fillcolor = 1 TO 4
  CIRCLE (8 * x + 4, 8 * y + 4), fillcolor, 150 - (fillcolor * 2)
 NEXT fillcolor
 xbadbefore = xbad
 ybadbefore = ybad
  IF xbad > x THEN xbad = xbad - 1
  IF xbad < x THEN xbad = xbad + 1
  IF ybad > y THEN ybad = ybad - 1
  IF ybad < y THEN ybad = ybad + 1
  IF world(xbad * 10 + ybad) = 1 THEN
   xbad = xbadbefore
   ybad = ybadbefore
  END IF

 LINE (8 * xbadbefore, 8 * ybadbefore)-(8 * xbadbefore + 8, 8 * ybadbefore + 8), 0, BF
 
  FOR fillcolor = 1 TO 4
  CIRCLE (8 * xbad + 4, 8 * ybad + 4), fillcolor, 50 - (fillcolor * 2)
 NEXT fillcolor
 
  IF x = 10 AND y = 10 THEN
   message$ = "You Win"
   GOTO last
  END IF
  
   IF x = xbad AND y = ybad THEN
   message$ = "You Lose"
   GOTO last
  END IF
GOTO beginning

last:
 CLS
 COLOR 17
 PRINT message$
  FOR r = 15 TO 25
   FOR x = 0 TO 70
    FOR y = 0 TO 10
     IF POINT(x, y) = 17 THEN LINE (3 * x + 20, 3 * y + 65)-(3 * x + 24, 3 * y + 69), y + r, BF
     IF POINT(x, y) = 17 THEN LINE (3 * x + 20, 3 * y + 65)-(3 * x + 23, 3 * y + 68), 0, B
    NEXT y
   NEXT x
  NEXT r
 LOCATE 23, 1
 COLOR 15
 PRINT "Play again?"
  FOR x = 0 TO 100
   FOR y = 173 TO 183
    IF POINT(x, y) = 15 THEN LINE (x, y)-(x, y), y - 155
   NEXT y
  NEXT x
COLOR 25
LOCATE 23, 16
PRINT "Yes    No"
choice = 1

choice1:
choice: key$ = INKEY$
 IF key$ = "6" THEN choice = choice + 1
 IF key$ = "4" THEN choice = choice - 1
 IF key$ = " " AND choice = 1 THEN SYSTEM
 IF key$ = " " AND choice = 0 THEN GOTO top
 IF choice = -1 THEN choice = 1
 IF choice = 2 THEN choice = 0
 IF choice = 0 THEN
  FOR x = 115 TO 145
   FOR y = 173 TO 185
    IF POINT(x, y) = 0 THEN LINE (x, y)-(x, y), 20
    IF POINT(x, y) = 25 THEN LINE (x, y)-(x, y), 32
   NEXT y
  NEXT x
  FOR x = 170 TO 200
   FOR y = 173 TO 185
    IF POINT(x, y) = 20 THEN LINE (x, y)-(x, y), 0
    IF POINT(x, y) = 32 THEN LINE (x, y)-(x, y), 25
   NEXT y
  NEXT x
   ELSE
    FOR x = 170 TO 200
     FOR y = 173 TO 185
      IF POINT(x, y) = 0 THEN LINE (x, y)-(x, y), 20
      IF POINT(x, y) = 25 THEN LINE (x, y)-(x, y), 32
     NEXT y
    NEXT x
  FOR x = 115 TO 145
   FOR y = 173 TO 185
    IF POINT(x, y) = 20 THEN LINE (x, y)-(x, y), 0
    IF POINT(x, y) = 32 THEN LINE (x, y)-(x, y), 25
   NEXT y
  NEXT x
END IF
GOTO choice1
