Metropoli BBS
VIEWER: chopper.bas MODE: TEXT (ASCII)
' *********** CHECK README.1ST FIRST *********************

DECLARE SUB Draw.Picts ()
DECLARE SUB Palet1 ()
DECLARE SUB Palet2 ()
DECLARE SUB Land ()
DECLARE SUB Keys ()

COMMON SHARED x1, y1, xs1, ys1, turn, left, right, up, fire, kudit, b, maa

SCREEN 13
kudit = 5
DIM SHARED Chop1(100), Chop2(100), base1(50), px(kudit), py(kudit), l(kudit)
DIM SHARED pxx(kudit)

FOR i = 1 TO 6
 READ yy, kaa, koo
 KEY yy, CHR$(kaa) + CHR$(koo)
 ON KEY(yy) GOSUB 1
 KEY(yy) ON
NEXT

' KEY 16, CHR$(128) + CHR$(203)
' ON KEY(16) GOSUB 2
' KEY(16) ON

DATA 15,128,75 , 16,128,203
DATA 17,128,77 , 18,128,205
DATA 19,128,72 , 20,128,200

Palet2
Draw.Picts
Palet1
Land

col = 0
x1 = 28: y1 = 187 - 10
xs1 = 0: ys1 = 0: turn = 1
up = 0: maa = 0
left = 2
right = 2
fire = 0

PUT (x1, y1), Chop2(1)

DO
 
  col = col - 2
  IF col < -60 THEN col = 0
 
  FOR i = 65 TO 76
   OUT (&H3C8), i
   OUT (&H3C9), i
   OUT (&H3C9), i * 4 + col
   OUT (&H3C9), i * 4 + col
  NEXT i
 
  PALETTE 0, 0
 
  Keys

  IF y1 > 180 THEN
    PUT (x1, y1), Chop2(turn)
    y1 = 180: ys1 = -(ys1 / 3)
    PUT (x1, y1), Chop2(turn)
  END IF
 
  IF y1 > 176 THEN
    maa = 0
  ELSEIF y1 < 177 THEN
    maa = 1
  END IF

  IF y1 > 177 AND x1 > 15 AND x1 < 43 THEN PUT (x1, y1), Chop2(turn): y1 = 177: ys1 = 0: PUT (x1, y1), Chop2(turn)

LOOP UNTIL INP(&H60) = 1

END

10

DATA 00,00,00,00,00,00,00,38,00,00,00,00
DATA 00,00,00,40,43,46,46,48,46,46,43,40
DATA 16,10,00,00,00,00,06,25,25,00,00,00
DATA 16,16,10,00,00,10,14,28,28,25,00,00
DATA 10,16,15,14,14,15,16,27,29,28,25,00
DATA 00,00,10,16,16,16,16,16,27,27,16,12
DATA 00,00,00,00,10,16,16,16,16,16,14,10
DATA 00,00,00,00,00,06,10,14,14,14,10,00
DATA 00,00,00,00,00,00,38,00,38,00,00,38
DATA 00,00,00,38,40,42,42,42,40,40,38,35

20

DATA 00,00,00,00,00,00,00,38,00,00,00,00
DATA 00,00,00,40,43,46,46,48,46,46,43,40
DATA 63,58,00,00,00,00,54,25,25,00,00,00
DATA 63,63,58,00,00,58,62,28,28,25,00,00
DATA 58,63,63,62,62,63,63,27,29,28,25,00
DATA 00,00,58,63,63,63,63,63,27,27,63,60
DATA 00,00,00,00,58,63,63,63,63,63,62,58
DATA 00,00,00,00,00,54,58,62,62,62,58,00
DATA 00,00,00,00,00,00,38,00,38,00,00,38
DATA 00,00,00,38,40,42,42,42,40,40,38,35

DATA 00,00,00,38,48,47,47,47,46,46,46,46,45,45,44,44,38,00,00,00
DATA 00,00,48,47,65,66,67,68,69,70,71,72,73,74,75,76,43,42,00,00
DATA 00,48,47,47,47,46,46,46,46,45,45,44,44,44,44,43,43,43,42,00

1
 IF INP(&H60) = 75 THEN left = 1: RETURN
 IF INP(&H60) = 75 + 128 THEN left = 0: RETURN

 IF INP(&H60) = 77 THEN right = 1: RETURN
 IF INP(&H60) = 77 + 128 THEN right = 0: RETURN

 IF INP(&H60) = 72 THEN up = 1: RETURN
 IF INP(&H60) = 72 + 128 THEN up = 0: RETURN

SUB Draw.Picts
                               'Green Chopper
  FOR y = 1 TO 10
   FOR x = 1 TO 12
    READ a
    PSET (x, y), a
   NEXT
  NEXT
  RESTORE 10
  FOR y = 1 TO 10
   FOR x = 12 TO 1 STEP -1
    READ a
    PSET (x, y + 10), a
   NEXT
  NEXT
                               'Red Chopper
  FOR y = 1 TO 10
   FOR x = 1 TO 12
    READ a
    PSET (x, y + 20), a
   NEXT
  NEXT
  RESTORE 20
  FOR y = 1 TO 10
   FOR x = 12 TO 1 STEP -1
    READ a
    PSET (x, y + 30), a
   NEXT
  NEXT
                               'Bases
  FOR y = 1 TO 3
   FOR x = 1 TO 20
    READ a
    PSET (x, y + 40), a
   NEXT
  NEXT

  GET (1, 1)-(12, 10), Chop2(1)
  GET (1, 11)-(12, 20), Chop2(50)

  GET (1, 21)-(12, 30), Chop2(1)
  GET (1, 31)-(12, 40), Chop2(50)

  GET (1, 41)-(20, 44), base1
  CLS

END SUB

SUB Keys

  z$ = INKEY$
  a = INP(&H60)
  b = b + 1

'  IF a = 77 THEN right = 1
'  IF a = 77 + 128 THEN right = 0

'  IF a = 75 THEN left = 1
'  IF a = 75 + 128 THEN left = 0
    
'  IF a = 72 THEN up = 1
'  IF a = 72 + 128 THEN up = 0

  IF a = 57 THEN fire = 1
  IF a = 57 + 128 THEN fire = 0
 
'----------------------------

  IF right = 1 THEN
    PUT (x1, y1), Chop2(turn)
    turn = 1
    left = 2
    xs1 = xs1 + .01
    IF xs1 > .5 THEN xs1 = .5
    x1 = x1 + xs1
    y1 = y1 + ys1
    PUT (x1, y1), Chop2(turn)
  END IF
  IF right = 0 THEN
    PUT (x1, y1), Chop2(turn)
    IF maa = 0 THEN
      xs1 = xs1 - .01
      IF xs1 < 0 THEN xs1 = 0
    END IF
    x1 = x1 + xs1
    y1 = y1 + ys1
    PUT (x1, y1), Chop2(turn)
  END IF


  IF left = 1 THEN
    PUT (x1, y1), Chop2(turn)
    turn = 50
    right = 2
    xs1 = xs1 - .01
    IF xs1 < -.5 THEN xs1 = -.5
    x1 = x1 + xs1
    y1 = y1 + ys1
    PUT (x1, y1), Chop2(turn)
  END IF
  IF left = 0 THEN
    PUT (x1, y1), Chop2(turn)
    IF maa = 0 THEN
     xs1 = xs1 + .01
     IF xs1 > 0 THEN xs1 = 0
    END IF
    x1 = x1 + xs1
    y1 = y1 + ys1
    PUT (x1, y1), Chop2(turn)
  END IF


  IF up = 1 THEN
    PUT (x1, y1), Chop2(turn)
    ys1 = ys1 - .02
    IF ys1 < -.5 THEN ys1 = -.5
    y1 = y1 + ys1
    x1 = x1 + xs1
   PUT (x1, y1), Chop2(turn)
  END IF
  IF up = 0 THEN
    PUT (x1, y1), Chop2(turn)
    ys1 = ys1 + .01
    IF ys1 > .5 THEN ys1 = .5
    x1 = x1 + xs1
    y1 = y1 + ys1
    PUT (x1, y1), Chop2(turn)
  END IF


  IF fire = 1 THEN
    FOR i = 1 TO kudit
       PSET (px(i), py(i)), 0
       px(i) = px(i) + pxx(i)
       PSET (px(i), py(i)), 15
       IF px(i) < -1 OR px(i) > 320 THEN pxx(i) = 0: l(i) = 0
    NEXT
    IF b > 10 THEN
      FOR i = 1 TO kudit
       IF l(i) = 1 THEN GOSUB 50
       IF turn > 1 THEN buu = -9: pox = -2 'ELSE buu = 10: pox = 2
       IF turn = 1 THEN buu = 9: pox = 2 'ELSE buu = 10: pox = 2
       px(i) = x1 + 5 + buu
       py(i) = y1 + 6
       pxx(i) = pox
       l(i) = 1
       b = 0
       EXIT FOR
50
      NEXT
    END IF
  END IF
 
  IF fire = 0 THEN
    FOR i = 1 TO kudit
      PSET (px(i), py(i)), 0
      px(i) = px(i) + pxx(i)
      PSET (px(i), py(i)), 15
      IF px(i) < -1 OR px(i) > 320 THEN pxx(i) = 0: l(i) = 0
    NEXT
  END IF


END SUB

SUB Land

  col = 255
  t = 5

  FOR y = 190 TO 199
   FOR x = 0 TO 319
    col = col - .1
    r = INT(RND * 5) + col
    IF r > 255 THEN r = 255
    IF r < 255 - 63 THEN r = 255 - 63
    PSET (x, y), r
   NEXT
   col = 255 - t
   t = t + 5
  NEXT

  PUT (25, 187), base1
  PUT (275, 187), base1

END SUB

SUB Palet1

  FOR i = 1 TO 16
   OUT (&H3C8), i
   OUT (&H3C9), i
   OUT (&H3C9), i * 4 - 1
   OUT (&H3C9), i
  NEXT i
  FOR i = 1 TO 16
   OUT (&H3C8), i + 16
   OUT (&H3C9), i
   OUT (&H3C9), i * 3
   OUT (&H3C9), i * 4 - 1
  NEXT i
  FOR i = 1 TO 16
   OUT (&H3C8), i + 32
   OUT (&H3C9), i * 4 - 1
   OUT (&H3C9), i * 4 - 1
   OUT (&H3C9), i * 4 - 1
  NEXT i
  FOR i = 1 TO 16
   OUT (&H3C8), i + 48
   OUT (&H3C9), i * 4 - 1
   OUT (&H3C9), i
   OUT (&H3C9), i
  NEXT i
 
  FOR i = 1 TO 63
   OUT (&H3C8), 255 - 63 + i
   OUT (&H3C9), i / 4
   OUT (&H3C9), i
   OUT (&H3C9), i / 4
  NEXT i

END SUB

SUB Palet2
  FOR i = 1 TO 255
   OUT (&H3C8), i
   OUT (&H3C9), 0
   OUT (&H3C9), 0
   OUT (&H3C9), 0
  NEXT i

END SUB

[ RETURN TO DIRECTORY ]