QB / QB64 Discussion Forum     RULES     Other Subforums, Links and Downloads    Index of Threads

  << Previous Topic | Next Topic >>Return to Index  

ProgramList Tusike

August 6 2007 at 9:46 AM
Tusike  (Premier Login iorr5t)
Forum Owner


 
 Respond to this message   
AuthorReply
Tusike
(Premier Login iorr5t)
Forum Owner

Edit "bpf" files (whatever they are)

August 6 2007, 9:58 AM 

1) In some convenient directory, install the three programs with the names shown.

2) Start [run_me.bas] which chains
to [generate.bas]. This is a one-time process. You can delete those two programs now.

3) Thereafter, run [b_editor.bas] to create or edit BPF files.

[This post was made by me because Tusike somehow could not post in this forum - I sure wonder why - Mac]

[I also wonder what the heck a BPF file is. When I find out, I will edit out this comment and put the explanation here]

 
 Respond to this message   
Tusike
(Premier Login iorr5t)
Forum Owner

b_editor.bas

August 6 2007, 10:00 AM 

' B_Editor
' Created by Peter Varnai
DECLARE SUB backitup ()
DECLARE SUB undoit ()
DECLARE SUB opcircle ()
DECLARE SUB quickload (startx!, starty!, stopx!, stopy!)
DECLARE SUB square ()
DECLARE SUB slowupdate (startx, starty, stopx, stopy)
DECLARE SUB opline ()
DECLARE SUB center (text$, y!)
DECLARE SUB credits ()
DECLARE SUB saveset ()
DECLARE SUB savefile ()
DECLARE SUB maxprint (text$, x!, y!)
DECLARE SUB getletter (letter$, x!, y!)
DECLARE SUB sizer (x!, y!, w!)
DECLARE SUB changesize ()
DECLARE SUB menuchange (m!)
DECLARE SUB setsize (x, y)
DECLARE SUB convertc ()
DECLARE SUB loadpicture ()
DECLARE SUB updatepicture ()
DECLARE SUB fillit ()
DECLARE SUB toolchange (t!, p!)
DECLARE SUB freedraw ()
DECLARE SUB sliderchange (x!, y!, o!)
DECLARE SUB xxxchange (x!, y!, c%, z)
DECLARE SUB menu ()
DECLARE SUB toolbar ()
DECLARE SUB colors ()
DECLARE SUB colorset ()
DECLARE SUB scribble ()
DECLARE SUB press (x!, y!, l%, w%, z%)
DECLARE SUB board (sizex, sizey, c%, ch%)
DECLARE SUB defscreen (c%)
DECLARE SUB getbits () ' 65536 - for blue palette
DEFINT A-D ' so I don't forget
DECLARE SUB mouse (cx, dx, bx)
DECLARE SUB MousePointer (SW)
DIM SHARED boardx, boardy, sizex, sizey
DIM SHARED images(1 TO 322), errornum, save12, save13, savedat
DIM SHARED a(9), mx, my, mclick, r(1 TO 70), g(1 TO 70), B(1 TO 70), oldx
DIM SHARED image(1 TO 1309), widthy, lengthx, letter(1 TO 3500), empty
DIM SHARED tool%, menus%, red%, blue%, green%, scale, picture(1 TO 100, 1 TO 100)
DIM SHARED backup1(1 TO 100, 1 TO 100)

TYPE palettt
  r AS SINGLE
  g AS SINGLE
  B AS SINGLE
  s1 AS SINGLE
  s2 AS SINGLE
  s3 AS SINGLE
END TYPE
DIM SHARED clor(0 TO 15) AS palettt, clor2(0 TO 15) AS palettt

TYPE xxx
  x AS SINGLE
  y AS SINGLE
  c AS INTEGER
END TYPE
DIM SHARED colorused AS xxx, finalc AS xxx, toolo(1 TO 6) AS xxx, menuo(1 TO 4) AS xxx
ON TIMER(1) GOSUB clock
TIMER ON
SCREEN 12
menus% = 0
PALETTE 6, 63 + 256 * 42 + 0 * 65536
getbits

menubar:
DEF SEG = VARSEG(a(0))
FOR i = 0 TO 17
  READ r
  POKE VARPTR(a(0)) + i, r
NEXT i

0:
setsize 10, 10
DEF SEG = VARSEG(a(0))
CALL MousePointer(0)
CALL MousePointer(1)
CALL MousePointer(3)
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  SELECT CASE my
  CASE 0 TO 13
    IF mx >= 624 AND mx <= 639 AND mclick = 1 THEN credits
  CASE 9 TO 34
    IF mx >= 9 AND mx <= 207 THEN menu
  CASE 89 TO 141
    IF mx >= 440 AND mx <= 571 THEN toolbar
    IF mx >= 10 AND mx <= 9 + boardx THEN scribble
  CASE 148 TO 391
    IF mx >= 438 AND mx <= 611 THEN colors
    IF mx >= 10 AND mx <= 9 + boardx THEN scribble
  CASE 414 TO 468
    IF mx >= 456 AND mx <= 609 THEN colorset
    IF mx >= 10 AND mx <= 9 + boardx THEN scribble
  CASE 70 TO boardy + 69
    IF mx >= 10 AND mx <= boardx + 9 THEN scribble
  END SELECT
  IF mx >= 370 AND mx <= 379 AND my >= 20 AND my <= 57 THEN saveset
LOOP
SYSTEM

Handler:
MousePointer 2
errornum = ERR
IF errornum = 64 THEN maxprint "Bad file name...", 19, 51
IF errornum = 53 THEN maxprint "File not found!!", 19, 51
IF errornum <> 0 AND errornum <> 64 AND errornum <> 53 THEN
  maxprint "Cannot perform operation: unexpected error" + STR$(ERR), 19, 51: t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#: GOTO 0
END IF
t# = TIMER + 1.5
DO: LOOP UNTIL TIMER >= t#
LINE (0, 45)-(355, 64), 7, BF
MousePointer 1
RESUME NEXT

clock:
IF mx >= 500 AND mx <= 567 AND my >= 3 AND my <= 17 THEN www = 1: MousePointer 2
maxprint " ", 500, 3
maxprint TIME$, 500, 3
IF www = 1 THEN MousePointer 1: www = 0
RETURN
' DATAS
' Mouse
DATA &HB8,&H00,&H00
DATA &H55
DATA &H8B,&HEC
DATA &HCD,&H33
DATA &H92
DATA &H8B,&H5E,&H06
DATA &H89,&H07
DATA &H5D
DATA &HCA,&H02,&H00
' For Palette values
DATA 00, 00, 00
DATA 00, 00, 42
DATA 00, 42, 00
DATA 00, 42, 42
DATA 42, 00, 00
DATA 42, 00, 42
DATA 63, 42, 00
DATA 42, 42, 42
DATA 21, 21, 21
DATA 21, 21, 63
DATA 21, 63, 21
DATA 21, 63, 63
DATA 63, 21, 21
DATA 63, 21, 63
DATA 63, 63, 63

SUB backitup
FOR i = 1 TO boardy / scale
  FOR ii = 1 TO boardx / scale
    backup1(ii, i) = picture(ii, i)
  NEXT
NEXT
END SUB

SUB board (x, y, c, ch)
IF x > y THEN sizze = x ELSE sizze = y
x = x * INT(400 / sizze)
y = y * INT(400 / sizze)
IF ch <> 0 THEN GOTO 1
LINE (10, 70)-(x + 9, y + 69), 15, BF

1:
LINE (9, 69)-(x + 10, y + 70), c, B
LINE (5, 65)-(x + 14, y + 74), 0, B
END SUB

SUB center (text$, y)
maxprint text$, 205 - (LEN(text$) * 7) / 2 - 13, y
END SUB

SUB changesize
widthy = boardy / scale
lengthx = boardx / scale
MousePointer 2
LINE (239, 12)-(338, 12), 0
LINE (239, 32)-(338, 32), 0
PUT (238 + boardx / scale - 9, 5), images(119), PSET
PUT (238 + boardy / scale - 9, 25), images(119), PSET
press 160, 1, 195, 62, 1
maxprint "x = " + STR$(lengthx) + " y = " + STR$(widthy), 180, 50
press 165, 9, 42, 25, -1: MousePointer 1
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  IF mx < 160 OR mx > 355 OR my > 64 THEN
    MousePointer 2
    LINE (161, 0)-(350, 64), 7, BF
    maxprint "Size", 171, 16
    press 165, 9, 42, 25, 0
    press 160, 1, 195, 62, 0
    MousePointer 1
    menus% = 0
    EXIT SUB
  END IF
  resize% = 0
  IF mx >= 231 AND mx <= 345 AND mclick = 1 THEN
    WHILE mclick = 1
      CALL MousePointer(3)
      CALL mouse(cx, dx, bx)
      SELECT CASE my
      CASE 5 TO 19
        sizer mx, 5, 1
      CASE 25 TO 39
        sizer mx, 25, 2
      END SELECT
      resize% = 1
      t# = TIMER + .05
      DO: LOOP UNTIL TIMER >= t#
    WEND
  END IF
  IF resize% = 1 THEN menus% = 0: MousePointer 2: setsize lengthx, widthy: MousePointer 1: EXIT SUB
LOOP
END SUB

SUB colors
IF finalc.c <> 14 THEN CALL press(555, 414, 54, 54, 0)
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  SELECT CASE mx
  CASE 0 TO 437
    GOSUB savecolor
  CASE 612 TO 639
    GOSUB savecolor
  CASE 438 TO 471
    SELECT CASE my
    CASE 148 TO 181
      xxxchange 438, 148, 0, mclick
    CASE 203 TO 236
      xxxchange 438, 203, 3, mclick
    CASE 251 TO 284
      xxxchange 438, 251, 6, mclick
    CASE 303 TO 336
      xxxchange 438, 303, 9, mclick
    CASE 358 TO 391
      xxxchange 438, 358, 12, mclick
    END SELECT
  CASE 508 TO 541
    SELECT CASE my
    CASE 148 TO 181
      xxxchange 508, 148, 1, mclick
    CASE 203 TO 236
      xxxchange 508, 203, 4, mclick
    CASE 251 TO 284
      xxxchange 508, 251, 8, mclick
    CASE 303 TO 336
      xxxchange 508, 303, 10, mclick
    CASE 358 TO 391
      xxxchange 508, 358, 13, mclick
    END SELECT
  CASE 578 TO 611
    SELECT CASE my
    CASE 148 TO 181
      xxxchange 578, 148, 2, mclick
    CASE 203 TO 236
      xxxchange 578, 203, 5, mclick
    CASE 251 TO 284
      xxxchange 578, 251, 15, mclick
    CASE 303 TO 336
      xxxchange 578, 303, 11, mclick
    CASE 358 TO 391
      xxxchange 578, 358, 7, mclick
    END SELECT
  END SELECT
  IF my >= 392 OR my <= 147 THEN GOSUB savecolor
  board sizex, sizey, finalc.c, 1
  t# = TIMER + .01
  IF finalc.c <> 14 THEN MousePointer 2: press finalc.x, finalc.y, 33, 33, -1: MousePointer 1
  DO: LOOP UNTIL TIMER >= t#
LOOP

savecolor:
IF finalc.c <> 14 THEN
  CALL MousePointer(2)
  press colorused.x, colorused.y, 33, 33, 0
  press finalc.x, finalc.y, 33, 33, -1
  CALL MousePointer(1)
END IF
EXIT SUB
END SUB

SUB colorset
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  SELECT CASE mx
  CASE 0 TO 457
    EXIT SUB
  CASE 610 TO 639
    EXIT SUB
  CASE 456 TO 537
    IF mclick = 1 THEN
      CALL MousePointer(2)
      SELECT CASE my
      CASE 414 TO 428
        CALL sliderchange(mx - 9, 414, 1)
      CASE 434 TO 448
        CALL sliderchange(mx - 9, 434, 2)
      CASE 454 TO 468
        CALL sliderchange(mx - 9, 454, 3)
      END SELECT
      CALL MousePointer(1)
    END IF
  CASE 555 TO 609
    IF colorused.c <> 14 THEN CALL MousePointer(2): press 555, 414, 54, 54, 1: colorused.c = 14: CALL MousePointer(1)
    IF mclick = 1 THEN MousePointer 2: press finalc.x, finalc.y, 33, 33, 0: colorused.c = 14: finalc.c = 14: board sizex, sizey, 14, 1: press 555, 414, 54, 54, -1: MousePointer 1
  CASE ELSE
    IF finalc.c <> 14 THEN MousePointer 2: press 555, 414, 54, 54, 0: MousePointer 1
  END SELECT
  IF my >= 469 OR my <= 413 THEN EXIT SUB
  t# = TIMER + .01
  DO: LOOP UNTIL TIMER >= t#
LOOP
EXIT SUB
END SUB

SUB convertc
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  IF mx <= 9 OR mx >= 410 OR my <= 69 OR my >= 470 THEN EXIT SUB
  IF mclick = 1 THEN
    IF picture(INT((mx - 10) / scale + 1), INT((my - 70) / scale + 1)) <> finalc.c THEN
      backitup
      MousePointer 2
      c = POINT(mx, my)
      FOR y = 1 TO boardy / scale
        FOR x = 1 TO boardx / scale
          IF picture(x, y) = c THEN picture(x, y) = finalc.c
        NEXT
      NEXT
      loadpicture
      updatepicture
      MousePointer 1
    END IF
  END IF
LOOP
END SUB

SUB credits
FOR i = 0 TO 15
  IF i = 14 THEN GOTO 3
  READ r
  READ g
  READ B
  clor(i).r = r
  clor2(i).r = r
  clor(i).g = g
  clor2(i).g = g
  clor(i).B = B
  clor2(i).B = B
  clor(i).s1 = r / 63
  clor(i).s2 = g / 63
  clor(i).s3 = B / 63
  PALETTE i, r + g * 256 + B * 65536

3:
NEXT
clor(14).r = red%: clor(14).g = green%: clor(14).B = blue%
clor2(14).r = red%: clor2(14).g = green%: clor(14).B = blue%
clor(14).s1 = red% / 63: clor(14).s2 = green% / 63: clor(14).s3 = blue% / 63
FOR ii = 0 TO 63
  t# = TIMER + .01: DO: LOOP UNTIL TIMER >= t#
  FOR i = 0 TO 15
    a$ = INKEY$
    clor(i).r = clor(i).r - clor(i).s1: IF clor(i).r < 0 THEN clor(i).r = 0
    clor(i).g = clor(i).g - clor(i).s2: IF clor(i).g < 0 THEN clor(i).g = 0
    clor(i).B = clor(i).B - clor(i).s3: IF clor(i).B < 0 THEN clor(i).B = 0
    PALETTE i, INT(clor(i).r) + INT(clor(i).g) * 256 + INT(clor(i).B) * 65536
    IF a$ <> "" THEN SYSTEM
  NEXT
NEXT
MousePointer 2
board 10, 10, 7, 0
LINE (10, 70)-(410, 469), 7, BF
center "CREDITS", 75
center "Programmed by Peter Varnai", 95
center "Thanks for using my program!", 130
center "(I hope it was useful)", 155
center "SPECIAL THANKS TO:", 200
center "the QBASIC Forum", 240
center "www.network54.com/Forum/13959", 280
center "Click on the exit sign to exit", 452
SLEEP 1
FOR i = 0 TO 63
  MousePointer 1
  t# = TIMER + .01
  DO: LOOP UNTIL TIMER >= t#
  FOR c = 15 TO 0 STEP -1
    a$ = INKEY$
    clor(c).r = clor(c).r + clor(c).s1: IF clor(c).r >= clor2(c).r THEN clor(c).r = clor2(c).r
    clor(c).g = clor(c).g + clor(c).s2: IF clor(c).g >= clor2(c).g THEN clor(c).g = clor2(c).g
    clor(c).B = clor(c).B + clor(c).s3: IF clor(c).B >= clor2(c).B THEN clor(c).B = clor2(c).B
    PALETTE c, INT(clor(c).r) + 256 * INT(clor(c).g) + 65536 * INT(clor(c).B)
    IF a$ <> "" THEN SYSTEM
  NEXT
NEXT
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  IF mx >= 624 AND my <= 13 AND mclick = 1 THEN SYSTEM
LOOP WHILE INKEY$ = ""
SYSTEM
END SUB

SUB defscreen (c)
CLS
red% = 63: green% = 63: blue% = 0
PUT (624, 0), images(59)
LINE (623, 0)-(623, 14), c
LINE (623, 14)-(639, 14), c
PAINT (0, 0), c
maxprint TIME$, 500, 3
press 498, 1, 67, 15, 1
maxprint "New", 19, 16
maxprint "Open", 67, 16
maxprint "Save", 119, 16
maxprint "Size", 171, 16
maxprint "Save format:", 370, 3
maxprint "Screen 12", 385, 20: PUT (370, 20), images(186), PSET
maxprint "Screen 13", 385, 34: PUT (370, 34), images(165), PSET
maxprint "DATA file", 385, 48: PUT (370, 48), images(165), PSET
press 364, 1, 105, 62, -1
PUT (444, 123), images(30): CALL press(440, 120, 21, 21, -1)
PUT (465, 124), images(90)
PUT (488, 124), images(1)
PUT (510, 124), images(207), PSET
PUT (532, 124), images(236), PSET
PUT (554, 124), images(265), PSET
PUT (444, 92), images(265), PSET: press 440, 89, 21, 21, -1
PUT (466, 92), images(265), PSET: PAINT (470, 97), 0, 0
PUT (512, 93), images(294), PSET
PUT (444, 457), r: LINE (465, 461)-(527, 461), 0: PUT (518, 454), images(119), PSET
PUT (444, 437), g: LINE (465, 441)-(527, 441), 0: PUT (518, 434), images(119), PSET
PUT (444, 417), B: LINE (465, 421)-(527, 421), 0: PUT (456, 414), images(119), PSET
LINE (440, 150)-(469, 179), 0, BF: CALL press(438, 148, 33, 33, -1)
LINE (510, 150)-(539, 179), 1, BF: CALL press(508, 148, 33, 33, 0)
LINE (580, 150)-(609, 179), 2, BF: CALL press(578, 148, 33, 33, 0)
LINE (440, 205)-(469, 234), 3, BF: CALL press(438, 203, 33, 33, 0)
LINE (510, 205)-(539, 234), 4, BF: CALL press(508, 203, 33, 33, 0)
LINE (580, 205)-(609, 234), 5, BF: CALL press(578, 203, 33, 33, 0)
LINE (440, 253)-(469, 282), 6, BF: CALL press(438, 251, 33, 33, 0)
LINE (510, 253)-(539, 282), 8, BF: CALL press(508, 251, 33, 33, 0)
LINE (580, 253)-(609, 282), 15, BF: CALL press(578, 251, 33, 33, 0)
LINE (440, 305)-(469, 334), 9, BF: CALL press(438, 303, 33, 33, 0)
LINE (510, 305)-(539, 334), 10, BF: CALL press(508, 303, 33, 33, 0)
LINE (580, 305)-(609, 334), 11, BF: CALL press(578, 303, 33, 33, 0)
LINE (440, 360)-(469, 389), 12, BF: CALL press(438, 358, 33, 33, 0)
LINE (510, 360)-(539, 389), 13, BF: CALL press(508, 358, 33, 33, 0)
LINE (580, 360)-(609, 389), 8, B: CALL press(578, 358, 33, 33, 0)
PALETTE 14, red% + green% * 256 + blue% * 65536
OPEN "toolo.dat" FOR INPUT AS #1
FOR y = 1 TO 6
  FOR x = 1 TO 2
    INPUT #1, z
    IF x = 1 THEN toolo(y).x = z ELSE toolo(y).y = z
  NEXT
NEXT
CLOSE #1
menuo(1).x = 9: menuo(2).x = 60: menuo(3).x = 113: menuo(4).x = 165
LINE (557, 416)-(607, 466), 14, BF: CALL press(555, 414, 54, 54, 0)
board sizex, sizey, 0, 0
END SUB

SUB fillit
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  IF mx <= 9 OR mx >= 9 + boardx OR my <= 69 OR my >= boardy + 69 THEN EXIT SUB
  SELECT CASE mclick
  CASE 1
    IF picture(INT((mx - 10) / scale + 1), INT((my - 70) / scale + 1)) <> finalc.c THEN
      backitup
      MousePointer 2
      PAINT (mx, my), finalc.c, finalc.c
      MousePointer 1
      updatepicture
    END IF
  END SELECT
LOOP
END SUB

SUB freedraw
flag% = 0
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  tempx = INT((mx - 10) / scale) + 1
  tempy = INT((my - 70) / scale) + 1
  IF mx <= 9 OR mx >= 9 + boardx OR my <= 69 OR my >= 69 + boardy THEN EXIT DO
  IF mclick = 1 AND picture(tempx, tempy) <> finalc.c THEN
    flag% = 1
    backitup
    picture(tempx, tempy) = finalc.c
    CALL MousePointer(2)
    LINE ((tempx - 1) * scale + 10, (tempy - 1) * scale + 70)-((tempx - 1) * scale + 10 + scale - 1, (tempy - 1) * scale + 70 + scale - 1), finalc.c, BF
    CALL MousePointer(1)
  END IF
LOOP
IF flag% = 1 THEN updatepicture: flag% = 0
END SUB

SUB getbits
CLS
COLOR 3: PRINT "R"
GET (0, 2)-(6, 11), r
LOCATE 1, 1: COLOR 5: PRINT "G"
GET (0, 2)-(6, 11), g
LOCATE 1, 1: COLOR 14: PRINT "B"
GET (0, 2)-(6, 11), B
CLS
DEF SEG = VARSEG(letter(1))
BLOAD "letters.bpf", VARPTR(letter(1))
DEF SEG = VARSEG(images(1))
BLOAD "images.bpf", VARPTR(images(1))
END SUB

SUB getletter (letter$, x, y)
SELECT CASE letter$
CASE "A"
  n = 1
CASE "a"
  n = 2
CASE "B"
  n = 3
CASE "b"
  n = 4
CASE "C"
  n = 5
CASE "c"
  n = 6
CASE "D"
  n = 7
CASE "d"
  n = 8
CASE "E"
  n = 9
CASE "e"
  n = 10
CASE "F"
  n = 11
CASE "f"
  n = 12
CASE "G"
  n = 13
CASE "g"
  n = 14
CASE "H"
  n = 15
CASE "h"
  n = 16
CASE "I"
  n = 17
CASE "i"
  n = 18
CASE "J"
  n = 19
CASE "j"
  n = 20
CASE "K"
  n = 21
CASE "k"
  n = 22
CASE "L"
  n = 23
CASE "l"
  n = 24
CASE "M"
  n = 25
CASE "m"
  n = 26
CASE "N"
  n = 27
CASE "n"
  n = 28
CASE "O"
  n = 29
CASE "o"
  n = 30
CASE "P"
  n = 31
CASE "p"
  n = 32
CASE "Q"
  n = 33
CASE "q"
  n = 34
CASE "R"
  n = 35
CASE "r"
  n = 36
CASE "S"
  n = 37
CASE "s"
  n = 38
CASE "T"
  n = 39
CASE "t"
  n = 40
CASE "U"
  n = 41
CASE "u"
  n = 42
CASE "V"
  n = 43
CASE "v"
  n = 44
CASE "W"
  n = 45
CASE "w"
  n = 46
CASE "X"
  n = 47
CASE "x"
  n = 48
CASE "Y"
  n = 49
CASE "y"
  n = 50
CASE "Z"
  n = 51
CASE "z"
  n = 52
CASE "0"
  n = 53
CASE "1"
  n = 54
CASE "2"
  n = 55
CASE "3"
  n = 56
CASE "4"
  n = 57
CASE "5"
  n = 58
CASE "6"
  n = 59
CASE "7"
  n = 60
CASE "8"
  n = 61
CASE "9"
  n = 62
CASE "!"
  n = 63
CASE "@"
  n = 64
CASE "#"
  n = 65
CASE "$"
  n = 66
CASE "%"
  n = 67
CASE "^"
  n = 68
CASE "&"
  n = 69
CASE "*"
  n = 70
CASE "("
  n = 71
CASE ")"
  n = 72
CASE "-"
  n = 73
CASE "="
  n = 74
CASE "_"
  n = 75
CASE "+"
  n = 76
CASE "<"
  n = 77
CASE ">"
  n = 78
CASE ","
  n = 79
CASE "."
  n = 80
CASE "?"
  n = 81
CASE "/"
  n = 82
CASE ":"
  n = 83
CASE ";"
  n = 84
CASE "'"
  n = 85
CASE "["
  n = 86
CASE "]"
  n = 87
CASE CHR$(34)
  n = 88
CASE ELSE
  LINE (x, y)-(x + 6, y + 12), 7, BF: EXIT SUB
END SELECT
LINE (x, y)-(x + 6, y + 12), 7, BF
ON ERROR GOTO Handler
PUT (x, y), letter((n - 1) * 40 + 1)
END SUB

SUB loadpicture
MousePointer 2
FOR x = 10 TO 10 + (boardx - scale) STEP scale
  FOR y = 70 TO 70 + (boardy - scale) STEP scale
    LINE (x, y)-(x + scale - 1, y + scale - 1), picture(INT((x - 10) / scale) + 1, INT((y - 70) / scale) + 1), BF
  NEXT
NEXT
MousePointer 1
END SUB

SUB maxprint (text$, x, y)
FOR i = 1 TO LEN(text$)
  a$ = MID$(text$, i, 1)
  getletter a$, x + (i - 1) * 8, y
NEXT
END SUB

SUB menu

2:
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  IF menus% <> 0 THEN IF mx < 9 OR mx > 207 OR my < 9 OR my > 35 THEN MousePointer 2: press menuo(menus%).x, 9, 42, 25, 0: menus% = 0: MousePointer 1: EXIT SUB
  SELECT CASE mx
  CASE 9 TO 51
    menuchange 1
    IF mclick = 1 THEN
      MousePointer 2: press 9, 9, 42, 25, -1
      setsize boardx / scale, boardy / scale
      press 9, 9, 42, 25, 1
      MousePointer 1
    END IF
  CASE 60 TO 102
    menuchange 2
    IF mclick = 1 THEN GOSUB openfile: loadpicture: EXIT SUB
  CASE 113 TO 155
    menuchange 3
    IF mclick = 1 THEN savefile: loadpicture: EXIT SUB
  CASE 165 TO 207
    menuchange 4
    IF mclick = 1 THEN changesize: EXIT SUB
  END SELECT
LOOP
EXIT SUB

openfile:
MousePointer 2
press 60, 9, 42, 25, -1
DO
  errornum = 0
  maxprint "File name (0 to exit):", 5, 51
  LOCATE 4, 24: LINE INPUT "", file$
  LINE (5, 35)-(355, 64), 7, BF
  IF file$ = "0" THEN MousePointer 1: press 60, 9, 42, 25, 0: EXIT SUB
  ON ERROR GOTO Handler
  DEF SEG = VARSEG(image(1))
  BLOAD file$ + ".bpf", VARPTR(image(1))
  ON ERROR GOTO 0
  IF errornum = 0 THEN
    DEF SEG = VARSEG(a(0))
    setsize image(1), image(2)
    ON ERROR GOTO Handler: IF errornum <> 0 THEN GOSUB openfile
    PALETTE 6, image(5) + image(4) * 256 + image(3) * 65536
    PALETTE 14, image(8) + image(7) * 256 + image(6) * 65536
    PUT (530, 40), image(9), PSET
    FOR y = 20 TO 19 + boardy / scale
      FOR x = 530 TO 529 + boardx / scale
        picture(x - 529, y - 19) = POINT(x, y)
      NEXT
    NEXT
    ON ERROR GOTO 0
    press 60, 9, 42, 25, 0
    MousePointer 1
    RETURN
  END IF
LOOP
END SUB

SUB menuchange (m)
IF menus% = m THEN EXIT SUB
MousePointer 2
IF menus% > 0 THEN press menuo(menus%).x, 9, 42, 25, 0
menus% = m
press menuo(menus%).x, 9, 42, 25, 1
MousePointer 1
END SUB

SUB mouse (cx, dx, bx)
POKE VARPTR(a(4)), &H92
CALL absolute(cx, VARPTR(a(0)))
POKE VARPTR(a(4)), &H91
CALL absolute(dx, VARPTR(a(0)))
POKE VARPTR(a(4)), &H93
CALL absolute(bx, VARPTR(a(0)))
my = cx: mx = dx: mclick = bx
END SUB

SUB MousePointer (SW)
DEF SEG = VARSEG(a(0))
POKE VARPTR(a(0)) + 1, SW 'Swap code,Set AX = (SW)
CALL absolute(c, VARPTR(a(0))) 'Run Code
' Note:
' SW = 0-reset
' SW = 1-on
' SW = 2-off
' SW = 3-coordinates
END SUB

SUB opcircle
maxprint "If your picture is big, this will be slow", 5, 51
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  IF mx <= 9 OR mx >= 9 + boardx OR my <= 69 OR my >= 69 + boardy THEN maxprint " ", 5, 51: EXIT SUB
  flag = 0
  oldx = 0
  oldy = 0
  IF mclick = 1 THEN
    flag = 1
    firstx = INT((mx - 10) / scale + 1)
    firsty = INT((my - 70) / scale + 1)
    WHILE mclick = 1
      CALL MousePointer(3)
      CALL mouse(cx, dx, bx)
      a2 = ABS(((firstx - 1) * scale + 10 + scale / 2) - mx)
      b2 = ABS(((firsty - 1) * scale + 70 + scale / 2) - my)
      r = (a2 + b2)
      r = INT(r / scale) * scale + scale / 4
      IF mx <= 9 OR mx >= 9 + boardx OR my <= 69 OR my >= 69 + boardy THEN loadpicture: maxprint " ", 5, 51: EXIT SUB
      IF oldr <> r THEN
        MousePointer 2
        loadpicture
        VIEW SCREEN (10, 70)-(9 + boardx, 69 + boardy)
        CIRCLE ((firstx - 1) * scale + 10 + scale / 2, (firsty - 1) * scale + 70 + scale / 2), r, finalc.c
        VIEW SCREEN (0, 0)-(639, 479)
        IF empty = 0 THEN PAINT ((firstx - 1) * scale + 10 + scale / 2, (firsty - 1) * scale + 70 + scale / 2), finalc.c, finalc.c
        MousePointer 1
      END IF
      oldr = r
      t# = TIMER + .05
      DO: LOOP UNTIL TIMER >= t#
    WEND
  END IF
  IF flag = 1 THEN backitup: CALL slowupdate(((firstx - 1) * scale + 10 + scale / 2) - r - 3, ((firsty - 1) * scale + 70 + scale / 2) - r - 3, ((firstx - 1) * scale + 10 + scale / 2) + r + 3, ((firsty - 1) * scale + 70 + scale / 2) + r + 3): loadpicture: updatepicture: EXIT DO
LOOP
maxprint " ", 5, 51
END SUB

SUB opline
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  IF mx <= 9 OR mx >= 9 + boardx OR my <= 69 OR my >= 69 + boardy THEN EXIT SUB
  flag = 0
  oldx = 0
  oldy = 0
  IF mclick = 1 THEN
    flag = 1
    firstx = INT((mx - 10) / scale + 1)
    firsty = INT((my - 70) / scale + 1)
    WHILE mclick = 1
      CALL MousePointer(3)
      CALL mouse(cx, dx, bx)
      tempx = INT((mx - 10) / scale + 1)
      tempy = INT((my - 70) / scale + 1)
      IF mx <= 9 OR mx >= 9 + boardx OR my <= 69 OR my >= 69 + boardy THEN loadpicture: EXIT SUB
      IF oldx <> tempx OR oldy <> tempy THEN
        MousePointer 2
        loadpicture
        VIEW SCREEN (10, 70)-(9 + boardx, 69 + boardy)
        LINE ((firstx - 1) * scale + 10 + scale / 2, (firsty - 1) * scale + 70 + scale / 2)-((tempx - 1) * scale + 10 + scale / 2, (tempy - 1) * scale + 70 + scale / 2), finalc.c
        VIEW SCREEN (0, 0)-(639, 479)
        MousePointer 1
      END IF
      oldx = tempx
      oldy = tempy
      t# = TIMER + .05
      DO: LOOP UNTIL TIMER >= t#
    WEND
  END IF
  IF flag = 1 THEN backitup: CALL slowupdate((firstx - 1) * scale + 10 + scale / 2, (firsty - 1) * scale + 70 + scale / 2, (tempx - 1) * scale + 10 + scale / 2, (tempy - 1) * scale + 70 + scale / 2): loadpicture: updatepicture: EXIT DO
LOOP
END SUB

SUB press (x, y, l%, w%, z%)
' x, y = coordinates
' l, w = dimensions of object
' z = 0 - nothing z= 1 - button not pressed z = -1 = button pressed
SELECT CASE z%
CASE 0
  LINE (x, y)-(x + l%, y + w%), 7, B
CASE -1
  LINE (x, y)-(x + l%, y + w%), 8, B
  LINE (x, y + w%)-(x + l%, y + w%), 15
  LINE (x + l%, y)-(x + l%, y + w%), 15
CASE 1
  LINE (x, y)-(x + l%, y + w%), 15, B
  LINE (x + 1, y + w%)-(x + l%, y + w%), 8
  LINE (x + l%, y + 1)-(x + l%, y + w%), 8
END SELECT
END SUB

SUB savefile
MousePointer 2
errornum = 0
ON ERROR GOTO Handler
maxprint "File name (0 to exit): ", 5, 51
LOCATE 4, 24: LINE INPUT file$
IF errornum <> 0 THEN savefile
IF file$ = "0" THEN LINE (5, 35)-(355, 64), 7, BF: MousePointer 1: EXIT SUB
ON ERROR GOTO 0
IF save12 = 1 THEN
  errornum = 0
  press 113, 9, 42, 25, -1
  IF errornum = 0 THEN
    LINE (5, 35)-(355, 64), 7, BF
    image(1) = boardx / scale
    image(2) = boardy / scale
    image(3) = 0
    image(4) = 42
    image(5) = 63
    image(6) = blue%
    image(7) = green%
    image(8) = red%
    GET (530, 20)-(529 + boardx / scale, 19 + boardy / scale), image(9)
    ON ERROR GOTO Handler
    DEF SEG = VARSEG(image(1))
    BSAVE file$ + "12.bpf", VARPTR(image(1)), 64 + (boardx / scale) * (boardy / scale)
    ON ERROR GOTO 0
    DEF SEG = VARSEG(a(0))
    press 113, 9, 42, 25, 0
  ELSE
    savefile
  END IF
END IF
IF savedat = 1 THEN
  errornum = 0
  press 113, 9, 42, 25, -1
  LINE (5, 35)-(355, 64), 7, BF
  ON ERROR GOTO Handler
  OPEN file$ + ".dat" FOR OUTPUT AS #1
  ON ERROR GOTO 0
  WRITE #1, boardx / scale
  WRITE #1, boardy / scale
  WRITE #1, 0
  WRITE #1, 42
  WRITE #1, 63
  WRITE #1, blue%
  WRITE #1, green%
  WRITE #1, red%
  FOR y = 1 TO boardy / scale
    FOR x = 1 TO boardx / scale
      WRITE #1, picture(x, y)
    NEXT
  NEXT
  CLOSE #1
END IF
IF save13 = 1 THEN
  errornum = 0
  press 113, 9, 42, 25, -1
  LINE (5, 35)-(207, 64), 7, BF
  image(1) = boardx / scale
  image(2) = boardy / scale
  image(3) = 0
  image(4) = 42
  image(5) = 63
  image(6) = blue%
  image(7) = green%
  image(8) = red%
  CLS : SCREEN 13
  FOR i = 1 TO boardy / scale
    FOR ii = 1 TO boardx / scale
      PSET (ii, i), picture(ii, i)
    NEXT
  NEXT
  GET (1, 1)-(boardx / scale, boardy / scale), image(9)
  ON ERROR GOTO Handler
  DEF SEG = VARSEG(image(1))
  BSAVE file$ + "13.bpf", VARPTR(image(1)), 64 + (boardx / scale) * (boardy / scale)
  ON ERROR GOTO 0
  SCREEN 12
  defscreen 7
  loadpicture
END IF
LINE (5, 35)-(355, 64), 7, BF
MousePointer 1
END SUB

SUB saveset
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  IF mx <= 369 OR mx >= 380 OR my <= 19 OR my >= 58 THEN EXIT SUB
  IF mclick = 1 THEN
    MousePointer 2
    SELECT CASE my
    CASE 20 TO 29
      save12 = save12 * -1
      IF save12 = 1 THEN PUT (370, 20), images(186), PSET ELSE PUT (370, 20), images(165), PSET
    CASE 34 TO 43
      save13 = save13 * -1
      IF save13 = 1 THEN PUT (370, 34), images(186), PSET ELSE PUT (370, 34), images(165), PSET
    CASE 48 TO 57
      savedat = savedat * -1
      IF savedat = 1 THEN PUT (370, 48), images(186), PSET ELSE PUT (370, 48), images(165), PSET
    END SELECT
    MousePointer 1
  END IF
  t# = TIMER + .05
  DO: LOOP UNTIL TIMER >= t#
LOOP
END SUB

SUB scribble
SELECT CASE tool%
CASE 1
  freedraw
CASE 2
  fillit
CASE 3
  convertc
CASE 4
  opline
CASE 5
  square
CASE 6
  opcircle
END SELECT
END SUB

SUB setsize (x, y)
colorused.x = 438: colorused.y = 148: colorused.c = 0: finalc.c = 0: finalc.x = 438: finalc.y = 148
save12 = 1: save13 = -1: savedat = -1
empty = 1
sizex = x: sizey = y
FOR i = 1 TO 100
  FOR ii = 1 TO 100
    picture(i, ii) = 15
  NEXT
NEXT
IF sizex < sizey THEN scale = INT(400 / sizey) ELSE scale = INT(400 / sizex)
boardx = sizex * scale
boardy = sizey * scale
tool% = 1: menus% = 0
defscreen 7
END SUB

SUB sizer (x, y, w)
MousePointer 2
LINE (180, 50)-(350, 64), 7, BF
LINE (227, y)-(350, y + 18), 7, BF
LINE (239, y + 7)-(338, y + 7), 0
IF x <= 239 THEN x = 239
IF x >= 338 THEN x = 338
IF w = 1 THEN
  lengthx = x - 238: IF lengthx < 1 THEN lengthx = 1
  PUT (x - 9, y), images(119), PSET
  maxprint "x = " + STR$(lengthx) + " y = " + STR$(widthy), 180, 50
END IF
IF w = 2 THEN
  widthy = x - 238: IF widthy < 1 THEN widthy = 1
  PUT (x - 9, y), images(119), PSET
  maxprint "x = " + STR$(lengthx) + " y = " + STR$(widthy), 180, 50
END IF
MousePointer 1
END SUB

SUB sliderchange (x, y, o)
LINE (456, y)-(527 + 20, y + 14), 7, BF
LINE (465, y + 7)-(527, y + 7), 0
IF x >= 519 THEN x = 519
IF o = 1 THEN
  blue% = x + 9 - 465: IF blue% < 0 THEN blue% = 0
  PUT (blue% + 465 - 9, y), images(119), PSET
END IF
IF o = 2 THEN
  green% = x + 9 - 465: IF green% < 0 THEN green% = 0
  PUT (green% + 465 - 9, y), images(119), PSET
END IF
IF o = 3 THEN
  red% = x + 9 - 465: IF red% < 0 THEN red% = 0
  PUT (red% + 465 - 9, y), images(119), PSET
END IF
PALETTE 14, red% + 256 * green% + 65536 * blue%
END SUB

SUB slowupdate (startx, starty, stopx, stopy)
IF startx > stopx THEN xs = -1 ELSE xs = 1
IF starty > stopy THEN ys = -1 ELSE ys = 1
MousePointer 2
FOR y = starty TO stopy STEP ys
  FOR x = startx TO stopx STEP xs
    IF POINT(x, y) = finalc.c THEN
      tempx = INT((x - 10) / scale) + 1
      tempy = INT((y - 70) / scale) + 1
      IF tempx < 1 OR tempx > boardx / scale OR tempy < 1 OR tempy > boardy / scale THEN GOTO 4
      picture(tempx, tempy) = finalc.c

4:
    END IF
  NEXT
NEXT
loadpicture
MousePointer 1
END SUB

SUB square
maxprint "If your picture is big, this will be slow", 5, 51
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  IF mx <= 9 OR mx >= 9 + boardx OR my <= 69 OR my >= 69 + boardy THEN maxprint " ", 5, 51: EXIT SUB
  flag = 0
  IF mclick = 1 THEN
    flag = 1
    firstx = INT((mx - 10) / scale + 1)
    firsty = INT((my - 70) / scale + 1)
    WHILE mclick = 1
      CALL MousePointer(3)
      CALL mouse(cx, dx, bx)
      IF mx <= 9 OR mx >= 9 + boardx OR my <= 69 OR my >= 69 + boardy THEN maxprint " ", 5, 51: EXIT SUB
      tempx = INT((mx - 10) / scale + 1)
      tempy = INT((my - 70) / scale + 1)
      IF oldx <> tempx OR oldy <> tempy THEN
        MousePointer 2
        loadpicture
        VIEW SCREEN (10, 70)-(9 + boardx, 69 + boardy)
        IF empty = 1 THEN
          LINE ((firstx - 1) * scale + 10 + scale / 2, (firsty - 1) * scale + 70 + scale / 2)-((tempx - 1) * scale + 10 + scale / 2, (tempy - 1) * scale + 70 + scale / 2), finalc.c, B
        ELSE
          LINE ((firstx - 1) * scale + 10 + scale / 2, (firsty - 1) * scale + 70 + scale / 2)-((tempx - 1) * scale + 10 + scale / 2, (tempy - 1) * scale + 70 + scale / 2), finalc.c, BF
        END IF
        VIEW SCREEN (0, 0)-(639, 479)
        MousePointer 1
      END IF
      oldx = tempx
      oldy = tempy
      t# = TIMER + .05
      DO: LOOP UNTIL TIMER >= t#
    WEND
  END IF
  IF flag = 1 THEN backitup: CALL slowupdate((firstx - 1) * scale + 10 + scale / 2, (firsty - 1) * scale + 70 + scale / 2, (tempx - 1) * scale + 10 + scale / 2, (tempy - 1) * scale + 70 + scale / 2): loadpicture: updatepicture: EXIT DO
LOOP
maxprint " ", 5, 51
END SUB

SUB toolbar
DO
  CALL MousePointer(3)
  CALL mouse(cx, dx, bx)
  IF mx <= 439 OR mx >= 572 OR my <= 88 OR my >= 142 THEN EXIT SUB
  SELECT CASE mx
  CASE 440 TO 461
    IF my >= 120 AND my <= 141 THEN toolchange 1, mclick
    IF my >= 89 AND my <= 110 AND mclick = 1 THEN
      IF empty = 0 THEN MousePointer 2: press 440, 89, 21, 21, -1: press 462, 89, 21, 21, 0: MousePointer 1
      empty = 1
    END IF
  CASE 462 TO 483
    IF my >= 120 AND my <= 141 THEN toolchange 2, mclick
    IF my >= 89 AND my <= 110 AND mclick = 1 THEN
      IF empty = 1 THEN MousePointer 2: press 440, 89, 21, 21, 0: press 462, 89, 21, 21, -1: MousePointer 1
      empty = 0
    END IF
  CASE 484 TO 505
    IF my >= 120 AND my <= 141 THEN toolchange 3, mclick
  CASE 506 TO 527
    IF my >= 120 AND my <= 141 THEN toolchange 4, mclick
    IF my >= 89 AND my <= 110 AND mclick = 1 THEN undoit
  CASE 528 TO 549
    IF my >= 120 AND my <= 141 THEN toolchange 5, mclick
  CASE 550 TO 571
    IF my >= 120 AND my <= 141 THEN toolchange 6, mclick
  END SELECT
  t# = TIMER + .01
  DO: LOOP UNTIL TIMER >= t#
LOOP
END SUB

SUB toolchange (t, p)
IF tool% = t THEN EXIT SUB
MousePointer 2
IF p = 1 THEN p% = -1
IF p = 0 THEN p% = 1
IF p = 1 THEN press toolo(tool%).x, toolo(tool%).y, 21, 21, 0
IF p = 1 THEN tool% = t: press toolo(tool%).x, toolo(tool%).y, 21, 21, p%
MousePointer 1
END SUB

SUB undoit
MousePointer 2: press 89, 506, 21, 21, -1: MousePointer 1
FOR y = 1 TO boardy / scale
  FOR x = 1 TO boardx / scale
    picture(x, y) = backup1(x, y)
  NEXT
NEXT
loadpicture
updatepicture
MousePointer 2: press 89, 506, 21, 21, 0: MousePointer 1
END SUB

SUB updatepicture
MousePointer 2
FOR i = 70 TO 70 + (boardy - scale) STEP scale
  FOR ii = 10 TO 10 + (boardx - scale) STEP scale
    picture(INT((ii - 10) / scale) + 1, INT((i - 70) / scale) + 1) = POINT(ii, i)
  NEXT
NEXT
MousePointer 1
FOR y = 20 TO 19 + boardy / scale
  FOR x = 530 TO 529 + boardx / scale
    PSET (x, y), picture(x - 529, y - 19)
  NEXT
NEXT
END SUB

SUB xxxchange (x, y, c, z)
CALL MousePointer(2)
IF colorused.c <> c THEN
  press colorused.x, colorused.y, 33, 33, 0
  colorused.x = x
  colorused.y = y
  colorused.c = c
  press x, y, 33, 33, 1: CALL MousePointer(1): EXIT SUB
END IF
IF z = 1 THEN press 555, 414, 54, 54, 0: press finalc.x, finalc.y, 33, 33, 0: finalc.c = c: finalc.x = x: finalc.y = y
CALL MousePointer(1)
END SUB

 
 Respond to this message   
Tusike
(Premier Login iorr5t)
Forum Owner

run_me.bas

August 6 2007, 10:01 AM 

DIM letters(1 TO 3500)
CLS
SCREEN 12
OPEN "toolo.dat" FOR OUTPUT AS #1
FOR i = 1 TO 12
  READ x
  WRITE #1, x
NEXT
FOR i = 1 TO 87
  READ r$
  LOCATE 1, 1: PRINT r$
  GET (0, 2)-(6, 14), letters(1 + (i - 1) * 40)
NEXT
LOCATE 1, 1: PRINT CHR$(34): GET (0, 2)-(6, 14), letters(3461)
CLS
DEF SEG = VARSEG(letters(1))
BSAVE "letters.bpf", VARPTR(letters(1)), 14000
CHAIN "generate.bas"
DATA 440, 120, 462, 120, 484, 120, 506, 120, 528, 120, 550, 120
DATA "A", "a", "B", "b", "C", "c", "D", "d", "E", "e", "F"
DATA "f", "G", "g", "H", "h", "I", "i", "J", "j", "K", "k"
DATA "L", "l", "M", "m", "N", "n", "O", "o", "P", "p", "Q"
DATA "q", "R", "r", "S", "s", "T", "t", "U", "u", "V", "v"
DATA "W", "w", "X", "x", "Y", "y", "Z", "z", "0", "1", "2"
DATA "3", "4", "5", "6", "7", "8", "9", "!", "@", "#", "$"
DATA "%", "^", "&", "*", "(", ")", "-", "=", "_", "+", "<"
DATA ">", ",", ".", "?", "/", ":", ";", "'", "[", "]"

 
 Respond to this message   
Tusike
(Premier Login iorr5t)
Forum Owner

generate.bas

August 6 2007, 10:04 AM 

DIM images(1 TO 322)
CLS
SCREEN 12
PAINT (0, 0), 7
' Converter
FOR i = 0 TO 13
  FOR ii = 0 TO 13
    READ c
    IF c = 7 THEN c = 0: GOTO 1
    IF c = 0 THEN c = 7
    IF c = 9 THEN c = 2
    IF c = 14 THEN c = 9

1:
    PSET (i, ii), c
  NEXT
NEXT
GET (0, 0)-(13, 13), images(1)
DATA 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07
DATA 07, 07, 00, 00, 00, 00, 00, 00, 07, 07, 07, 07, 07, 07
DATA 07, 00, 00, 09, 07, 07, 09, 00, 00, 00, 00, 07, 07, 07
DATA 07, 00, 07, 07, 09, 09, 07, 07, 07, 07, 00, 07, 07, 07
DATA 07, 00, 00, 09, 07, 07, 09, 00, 00, 00, 00, 07, 07, 07
DATA 07, 14, 00, 00, 00, 00, 00, 00, 07, 07, 07, 07, 07, 07
DATA 14, 14, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07
DATA 14, 14, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07
DATA 07, 14, 00, 00, 00, 00, 00, 00, 07, 07, 07, 07, 07, 07
DATA 07, 00, 00, 06, 07, 07, 06, 00, 00, 00, 00, 07, 07, 07
DATA 07, 00, 07, 07, 06, 06, 07, 07, 07, 07, 00, 07, 07, 07
DATA 07, 00, 00, 06, 07, 07, 06, 00, 00, 00, 00, 07, 07, 07
DATA 07, 07, 00, 00, 00, 00, 00, 00, 07, 07, 07, 07, 07, 07
DATA 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07
CLS
PAINT (0, 0), 7
' Free draw
FOR i = 0 TO 13
  FOR ii = 0 TO 13
    READ c
    IF c = 7 THEN c = 0 ELSE c = 7
    PSET (ii, i), c
  NEXT
NEXT
GET (0, 0)-(13, 13), images(30)
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 0, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 0, 0, 7, 7
DATA 7, 7, 7, 7, 7, 7, 0, 0, 7, 0, 0, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 0, 7, 0, 0, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 0, 7, 0, 0, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 0, 7, 0, 0, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 0, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 0, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
CLS : PAINT (0, 0), 7
' exit sign
FOR i = 0 TO 13
  FOR ii = 0 TO 14
    READ c
    PSET (ii, i), c
  NEXT
NEXT
GET (0, 0)-(14, 13), images(59)
DATA 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
DATA 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 0, 0, 7, 7, 7, 7, 0, 0, 7, 7, 8
DATA 15, 7, 7, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 7, 8
DATA 15, 7, 7, 7, 0, 0, 7, 7, 7, 7, 0, 0, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8
DATA 15, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
CLS : PAINT (0, 0), 7
' filler
FOR i = 0 TO 13
  FOR ii = 0 TO 15
    READ c
    IF c = 7 THEN c = 0: GOTO 2
    IF c = 0 THEN c = 7
    IF c = 1 THEN c = 6

2:
    PSET (ii, i), c
  NEXT
NEXT
GET (0, 0)-(15, 13), images(90)
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7
DATA 7, 7, 7, 7, 7, 7, 7, 0, 7, 0, 0, 7, 7, 0, 0, 0
DATA 7, 7, 7, 7, 7, 7, 0, 7, 0, 0, 0, 0, 7, 7, 0, 0
DATA 7, 7, 7, 7, 7, 0, 7, 0, 1, 7, 0, 0, 0, 7, 7, 7
DATA 7, 7, 7, 1, 0, 1, 0, 7, 7, 1, 7, 0, 0, 0, 7, 7
DATA 7, 7, 1, 0, 1, 0, 1, 1, 7, 7, 7, 7, 0, 0, 0, 7
DATA 7, 1, 0, 1, 0, 7, 1, 1, 1, 7, 7, 7, 7, 0, 0, 7
DATA 7, 1, 0, 0, 0, 7, 7, 1, 1, 7, 7, 7, 0, 0, 0, 7
DATA 7, 1, 7, 0, 0, 0, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7
DATA 7, 1, 7, 7, 0, 0, 0, 7, 7, 7, 0, 0, 0, 7, 7, 7
DATA 7, 1, 7, 7, 7, 0, 0, 0, 7, 0, 0, 0, 7, 7, 7, 7
DATA 7, 1, 7, 7, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7
DATA 1, 1, 1, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7
CLS : PAINT (0, 0), 7
' slider
FOR i = 0 TO 14
  FOR ii = 0 TO 19
    READ c
    PSET (ii, i), c
  NEXT
NEXT
GET (0, 0)-(19, 14), images(119)
DATA 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
' unchecked
CLS : PAINT (0, 0), 7
LINE (0, 0)-(9, 9), 15, BF
GET (0, 0)-(9, 9), images(165)
' checked
CLS : PAINT (0, 0), 7
FOR i = 0 TO 9
  FOR ii = 0 TO 9
    READ c
    PSET (ii, i), c
  NEXT
NEXT
GET (0, 0)-(9, 9), images(186)
DATA 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
DATA 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
DATA 15, 15, 15, 15, 15, 15, 15, 15, 02, 15
DATA 15, 15, 15, 15, 15, 15, 15, 02, 02, 15
DATA 15, 15, 15, 15, 15, 15, 02, 02, 15, 15
DATA 15, 02, 15, 15, 15, 02, 02, 15, 15, 15
DATA 15, 02, 02, 15, 02, 02, 15, 15, 15, 15
DATA 15, 15, 02, 02, 02, 15, 15, 15, 15, 15
DATA 15, 15, 15, 02, 15, 15, 15, 15, 15, 15
DATA 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
CLS : PAINT (0, 0), 7
' opline
LINE (0, 0)-(13, 13), 0
LINE (1, 0)-(13, 12), 8
LINE (0, 1)-(12, 13), 8
GET (0, 0)-(13, 13), images(207)
CLS : PAINT (0, 0), 7
' square
LINE (0, 0)-(13, 13), 8, B
LINE (1, 1)-(12, 12), 0, B
LINE (2, 2)-(11, 11), 8, B
GET (0, 0)-(13, 13), images(236)
CLS : PAINT (0, 0), 7
' opcircle
CIRCLE (7, 7), 6, 8
CIRCLE (7, 7), 5, 0
GET (0, 0)-(13, 13), images(265)
CLS : PAINT (0, 0), 7
' undo
FOR i = 0 TO 13
  FOR ii = 0 TO 13
    READ c
    PSET (ii, i), c
  NEXT
NEXT
GET (0, 0)-(13, 13), images(294)
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 2, 2, 2, 7, 2, 2, 7, 7
DATA 7, 7, 7, 7, 7, 2, 2, 2, 7, 7, 7, 2, 7, 7
DATA 7, 7, 7, 7, 2, 2, 2, 7, 7, 7, 7, 2, 7, 7
DATA 7, 7, 7, 2, 2, 2, 7, 7, 7, 7, 2, 7, 7, 7
DATA 7, 7, 2, 2, 2, 2, 7, 7, 7, 2, 7, 7, 7, 7
DATA 2, 7, 2, 2, 2, 7, 7, 7, 2, 7, 7, 7, 7, 7
DATA 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
CLS
DEF SEG = VARSEG(images(1))
BSAVE "images.bpf", VARPTR(images(1)), 1288
LINE INPUT "All data created - Press Enter"; e$
SYSTEM

 
 Respond to this message   

(Login Tusike)

What bpf files are

October 14 2007, 12:18 AM 

It stands for "Bsaved picture file"
The format is the following
image(1), image(2) - > x and y size of picture
image(3) - image(8) -> palette settings
image(9) -> the picture

Now I know that sometimes you won't need anything from image(1) to image(9), since you didn't change the palette. I posted a program below that you can use to convert the picture's format. For this one, you can only convert 12.bpf files to a format which only contains the picture with no additional palette settings:

'When prompted for File name don't include the 12.bpf extension
CLS
SCREEN 12
DIM image(10000)
DIM image2(10000)
1
CLS
PRINT "Enter 0 to exit"
INPUT "File name: ", file$
IF file$ = "0" THEN SYSTEM
file$ = file$ + "12.bpf"
CLS
DEF SEG = VARSEG(image(0))
BLOAD file$, VARPTR(image(0))
PUT (0, 0), image(8)
GET (0, 0)-(image(0) - 1, image(1) - 1), image2(0)

DEF SEG = VARSEG(image2(0))
BSAVE file$, VARPTR(image2(0)), image(0) * image(1)
GOTO 1



 
 Respond to this message   
Iain
(no login)

Ever figure out what a bpf file is?

January 16 2008, 6:15 PM 

From what I have seen, they look like files associated with some business software.

 
 Respond to this message   
Iain
(no login)

* OOPs, Mac delete my previous post

January 16 2008, 6:16 PM 

*

 
 Respond to this message   
Tusike
(Premier Login iorr5t)
Forum Owner

generate.bas

August 6 2007, 10:03 AM 

DIM images(1 TO 322)
CLS
SCREEN 12
PAINT (0, 0), 7
' Converter
FOR i = 0 TO 13
  FOR ii = 0 TO 13
    READ c
    IF c = 7 THEN c = 0: GOTO 1
    IF c = 0 THEN c = 7
    IF c = 9 THEN c = 2
    IF c = 14 THEN c = 9

1:
    PSET (i, ii), c
  NEXT
NEXT
GET (0, 0)-(13, 13), images(1)
DATA 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07
DATA 07, 07, 00, 00, 00, 00, 00, 00, 07, 07, 07, 07, 07, 07
DATA 07, 00, 00, 09, 07, 07, 09, 00, 00, 00, 00, 07, 07, 07
DATA 07, 00, 07, 07, 09, 09, 07, 07, 07, 07, 00, 07, 07, 07
DATA 07, 00, 00, 09, 07, 07, 09, 00, 00, 00, 00, 07, 07, 07
DATA 07, 14, 00, 00, 00, 00, 00, 00, 07, 07, 07, 07, 07, 07
DATA 14, 14, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07
DATA 14, 14, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07
DATA 07, 14, 00, 00, 00, 00, 00, 00, 07, 07, 07, 07, 07, 07
DATA 07, 00, 00, 06, 07, 07, 06, 00, 00, 00, 00, 07, 07, 07
DATA 07, 00, 07, 07, 06, 06, 07, 07, 07, 07, 00, 07, 07, 07
DATA 07, 00, 00, 06, 07, 07, 06, 00, 00, 00, 00, 07, 07, 07
DATA 07, 07, 00, 00, 00, 00, 00, 00, 07, 07, 07, 07, 07, 07
DATA 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07, 07
CLS
PAINT (0, 0), 7
' Free draw
FOR i = 0 TO 13
  FOR ii = 0 TO 13
    READ c
    IF c = 7 THEN c = 0 ELSE c = 7
    PSET (ii, i), c
  NEXT
NEXT
GET (0, 0)-(13, 13), images(30)
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 0, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 0, 0, 7, 0, 0, 7, 7
DATA 7, 7, 7, 7, 7, 7, 0, 0, 7, 0, 0, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 0, 7, 0, 0, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 0, 7, 0, 0, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 0, 7, 0, 0, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 0, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 0, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 0, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
CLS : PAINT (0, 0), 7
' exit sign
FOR i = 0 TO 13
  FOR ii = 0 TO 14
    READ c
    PSET (ii, i), c
  NEXT
NEXT
GET (0, 0)-(14, 13), images(59)
DATA 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
DATA 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 0, 0, 7, 7, 7, 7, 0, 0, 7, 7, 8
DATA 15, 7, 7, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 0, 0, 0, 0, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 0, 0, 7, 7, 0, 0, 7, 7, 7, 8
DATA 15, 7, 7, 7, 0, 0, 7, 7, 7, 7, 0, 0, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8
DATA 15, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
CLS : PAINT (0, 0), 7
' filler
FOR i = 0 TO 13
  FOR ii = 0 TO 15
    READ c
    IF c = 7 THEN c = 0: GOTO 2
    IF c = 0 THEN c = 7
    IF c = 1 THEN c = 6

2:
    PSET (ii, i), c
  NEXT
NEXT
GET (0, 0)-(15, 13), images(90)
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7
DATA 7, 7, 7, 7, 7, 7, 7, 0, 7, 0, 0, 7, 7, 0, 0, 0
DATA 7, 7, 7, 7, 7, 7, 0, 7, 0, 0, 0, 0, 7, 7, 0, 0
DATA 7, 7, 7, 7, 7, 0, 7, 0, 1, 7, 0, 0, 0, 7, 7, 7
DATA 7, 7, 7, 1, 0, 1, 0, 7, 7, 1, 7, 0, 0, 0, 7, 7
DATA 7, 7, 1, 0, 1, 0, 1, 1, 7, 7, 7, 7, 0, 0, 0, 7
DATA 7, 1, 0, 1, 0, 7, 1, 1, 1, 7, 7, 7, 7, 0, 0, 7
DATA 7, 1, 0, 0, 0, 7, 7, 1, 1, 7, 7, 7, 0, 0, 0, 7
DATA 7, 1, 7, 0, 0, 0, 7, 7, 7, 7, 7, 0, 0, 0, 7, 7
DATA 7, 1, 7, 7, 0, 0, 0, 7, 7, 7, 0, 0, 0, 7, 7, 7
DATA 7, 1, 7, 7, 7, 0, 0, 0, 7, 0, 0, 0, 7, 7, 7, 7
DATA 7, 1, 7, 7, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 7, 7
DATA 1, 1, 1, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7
CLS : PAINT (0, 0), 7
' slider
FOR i = 0 TO 14
  FOR ii = 0 TO 19
    READ c
    PSET (ii, i), c
  NEXT
NEXT
GET (0, 0)-(19, 14), images(119)
DATA 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 15, 7, 7, 7, 7, 7, 15, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8
DATA 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
' unchecked
CLS : PAINT (0, 0), 7
LINE (0, 0)-(9, 9), 15, BF
GET (0, 0)-(9, 9), images(165)
' checked
CLS : PAINT (0, 0), 7
FOR i = 0 TO 9
  FOR ii = 0 TO 9
    READ c
    PSET (ii, i), c
  NEXT
NEXT
GET (0, 0)-(9, 9), images(186)
DATA 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
DATA 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
DATA 15, 15, 15, 15, 15, 15, 15, 15, 02, 15
DATA 15, 15, 15, 15, 15, 15, 15, 02, 02, 15
DATA 15, 15, 15, 15, 15, 15, 02, 02, 15, 15
DATA 15, 02, 15, 15, 15, 02, 02, 15, 15, 15
DATA 15, 02, 02, 15, 02, 02, 15, 15, 15, 15
DATA 15, 15, 02, 02, 02, 15, 15, 15, 15, 15
DATA 15, 15, 15, 02, 15, 15, 15, 15, 15, 15
DATA 15, 15, 15, 15, 15, 15, 15, 15, 15, 15
CLS : PAINT (0, 0), 7
' opline
LINE (0, 0)-(13, 13), 0
LINE (1, 0)-(13, 12), 8
LINE (0, 1)-(12, 13), 8
GET (0, 0)-(13, 13), images(207)
CLS : PAINT (0, 0), 7
' square
LINE (0, 0)-(13, 13), 8, B
LINE (1, 1)-(12, 12), 0, B
LINE (2, 2)-(11, 11), 8, B
GET (0, 0)-(13, 13), images(236)
CLS : PAINT (0, 0), 7
' opcircle
CIRCLE (7, 7), 6, 8
CIRCLE (7, 7), 5, 0
GET (0, 0)-(13, 13), images(265)
CLS : PAINT (0, 0), 7
' undo
FOR i = 0 TO 13
  FOR ii = 0 TO 13
    READ c
    PSET (ii, i), c
  NEXT
NEXT
GET (0, 0)-(13, 13), images(294)
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 2, 2, 2, 7, 2, 2, 7, 7
DATA 7, 7, 7, 7, 7, 2, 2, 2, 7, 7, 7, 2, 7, 7
DATA 7, 7, 7, 7, 2, 2, 2, 7, 7, 7, 7, 2, 7, 7
DATA 7, 7, 7, 2, 2, 2, 7, 7, 7, 7, 2, 7, 7, 7
DATA 7, 7, 2, 2, 2, 2, 7, 7, 7, 2, 7, 7, 7, 7
DATA 2, 7, 2, 2, 2, 7, 7, 7, 2, 7, 7, 7, 7, 7
DATA 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
DATA 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
CLS
DEF SEG = VARSEG(images(1))
BSAVE "images.bpf", VARPTR(images(1)), 1288
LINE INPUT "All data created - Press Enter"; e$
SYSTEM

 
 Respond to this message   

(Login Tusike)

Logical game

September 21 2007, 11:48 AM 

Ok, so this isn't actually a game. It was a math problem that I had to solve on a competition, but to make it easier to solve, I decided to make a program out of it. It's very simple, and doesn't have much features (ex: if you get stuck, it doesn't automatically restart or quit), because I only wanted a quick and easy way to solve the problem. This is how it works:
-> -> -> <- <- <-
You start like that, and you need to move all the -> arrows to the right side, and the <- arrows to the left side. Each arrow can only go in the direction that they are pointing, and they can either move to the empty space, or jump over another arrow into an empty space.

'Here is the code:

CLS
SCREEN 12
DIM places(1 TO 7)
DIM symbols(374)
CONST right = 250
CONST left = 125
CONST none = 0
FOR i = 1 TO 3
places(i) = right
places(i + 4) = left
NEXT
places(4) = none
CLS
LINE (0, 0)-(19, 19), 0, BF
GET (0, 0)-(19, 19), symbols(none)
CLS
LINE (2, 9)-(7, 5), 2
LINE (2, 10)-(7, 14), 2
LINE (7, 14)-(7, 5), 2
PAINT (5, 10), 2
LINE (5, 8)-(17, 11), 2, BF
GET (0, 0)-(19, 19), symbols(left)
CLS
LINE (17, 9)-(12, 5), 9
LINE (17, 10)-(12, 14), 9
LINE (12, 14)-(12, 5), 9
PAINT (14, 10), 9
LINE (14, 8)-(2, 11), 9, BF
GET (0, 0)-(19, 19), symbols(right)
CLS
FOR i = 250 TO 290 STEP 20
PUT (i, 230), symbols(right)
PUT (i + 80, 230), symbols(left)
NEXT
PUT (310, 230), symbols(none)
LINE (250, 230)-(269, 249), 6, B
mark = 1

DO
DO
DO: LOOP UNTIL INKEY$ = ""
DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
LINE ((mark - 1) * 20 + 250, 230)-((mark - 1) * 20 + 269, 249), 0, B
SELECT CASE a$
CASE CHR$(0) + "M": mark = mark + 1
CASE CHR$(0) + "K": mark = mark - 1
CASE CHR$(27): SYSTEM
CASE CHR$(13): EXIT DO
END SELECT
IF mark > 7 THEN mark = 1
IF mark < 1 THEN mark = 7
LINE ((mark - 1) * 20 + 250, 230)-((mark - 1) * 20 + 269, 249), 6, B
LOOP
upperx = 0: lowerx = 0
upperx = mark + 1
IF upperx < 8 THEN
IF places(mark) = right AND places(upperx) = none THEN
places(upperx) = places(mark)
places(mark) = none
PUT ((mark - 1) * 20 + 250, 230), symbols(none), PSET
PUT ((upperx - 1) * 20 + 250, 230), symbols(places(upperx))
mark = mark + 1
LINE ((mark - 1) * 20 + 250, 230)-((mark - 1) * 20 + 269, 249), 6, B
GOTO continue
END IF
END IF

upperx = upperx + 1
IF upperx < 8 THEN
IF places(mark) = right AND places(upperx) = none THEN
places(upperx) = places(mark)
places(mark) = none
PUT ((mark - 1) * 20 + 250, 230), symbols(none), PSET
PUT ((upperx - 1) * 20 + 250, 230), symbols(places(upperx))
mark = mark + 2
LINE ((mark - 1) * 20 + 250, 230)-((mark - 1) * 20 + 269, 249), 6, B
GOTO continue
END IF
END IF

lowerx = mark - 1
IF lowerx > 0 THEN
IF places(mark) = left AND places(lowerx) = none THEN
places(lowerx) = places(mark)
places(mark) = none
PUT ((mark - 1) * 20 + 250, 230), symbols(none), PSET
PUT ((lowerx - 1) * 20 + 250, 230), symbols(places(lowerx))
mark = mark - 1
LINE ((mark - 1) * 20 + 250, 230)-((mark - 1) * 20 + 269, 249), 6, B
GOTO continue
END IF
END IF

lowerx = lowerx - 1
IF lowerx > 0 THEN
IF places(mark) = left AND places(lowerx) = none THEN
places(lowerx) = places(mark)
places(mark) = none
PUT ((mark - 1) * 20 + 250, 230), symbols(none), PSET
PUT ((lowerx - 1) * 20 + 250, 230), symbols(places(lowerx))
mark = mark - 2
LINE ((mark - 1) * 20 + 250, 230)-((mark - 1) * 20 + 269, 249), 6, B
GOTO continue
END IF
END IF

continue:
LINE ((mark - 1) * 20 + 250, 230)-((mark - 1) * 20 + 269, 249), 6, B
IF places(1) = left AND places(2) = left AND places(3) = left AND places(5) = right AND places(6) = right AND places(7) = right THEN LOCATE 2, 33: PRINT "Congratulations!": SYSTEM
LOOP

'End of program

 
 Respond to this message   

(Login Tusike)

The computer is smart...

September 21 2007, 11:48 PM 

Read the instructions for using this program, and see how smart the computer is!!! (If you follow the instructions correctly...)

'Start here

CLS
x = 20
LOCATE 3, x
PRINT "First, choose any number. Then, mix up "
LOCATE 4, x
PRINT "the digits of the first number, to create"
LOCATE 5, x
PRINT "another one. Now, subtract the smaller "
LOCATE 6, x
PRINT "number from the bigger one, and multiply "
LOCATE 7, x
PRINT "than with any number you wish. Finally, "
LOCATE 8, x
PRINT "cross out any digit from your final "
LOCATE 9, x
PRINT "number (not a digit that equals 0), and "
LOCATE 10, x
PRINT "enter it below: "
LOCATE 12, x
PRINT "Example: 231 - 123 = 108"
LOCATE 13, x
PRINT "108 * 7 = 756"
LOCATE 14, x
PRINT "Let's cross out 5: 76. The computer will "
LOCATE 15, x
PRINT "Tell you that the missing digit is 5. "

LOCATE 17, 20
INPUT "", number$
digs = 0
FOR i = 1 TO LEN(number$)
digs = digs + VAL(MID$(number$, i, 1))
NEXT
test = 0
DO
test = test + 1
tester = 9 * test
IF tester - digs > 0 THEN EXIT DO
LOOP WHILE INKEY$ = ""
misser = tester - digs
LOCATE 19, 20
COLOR 9
PRINT "The missing digit is"; misser
SYSTEM



 
 Respond to this message   
roy
(no login)

Two clues

September 22 2007, 6:26 AM 

If all the digits add up to nine then the whole number is divisible by nine.
The difference between two numbers with the digets rearranged is divisible by nine.

 
 Respond to this message   

(Login Tusike)

That's exactly what I know.

September 22 2007, 7:51 AM 

Now I just need to prove that it is true, that the difference between a number and another with the same digits rearranged is divisible by nine. It's hard to prove. This is what I have so far:

(10a + b) - (10b + a) = 10a + b - 10b - a = 9a - 9b = 9(a - b), so it is divisible by nine

and

(100a + 10b + c) - (100c + 10a + b) = 100a + 10b + c - 100c - 10a - b = 90a + 9b - 99c =

= 9(10a + b + 11c), so this will work with 3 digit numbers too.

I need to write this down so it would prove that it also works for n digit numbers...

 
 Respond to this message   
roy
(no login)

This may help

September 22 2007, 11:27 AM 

Where n = number of digits > 1 and x = 1 to n-1
We will say x = 1 for this example.
10 ^ n - 10 ^ (n-x) is always divisible by nine therefore:-
b * 10 ^ 3 - b * 10 ^ 1 = b * 1000 - b * 10 = 990 * b etc.

 
 Respond to this message   
roy
(no login)

*Sorry, in the example x = 2

September 22 2007, 12:46 PM 

*

 
 Respond to this message   
roy
(no login)

To make it clearer

September 23 2007, 9:41 AM 

If you have 10^n - 10^(n-x) using the earlier limits then you are always going to be using the equivalent of 10 - 1,1000 - 10,100000 - 100 which will always result in a number divisible by nine.

 
 Respond to this message   

(Login Tusike)

here it is, the proof!!!

September 24 2007, 10:39 AM 

I mean all we actually need to prove is that 10^n - 10^m is divisible by 9, where m is less than or equal to n. So....

10^n = 10^m * 10^n-m
10^n = 9*10^n-1 + 9*10^n-2 + 9*10^n-3 + ... + 9*10^m + 10^m
10^n = 9 (10^n-1 + 10^n-2 + 10^n-3 + ... + 10^m) + 10^m
10^n - 10^m= 9(10^n-1 + 20^n-2 + 10^n-3 + ... + 10^m)

And look!!! 10^n - 10^m equals something that's divisible by 9!

 
 Respond to this message   

(Login burger2227)
R

The principle is used for bank transposition errors

January 6 2008, 7:30 PM 

Create any number and switch any 2 digits. Subtract from the larger number and it is divisible by 9. When a teller is doing the book at the end of the day and it is off, they do the same thing until they find differences divisible by 9. One of the book numbers minus the book error finds a transposition usually.

And your program is not something that is new! Also the programs listed here are for something you actually created. Not a copy of somebody elses work.

Ted



    
This message has been edited by burger2227 on Jan 6, 2008 7:32 PM


 
 Respond to this message   
mennonite
(no login)

oh i think a remake would qualify

January 6 2008, 8:09 PM 

i mean it wouldn't make sense to post another program you didn't write here, but if you were proud of a remake that might make sense.

there is also talk about programs that are posted here. i think "programs you are proud of" is the topic.

 
 Respond to this message   

(Login Tusike)

Snake

September 24 2007, 9:41 AM 

I know this is probably one of the many Snake games, but I hope you like it!!!
Oh, and it's just a demo, since I still need to do some things in it to make it better, but I'm not having enough time for it these days (school)...

Need to run creatf.bas before you play
Instructions aren't done yet. After you beat the championship, you get to create accounts, and then advance in levels. Almost every level reached provides you with new features, such as being able to change the background color.

'Start of program
DECLARE SUB login ()
DECLARE SUB testlevel ()
DEFINT A-Z
DECLARE FUNCTION ask$ (text$, x, y, max, mode)
DECLARE SUB changeapp (i)
DECLARE SUB settings (i)
DECLARE SUB options ()
DECLARE FUNCTION portp$ (txt$)
DECLARE FUNCTION setuplevel ()
DECLARE SUB logo ()
DECLARE SUB highscores (index)
DECLARE SUB SPEEDset ()
DECLARE SUB center (text$, y)
DECLARE SUB clearground (x, y)
DECLARE SUB mainmenu (mark)
DECLARE SUB showinfo (index, value)
DECLARE SUB initialize ()
DECLARE SUB playSNAKE ()
DECLARE SUB defscreen ()
DECLARE SUB restorecolors ()
DECLARE SUB drawthings ()
DECLARE SUB PUTimage (col, row, index)
RANDOMIZE TIMER
CLEAR , , 3000
CLS
DIM SHARED MyErr AS INTEGER
ON ERROR GOTO GetMyErr
DIM SHARED cpu AS DOUBLE
OPEN "snake.tim" FOR INPUT AS #1: INPUT #1, cpu: CLOSE #1
ON ERROR GOTO 0
IF cpu = 0 THEN
  PRINT "First run of this program on this machine"
  PRINT "Please wait a minute while the speed is measured"
  t# = TIMER
  FOR i! = 1 TO 1000000: NEXT
  t2# = TIMER
  cpu = t2# - t#
  OPEN "snake.tim" FOR OUTPUT AS #1: WRITE #1, cpu: CLOSE #1
END IF
SCREEN 12
DIM SHARED imageSET(7364) AS SINGLE, numSET(399) AS SINGLE
DIM SHARED background(6820) AS SINGLE
DIM SHARED ground(1 TO 32, 1 TO 24), eng$(1 TO 128), lang%
DIM SHARED prey, SPEED AS SINGLE, level, usernumber, users, champdone, champ, realspeed AS SINGLE, score, oldscore, speedlevel, lives, snakelength, oldlength

TYPE topperson
  nickname AS STRING * 20
  playdate AS STRING * 10
  score AS LONG
  id AS STRING * 5
END TYPE
DIM SHARED top(1 TO 10) AS topperson

TYPE filmloc
  x AS INTEGER
  y AS INTEGER
END TYPE
DIM SHARED film AS filmloc

TYPE body
  col AS INTEGER
  row AS INTEGER
  bodypart AS INTEGER
  TURN AS INTEGER
  dir AS INTEGER
  rdir AS INTEGER
END TYPE

TYPE account
  nickname AS STRING * 20
  password AS STRING * 8
  level AS INTEGER
  avscore AS INTEGER
  gplayed AS INTEGER
  lvlreached AS INTEGER
  language AS INTEGER
  gmode AS INTEGER
  rats AS INTEGER
  bg AS INTEGER
  snakec AS INTEGER
  spattern AS INTEGER
END TYPE
DIM SHARED user AS account
DIM SHARED snake(1 TO 2) AS body
CONST head = 0
CONST neck = 500
CONST shoulder = 1000
CONST body = 1500
CONST tail = 2000
CONST tailend = 2500
CONST rattle = 3000
CONST mouse = 6000
CONST rat = 6500
CONST frog = 7250
CONST blank = 6625
CONST block = 7125
CONST TURN = 3000
CONST west = 0
CONST north = 125
CONST east = 250
CONST south = 375
CONST NE = 0
CONST NW = 125
CONST SW = 250
CONST SE = 375
CONST WN = 375
CONST EN = 250
CONST ES = 125
CONST WS = 0
GOSUB GETsprites
restorecolors
OPEN "snake.tem" FOR OUTPUT AS #1: CLOSE #1
OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(champdone)
GET #1, 1, champdone
GET #1, 2, usernumber
GET #1, 3, users
CLOSE #1
OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(user)
IF usernumber > 4 THEN
  IF champdone = 1 THEN GET #1, usernumber, user
ELSE
  GET #1, 4, user
END IF
CLOSE #1
lang% = user.language
changeapp 1: changeapp 2: changeapp 3
OPEN "snake.str" FOR INPUT AS #1
FOR i = 1 TO 128
  INPUT #1, eng$(i)
NEXT
CLOSE #1
OPEN "snake.top" FOR RANDOM AS #1 LEN = LEN(top(1))
FOR topers = 1 TO 10
  GET #1, topers, top(topers)
NEXT
CLOSE #1
mainmenu 1
DO
  mainmenu 2
LOOP
CLOSE #2: KILL "snake.tem"
SYSTEM

GetMyErr:
MyErr = ERR: RESUME NEXT

GETsprites:
FOR n = 0 TO 15
  OUT &H3C8, n
  OUT &H3C9, 0
  OUT &H3C9, 0
  OUT &H3C9, 0
NEXT n
maxx = 19: maxy = 299: x = -1: y = 0
RESTORE imagedata
DO
  READ counter, colr
  IF colr = 7 THEN colr = 3: GOTO 17
  IF colr = 14 THEN colr = 3
  IF colr = 77 THEN colr = 7

17:
  FOR i = 1 TO counter
    x = x + 1
    IF x > maxx THEN x = 0: y = y + 1
    PSET (x, y), colr
  NEXT
LOOP UNTIL x = maxx AND y = maxy
index = 0
placey = 0
DO
  IF index = 7000 THEN index = 7250
  GET (0, placey)-(19, placey + 19), imageSET(index)
  IF index < 6500 OR index = 7250 THEN GOSUB pose
  index = index + 500
  placey = placey + 20
LOOP UNTIL placey = 280
LINE (0, 0)-(19, 19), 7, BF
FOR i = 1 TO 500
  x = INT(RND * 20)
  y = INT(RND * 20)
  PSET (x, y), 8
  PSET (x + 1, y + 1), 15
NEXT
LINE (0, 0)-(19, 19), 7, B
GET (0, 0)-(19, 19), imageSET(block)
LINE (0, 0)-(19, 19), 3, BF: GET (0, 0)-(19, 19), imageSET(6625)
GET (0, 0)-(19, 19), imageSET(6750)
GET (0, 0)-(19, 19), imageSET(6875)
GET (0, 0)-(19, 19), imageSET(7000)
CLS
COLOR 4
FOR i = 0 TO 9
  IF i = 0 THEN S$ = "O" ELSE S$ = LTRIM$(RTRIM$(STR$(i)))
  LOCATE 1, 1: PRINT S$
  LINE (40, 41)-(46, 53), 15, BF
  FOR y = 1 TO 13
    FOR x = 0 TO 6
      IF POINT(x, y) = 4 THEN PSET (40 + x, 40 + y), 4
    NEXT
  NEXT
  GET (40, 41)-(46, 53), numSET(i * 40)
  LINE (40, 41)-(46, 53), 3, BF
NEXT
RETURN

pose:
FOR poses = index TO index + 250 STEP 125
  PUT (100, 100), imageSET(poses), PSET
  FOR x = 100 TO 119
    FOR y = 100 TO 119
      PSET (219 - y, x - 20), POINT(x, y)
    NEXT y
  NEXT x
  GET (100, 80)-(119, 99), imageSET(poses + 125)
NEXT poses
RETURN

imagedata:
DATA 49,7,7,10,11,7,2,10,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,10,8,7,1,10,1,12
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,10,7,7,1,10,1,8,1,4,1,12
DATA 2,2,2,6,1,8,1,2,1,8,1,2,1,8,1,10,5,7,1,10,1,8,1,2,1,4,1,12,1,8
DATA 1,2,2,6,1,2,1,8,1,2,1,8,1,2,1,8,2,10,2,7,1,10,1,8,1,2,1,8,1,12
DATA 1,8,1,2,4,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,7,2,8,1,2,1,8,1,2
DATA 1,8,1,2,6,6,1,2,1,8,1,2,1,8,1,2,1,8,1,7,1,10,1,2,1,8,1,2,1,8
DATA 11,6,1,2,2,6,1,7,1,10,1,8,1,2,1,8,1,2,11,6,1,2,2,6,1,7,1,8,1,2
DATA 1,8,1,2,2,8,1,2,6,6,1,2,1,8,1,2,1,8,1,2,1,8,2,7,1,10,1,2,1,8
DATA 1,2,1,12,1,8,1,2,4,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,3,7,1,10,1,2
DATA 1,8,1,4,1,12,1,8,1,2,2,6,1,2,1,8,1,2,1,8,1,2,1,8,2,10,4,7,1,10
DATA 1,2,1,4,1,12,2,2,2,6,1,8,1,2,1,8,1,2,1,8,1,10,7,7,1,10,1,12,1,8
DATA 1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,10,10,7,2,10,1,2,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,10,12,7,7,10,44,7
DATA 120,7,20,10,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,6,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,4,6,1,2
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,6,1,2,2,6,1,2,2,6,2,2,2,6
DATA 1,2,2,6,1,2,2,6,2,2,2,6,1,2,2,6,1,2,2,6,2,2,2,6,1,2,2,6,1,2
DATA 2,6,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,4,6,1,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,2,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,6,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,1,8,1,2,20,10,120,7
DATA 100,7,20,10,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,3,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,2,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,6,1,2
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8
DATA 4,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,6,1,2,2,6,1,2,2,6
DATA 2,2,2,6,1,2,2,6,1,2,2,6,2,2,2,6,1,2,2,6,1,2,2,6,2,2,2,6,1,2
DATA 2,6,1,2,2,6,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,4,6,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,2,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,6,1,2
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8
DATA 3,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,20,10,100,7
DATA 80,7,20,10,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,8,2,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8
DATA 1,2,1,8,1,2,1,8,1,2,1,8,4,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8
DATA 1,2,2,6,1,2,2,6,1,2,2,6,2,2,2,6,1,2,2,6,1,2,2,6,2,2,2,6,1,2
DATA 2,6,1,2,2,6,2,2,2,6,1,2,2,6,1,2,2,6,2,2,1,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,4,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,8,2,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8
DATA 1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,2,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,8,1,2,1,8,1,2,20,10,80,7
DATA 140,7,20,10,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,6,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,1,8,2,2,2,6,1,8,2,6,1,2,1,8,4,6,1,2,1,8,2,6
DATA 1,2,2,6,2,8,2,6,1,2,2,6,1,8,1,2,4,6,1,8,1,2,2,6,1,8,2,6,2,2
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,6,1,8,1,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,1,8,20,10,140,7
DATA 160,7,20,10,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,6,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,6
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,20,10,160,7
DATA 125,7,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,7,7,1,8,1,6
DATA 1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,3,7,2,10,1,6
DATA 1,8,1,6,1,8,2,6,1,8,1,6,1,8,2,6,1,8,1,6,1,8,1,6,3,7,1,8,1,2
DATA 1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,10,2,7
DATA 1,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2
DATA 1,10,2,7,2,10,2,6,1,8,1,6,1,8,2,6,1,8,1,6,1,8,2,6,1,8,1,6,1,8
DATA 6,7,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8
DATA 8,7,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,124,7
DATA 135,7,5,10,13,7,2,10,1,8,1,2,1,8,1,2,1,8,11,7,2,10,1,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,10,7,1,10,1,8,1,2,1,8,1,2,1,8,1,2,2,6,1,8,9,7,1,10,6,6
DATA 1,8,2,6,1,2,8,7,1,10,1,2,6,6,1,2,1,8,1,2,1,8,8,7,1,10,1,8,2,6
DATA 1,8,1,2,2,6,1,8,1,2,1,8,1,2,7,7,1,10,1,8,1,2,2,6,1,2,1,8,2,6
DATA 1,2,1,8,2,10,7,7,1,10,1,2,1,8,6,6,2,10,8,7,1,10,1,2,1,8,1,2,5,6
DATA 1,10,10,7,1,10,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,10,11,7,1,10,1,2,1,8
DATA 2,6,1,2,1,8,1,2,1,10,11,7,1,10,1,8,1,2,2,6,1,8,1,2,1,10,12,7,1,10
DATA 1,2,1,8,1,2,1,8,1,2,1,8,1,10,6,7
DATA 115,7,5,10,13,7,2,10,1,2,1,8,1,2,1,8,1,2,11,7,2,10,1,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,10,7,1,10,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,9,7,1,10
DATA 1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,6,1,8,8,7,1,10,1,8,6,6,1,8,2,6
DATA 1,2,7,7,1,10,1,8,1,2,6,6,1,2,1,8,1,2,1,8,7,7,1,10,1,2,1,8,2,6
DATA 1,8,1,2,2,6,1,8,1,2,1,8,1,2,6,7,1,10,1,2,1,8,1,2,2,6,1,2,1,8
DATA 2,6,1,2,1,8,1,2,1,8,6,7,1,10,1,8,1,2,1,8,6,6,1,8,1,2,2,10,5,7
DATA 1,10,1,8,1,2,1,8,1,2,6,6,2,10,7,7,1,10,1,2,1,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,10,9,7,1,10,1,8,1,2,1,8,2,6,1,2,1,8,1,2,1,8,1,10
DATA 9,7,1,10,1,2,1,8,1,2,2,6,1,8,1,2,1,8,1,10,10,7,1,10,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,8,1,2,1,10,5,7
DATA 94,7,6,10,12,7,2,10,1,2,1,8,1,2,1,8,1,2,1,8,10,7,2,10,1,8,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,9,7,1,10,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2
DATA 1,8,8,7,1,10,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,7,7
DATA 1,10,1,8,2,2,1,8,1,2,1,8,1,2,1,8,1,2,2,6,1,8,6,7,1,10,1,8,1,2
DATA 1,8,6,6,1,8,2,6,1,2,6,7,1,10,1,2,1,8,1,2,6,6,1,2,1,8,1,2,1,8
DATA 5,7,1,10,1,2,1,8,1,2,1,8,2,6,1,8,1,2,2,6,1,8,1,2,1,8,1,2,5,7
DATA 1,10,1,8,1,2,1,8,1,2,2,6,1,2,1,8,2,6,1,2,1,8,1,2,1,8,4,7,1,10
DATA 1,8,1,2,1,8,1,2,1,8,6,6,1,8,1,2,1,8,1,2,4,7,1,10,1,2,1,8,1,2
DATA 1,8,1,2,6,6,1,2,1,8,1,2,1,10,4,7,1,10,1,8,1,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,1,8,2,2,1,8,2,10,5,7,1,10,1,2,1,8,1,2,1,8,2,6,1,2,1,8
DATA 1,2,1,8,1,2,1,10,7,7,1,10,1,8,1,2,1,8,1,2,2,6,1,8,1,2,1,8,1,2
DATA 1,8,1,10,7,7,1,10,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,10
DATA 4,7
DATA 155,7,5,10,13,7,2,10,1,2,1,8,1,2,1,8,1,2,11,7,2,10,1,8,1,2,1,8,1,2,2,6
DATA 1,8,10,7,1,10,4,6,1,2,1,8,2,6,1,2,9,7,1,10,5,6,1,8,1,2,1,8,1,2
DATA 1,8,9,7,1,10,2,6,1,2,2,6,1,2,1,8,3,10,8,7,1,10,1,2,5,6,2,10,11,7
DATA 1,10,1,8,4,6,1,10,12,7,1,10,1,8,1,2,1,8,1,2,1,8,1,10,13,7,1,10,1,2
DATA 1,8,1,2,1,8,1,2,1,10,13,7,1,10,1,8,2,6,1,2,1,10,14,7,1,10,1,2,2,6
DATA 1,8,1,10,14,7,1,10,1,8,1,2,1,8,1,2,1,10,7,7
DATA 175,7,5,10,13,7,2,10,1,2,1,8,1,2,1,8,1,2,12,7,1,10,1,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,11,7,1,10,1,6,1,2,1,8,1,2,1,8,3,10,10,7,1,10,3,6,1,2,2,10
DATA 12,7,1,10,1,8,1,2,2,6,1,10,14,7,1,10,1,2,1,8,1,2,1,10,14,7,1,10,1,2
DATA 1,8,1,2,1,10,15,7,1,10,1,8,1,2,1,8,1,10,15,7,1,10,1,2,1,8,1,10,16,7
DATA 1,10,1,8,1,2,1,10,16,7,1,10,1,2,1,8,1,10,8,7
DATA 87,14,3,77,17,14,1,77,2,15,1,77,11,14,1,15,1,14,1,15,2,14,1,77,1,15,1,77,2,14,5,77
DATA 6,14,1,15,5,77,1,14,8,77,4,14,4,77,1,0,1,15,10,77,2,14,1,13,18,77,1,14,1,13
DATA 19,77,2,14,4,77,1,0,1,15,10,77,1,14,1,77,3,14,1,15,5,77,1,14,8,77,1,14,1,77
DATA 2,14,1,15,1,14,1,15,2,14,1,77,1,15,1,77,2,14,5,77,2,14,1,77,7,14,1,77,2,15
DATA 1,77,7,14,1,77,8,14,3,77,7,14,1,77,19,14,1,77,1,14,1,77,18,14,1,77,41,14
DATA 96,7,2,13,8,7,2,8,1,7,5,8,2,13,2,7,1,13,6,7,1,8,1,15,8,8,1,13,2,7,1,13
DATA 5,7,12,8,2,7,1,13,5,7,1,8,1,15,10,8,1,7,1,13,6,7,12,8,1,7,1,13,7,7
DATA 7,8,1,13,2,8,1,7,1,13,7,7,9,8,3,13,7,7,2,8,1,4,8,8,8,7,8,8,1,144
DATA 2,7,1,144,6,7,1,13,3,8,1,14,2,7,1,144,4,7,2,144,7,7,2,15,3,7,2,144,92,7
DATA 76,7,1,10,1,2,18,7,1,10,1,2,9,7,1,10,1,2,4,7,2,2,1,7,1,2,7,7,1,10,1,2
DATA 2,7,1,2,1,7,4,2,1,7,1,2,7,7,1,10,2,8,1,2,1,7,6,2,8,7,1,10,1,2
DATA 1,3,1,8,9,2,6,7,1,10,13,2,6,7,1,10,13,2,7,7,1,10,1,2,1,3,1,8,9,2
DATA 8,7,1,10,2,8,1,2,1,7,6,2,10,7,1,10,1,2,2,7,1,2,1,7,4,2,1,7,1,2
DATA 11,7,1,10,1,2,4,7,2,2,1,7,1,2,19,7,1,10,1,2,18,7,1,10,1,2,62,7

Paletteinfo:
DATA 0,14,3,    0,0,42,   0,42,0,   0,14,3,    42,0,0,   60,52,0
DATA 60,52,0,   42,42,42, 21,21,21, 21,21,63,  21,63,21, 21,63,63
DATA 63,21,21,  63,21,63, 0,0,0,  63,63,63

intro:
DATA 140, 30, 19, 169, 40, 169, 55, 140, 40, 125, 60, 135, 75, 155, 85, 165, 100, 160, 110
DATA 153, 120, 140, 129, 111, 119, 111, 105, 140, 119, 147, 110, 150, 100, 145, 95, 120, 80, 110, 60, 140, 30, 140, 31
DATA 195, 129, 9, 195, 30, 260, 95, 260, 30, 265, 28, 269, 30, 269, 129,204, 65, 204, 129, 195, 129, 197, 127
DATA 285, 129, 8, 305, 30, 334, 30, 355, 129, 345, 125, 325, 45, 315, 45, 295, 125, 285, 129, 320, 35
DATA 375, 129, 13, 380, 125, 380, 34, 375, 30, 390, 30, 390, 70, 435, 30, 445, 30, 397, 80, 445, 129, 435, 129, 390, 90, 390, 129, 375, 129, 380, 32
DATA 465, 129, 12, 465, 30, 539, 32, 539, 43, 480, 45, 480, 73, 510, 68, 510, 92, 480, 87, 480, 115, 539, 116, 539, 127, 465, 129, 466, 128

movie:
     '1    2    3     4     5     6    7    8     9     10     11    12   13
DATA 1, 1,                                                                       6375
DATA 1, 2,                                                                 6500, 6375
DATA 2, 3,                                                                 6500, 6375
DATA 1, 4,                                                      375, 6500, 6500, 6375
DATA 1, 5,                                                 875, 375, 6500, 6500, 6375
DATA 1, 6,                                           1375, 875, 375, 6500, 6500, 6375
DATA 1, 7,                                     1875, 1375, 875, 375, 6500, 6500, 6375
DATA 1, 8,                               1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 1, 9,                          875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 1, 10,                   2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 1, 11,             2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 1, 12,       3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 1, 13, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 2, 14, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 3, 15, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 4, 16, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 5, 17, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 6, 18, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6250
DATA 7, 19, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6250
DATA 8, 20, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6250
DATA 9, 21, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 3875, 250, 6500, 6500, 6250
DATA 10, 22, 6500, 3375, 2875, 2375, 875, 1375, 1875, 4375, 750, 250, 6500, 6500, 6250
DATA 11, 23, 6500, 3375, 2875, 2375, 875, 1375, 4875, 1250, 750, 250, 6500, 6500, 6250
DATA 12, 24, 6500, 3375, 2875, 2375, 875, 4375, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 13, 25, 6500, 3375, 2875, 2375, 3875, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 14, 26, 6500, 3375, 2875, 5375, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 15, 27, 6500, 3375, 5875, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 16, 28, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 17, 29, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 18, 30, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 19, 31, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 20, 32, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 21, 33, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 22, 34, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 23, 35, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 24, 36, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6125
DATA 25, 37, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6125
DATA 26, 38, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6125
DATA 27, 39, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 3750, 125, 6500, 6500, 6125
DATA 28, 40, 6500, 3250, 2750, 2250, 750, 1250, 1750, 4250, 625, 125, 6500, 6500, 6125
DATA 29, 41, 6500, 3250, 2750, 2250, 750, 1250, 4750, 1125, 625, 125, 6500, 6500, 6125
DATA 30, 42, 6500, 3250, 2750, 2250, 750, 4250, 1625, 1125, 625, 125, 6500, 6500, 6125
DATA 31, 43, 6500, 3250, 2750, 2250, 3750, 1125, 1625, 1125, 625, 125, 6500, 6500, 6125
DATA 32, 44, 6500, 3250, 2750, 5250, 625, 1125, 1625, 1125, 625, 125, 6500, 6500, 6125
DATA 33, 45, 6500, 3250, 5750, 2125, 625, 1125, 1625, 1125, 625, 125, 6500, 6500, 6000
DATA 34, 46, 6500, 3125, 2625, 2125, 625, 1125, 1625, 1125, 625, 125, 6500, 6500, 6000
DATA 35, 47, 6500, 3125, 2625, 2125, 625, 1125, 1625, 1125, 625, 125, 6500, 6500, 6000
DATA 36, 48, 6500, 3125, 2625, 2125, 625, 1125, 1625, 1125, 3625, 000, 6500, 6500, 6000
DATA 37, 49, 6500, 3125, 2625, 2125, 625, 1125, 1625, 4125, 500, 000, 6500, 6500, 6000
DATA 38, 50, 6500, 3125, 2625, 2125, 625, 1125, 4625, 1000, 500, 000, 6500, 6500, 6000
DATA 39, 51, 6500, 3125, 2625, 2125, 625, 4125, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 40, 52, 6500, 3125, 2625, 2125, 3625, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 41, 53, 6500, 3125, 2625, 5125, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 42, 54, 6500, 3125, 5625, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 43, 55, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 44, 56, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 45, 57, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 46, 58, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 47, 59, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 48, 60, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 49, 61, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 50, 62, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 51, 63, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 52, 64, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 53, 65, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 54, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 55, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500
DATA 56, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500
DATA 57, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000
DATA 58, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500
DATA 59, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000
DATA 60, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500
DATA 61, 66, 6500, 3000, 2500, 2000, 500, 1000
DATA 62, 66, 6500, 3000, 2500, 2000, 500
DATA 63, 66, 6500, 3000, 2500, 2000
DATA 64, 66, 6500, 3000, 2500
DATA 65, 66, 6500, 3000
DATA 66, 66, 6500
DATA -1, 0

lvl1:
DATA 0

lvl2:
DATA 15,8,18,17, 0

lvl3:
DATA 4, 4, 4, 21, 5, 5, 5, 20, 29, 4, 29, 21, 28, 5, 28, 20, 15, 8, 18, 17, 0

lvl4:
DATA 4, 4, 29, 4, 4, 21, 29, 21, 4, 5, 4, 11, 4, 14, 4, 21, 29, 5, 29, 11, 29, 14, 29, 21, 13, 12, 19, 13, 0

lvl5:
DATA 4, 4, 29, 4, 4, 21, 29, 21, 4, 5, 4, 11, 4, 14, 4, 21, 29, 5, 29, 11, 29, 14, 29, 21
DATA 10, 10, 23, 11, 10, 14, 23, 15, 0

lvl6:
DATA 4, 4, 5, 5, 8, 4, 9, 5, 12, 4, 13, 5, 16, 4, 17, 5, 20, 4, 21, 5, 24, 4, 25, 5, 28, 4, 29, 5
DATA 4, 20, 5, 21, 8, 20, 9, 21, 12, 20, 13, 21, 16, 20, 17, 21, 20, 20, 21, 21, 24, 20, 25, 21, 28, 20, 29, 21
DATA 4, 9, 15, 9, 18, 9, 29, 9, 4, 16, 15, 16, 18, 16, 29, 16,0

lvl8:
DATA 4, 4, 29, 4, 4, 21, 29, 21, 4, 5, 4, 11, 4, 14, 4, 21, 29, 5, 29, 11, 29, 14, 29, 21
DATA 10, 12, 23, 12, 10, 13, 23, 13
DATA 7, 7, 26, 7, 7, 18, 26, 18, 7, 8, 7, 11, 7, 14, 7, 17, 26, 8, 26, 11, 26, 14, 26, 17, 0

lvl7:
DATA 2, 11, 2, 11, 2, 14, 2, 14, 31, 11, 31, 11, 31, 14, 31, 14, 15, 2, 15, 2, 18, 2, 18, 2
DATA 18, 6, 19, 6, 20, 7, 21, 7, 22, 8, 23, 8, 24, 9, 24, 9, 25, 10, 25, 10, 26, 11, 26, 11
DATA 18, 19, 19, 19, 20, 18, 21, 18, 22, 17, 23, 17, 24, 16, 24, 16, 25, 15, 25, 15, 26, 14, 26, 14
DATA 14, 6, 15, 6, 12, 7, 13, 7, 10, 8, 11, 8,  9, 9,  9, 9,  8, 10,  8, 10,  7, 11,  7, 11
DATA 14, 19, 15, 19, 12, 18, 13, 18, 10, 17, 11, 17, 9, 16, 9, 16, 8, 15, 8, 15, 7, 14, 7, 14
DATA 2, 2, 3, 2, 2, 3, 2, 3,  30, 2, 31, 2, 31, 3, 31, 3,   31, 22, 31, 23, 30, 23, 30, 23,  2, 23, 3, 23, 2, 22, 2, 22
DATA 0

lvl9:
DATA 2, 2, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13
DATA 31, 2, 29, 4, 29, 4, 28, 5, 28, 5, 27, 6, 27, 6, 26, 7, 26, 7, 25, 8, 25, 8, 24, 9, 24, 9, 23, 10, 23, 10, 22, 11, 22, 11, 21, 12, 21, 12, 20, 13
DATA 14, 14, 14, 14, 19, 14, 19, 14
DATA 13, 14, 15, 16, 12, 16, 13, 17, 11, 17, 12, 18, 10, 18, 11, 19, 9, 19, 10, 20, 8, 20, 9, 21
DATA 20, 14, 18, 16, 21, 16, 20, 17, 22, 17, 21, 18, 23, 18, 22, 19, 24, 19, 23, 20, 25, 20, 24, 21
DATA 16, 4, 17, 9
DATA 0

lvls:
DATA 6000, 5400, 4800, 4200, 3600, 3000, 2400, 1800, 1200, 0

FUNCTION ask$ (text$, x, y, max, mode)
COLOR 15
LOCATE y, x: PRINT text$
startx = x + LEN(text$): x = (x + LEN(text$)) * 8
txtlen = 0
LINE (x, (y - 1) * 2 + y * 14 - 14)-(x, (y - 1) * 2 + y * 14), 7
txt$ = ""
DO
  DO: LOOP UNTIL INKEY$ = ""
  DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
  COLOR 5
  SELECT CASE a$
  CASE CHR$(13): IF txt$ <> "" THEN EXIT DO
  CASE CHR$(27)
    ask$ = "exit": EXIT FUNCTION
  CASE CHR$(0) + "P": ask$ = "down": EXIT FUNCTION
  CASE CHR$(0) + "H": ask$ = "up": EXIT FUNCTION
  CASE CHR$(8)
    IF txtlen > 0 THEN
      LOCATE y, startx + txtlen: PRINT SPACE$(max - txtlen + 2)
      txtlen = txtlen - 1: IF txtlen = 0 THEN txt$ = "" ELSE txt$ = MID$(txt$, 1, txtlen)
      COLOR 5
      IF mode = 1 THEN LOCATE y, startx + 1: PRINT txt$ ELSE LOCATE y, startx + 1: PRINT STRING$(txtlen, "*")
      LINE (x + (txtlen * 8), (y - 1) * 2 + y * 14 - 14)-(x + (txtlen * 8), (y - 1) * 2 + y * 14), 7
    END IF
  CASE ELSE
    IF mode = 2 THEN minimum = 33: maximum = 126 ELSE minimum = 65: maximum = 90
    IF ASC(UCASE$(a$)) >= minimum AND ASC(UCASE$(a$)) <= maximum AND txtlen <= max THEN
      txtlen = txtlen + 1
      IF txtlen <= max THEN
        IF mode = 1 THEN LOCATE y, startx + txtlen: PRINT UCASE$(a$) ELSE LOCATE y, startx + txtlen: PRINT "*"
        txt$ = txt$ + UCASE$(a$)
        LINE (x + txtlen * 8, (y - 1) * 2 + y * 14 - 14)-(x + txtlen * 8, (y - 1) * 2 + y * 14), 7
      ELSE
        txtlen = max
      END IF
    END IF
  END SELECT
LOOP
ask$ = txt$
END FUNCTION

SUB center (text$, y)
' analize text length, so it knows what x coordanite to start printing:
textlen = LEN(text$)
FOR i = 1 TO LEN(text$)
  a$ = MID$(text$, i, 1)
  IF a$ = "-" THEN
    IF MID$(text$, i + 1, 1) = "0" THEN IF MID$(text$, i + 2, 1) = "-" THEN textlen = textlen - 3: i = i + 2: GOSUB done
    IF VAL(MID$(text$, i + 1, 3)) > 0 AND MID$(text$, i + 4, 1) = "-" THEN textlen = textlen - 5: i = i + 4: GOSUB done
    IF VAL(MID$(text$, i + 1, 2)) > 0 AND MID$(text$, i + 3, 1) = "-" THEN textlen = textlen - 4: i = i + 3: GOSUB done
    IF VAL(MID$(text$, i + 1, 1)) > 0 AND MID$(text$, i + 2, 1) = "-" THEN textlen = textlen - 3: i = i + 2

done:
  END IF
NEXT i
startx = 41 - INT(textlen / 2)
COLOR 15
FOR i = 1 TO LEN(text$)
  mark = 0
  a$ = MID$(text$, i, 1)
  IF a$ = "-" THEN
    IF MID$(text$, i + 1, 1) = "0" THEN IF MID$(text$, i + 2, 1) = "-" THEN COLOR 0: i = i + 2: mark = 1: GOSUB done2
    IF VAL(MID$(text$, i + 1, 1)) > 0 AND MID$(text$, i + 2, 1) = "-" THEN COLOR VAL(MID$(text$, i + 1, 1)): i = i + 2: mark = 1: GOSUB done2
    IF VAL(MID$(text$, i + 1, 2)) > 0 AND MID$(text$, i + 3, 1) = "-" THEN COLOR VAL(MID$(text$, i + 1, 2)): i = i + 3: mark = 1: GOSUB done2
    IF VAL(MID$(text$, i + 1, 3)) > 0 AND MID$(text$, i + 4, 1) = "-" THEN COLOR VAL(MID$(text$, i + 1, 3)): i = i + 4: mark = 1
  END IF

done2:
  IF mark = 0 THEN LOCATE y, startx: PRINT a$: startx = startx + 1
NEXT
END SUB

SUB changeapp (i)
SELECT CASE i
CASE 1
  SELECT CASE user.bg
  CASE 1:  PALETTE 0, 3 + 256 * 14 + 0 * 65536: PALETTE 3, 3 + 256 * 14 + 0 * 65536
  CASE 2:  PALETTE 0, 3 + 256 * 0 + 14 * 65536: PALETTE 3, 3 + 256 * 0 + 14 * 65536
  CASE 3:  PALETTE 0, 14 + 256 * 3 + 0 * 65536: PALETTE 3, 14 + 256 * 3 + 0 * 65536
  CASE 4:  PALETTE 0, 10 + 256 * 10 + 10 * 65536: PALETTE 3, 10 + 256 * 10 + 10 * 65536
  CASE 5:  PALETTE 0, 20 + 256 * 10 + 0 * 65536: PALETTE 3, 20 + 256 * 10 + 0 * 65536
  END SELECT
CASE 2
  SELECT CASE user.snakec
  CASE 1:  PALETTE 2, 0 + 256 * 42 + 0 * 65536
  CASE 2: PALETTE 2, 55 + 256 * 55 + 0 * 65536
  CASE 3: PALETTE 2, 49 + 256 * 38 + 13 * 65536
  CASE 4: PALETTE 2, 0 + 256 * 0 + 0 * 65536
  CASE 5: PALETTE 2, 55 + 256 * 55 + 55 * 65536
  END SELECT
CASE 3
  SELECT CASE user.spattern
  CASE 1: PALETTE 6, 60 + 256 * 52 + 0 * 65536
  CASE 2: PALETTE 6, 7 + 256 * 30 + 7 * 65536
  CASE 3: PALETTE 6, 7 + 256 * 7 + 30 * 65536
  CASE 4:  PALETTE 6, 5 + 256 * 5 + 5 * 65536
  CASE 5: PALETTE 6, 30 + 256 * 7 + 7 * 65536
  END SELECT
END SELECT
END SUB

SUB clearground (mx, my)
FOR i = 2 TO snakelength
  GET #2, i, snake(1)
  ground(snake(1).col, snake(1).row) = 1
NEXT i
FOR i = 2 TO snakelength + 1
  reps = 0
  DO
    reps = reps + 1
    IF i = snakelength + 1 THEN x = mx: y = my: EXIT DO
    z = INT(RND * (snakelength - 1)) + 2
    GET #2, z, snake(1)
  LOOP UNTIL ground(snake(1).col, snake(1).row) = 1 OR reps = 50000
  reps = 0
  IF i <= snakelength THEN x = snake(1).col: y = snake(1).row
  ground(x, y) = 0
  FOR ii = 0 TO 19 STEP 1
    LINE ((x - 1) * 20, (y - 1) * 20)-((x - 1) * 20 + ii, (y - 1) * 20 + ii), INT(RND * 15) + 1, B
    FOR xxxx = 1 TO 1000: NEXT xxxx
  NEXT ii
  LINE ((x - 1) * 20, (y - 1) * 20)-(x * 20 - 1, y * 20 - 1), 3, BF
NEXT i
FOR y = 2 TO 23
  FOR x = 2 TO 31
    IF ground(x, y) <> 0 THEN LINE ((x - 1) * 20, (y - 1) * 20)-((x - 1) * 20 + 19, (y - 1) * 20 + 19), 3, BF
  NEXT
NEXT
END SUB

SUB defscreen
CLS
PAINT (0, 0), 3
FOR col = 1 TO 32
  PUTimage col, 1, block
  PUTimage col, 24, block
NEXT col
FOR row = 2 TO 23
  PUTimage 32, row, block
  PUTimage 1, row, block
NEXT row
COLOR 4
LOCATE 3, 5: PRINT "Lives:"
LOCATE 3, 64: PRINT "Score:"
LOCATE 3, 36: PRINT "S N A K E"
LINE (27, 2)-(88, 17), 15, BF
LINE (276, 2)-(354, 17), 15, BF
LINE (500, 2)-(592, 17), 15, BF
FOR y = 30 TO 50
  FOR x = 25 TO 560
    IF POINT(x, y) = 4 THEN PSET (x, y - 29), 4: PSET (x + 1, y - 28), 7
  NEXT
NEXT
LINE (25, 30)-(560, 50), 3, BF
PUT (80, 4), numSET(lives * 40), PSET
PUT (552, 4), numSET(0), PSET
PUT (560, 4), numSET(0), PSET
PUT (568, 4), numSET(0), PSET
PUT (576, 4), numSET(0), PSET
PUT (584, 4), numSET(0), PSET
LOCATE 28, 62: PRINT "by Peter Varnai"
LOCATE 28, 33: PRINT "Prey caugth:"
LINE (254, 462)-(385, 477), 15, BF
FOR y = 426 TO 455
  FOR x = 254 TO 639
    IF POINT(x, y) = 4 THEN PSET (x, y + 30), 4: PSET (x + 1, y + 31), 7
  NEXT
NEXT
showinfo 3, prey
LINE (254, 428)-(619, 455), 3, BF
END SUB

SUB highscores (index)
logo
' index = 1 --> show the highscores
' index = 2 --> write to AND show the highscores
OPEN "snake.top" FOR RANDOM AS #1 LEN = LEN(top(1))
FOR topers = 1 TO 10
  GET #1, topers, top(topers)
NEXT
CLOSE #1
IF index = 1 THEN GOTO 2
user.avscore = ((user.avscore * user.gplayed) + score) / (user.gplayed + 1)
testlevel
user.gplayed = user.gplayed + 1
IF users > 0 THEN
  OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(user)
  PUT #1, usernumber, user
  CLOSE #1
END IF
FOR i = 1 TO 10
  IF score >= top(i).score THEN
    mark = i
    FOR ii = 9 TO i STEP -1
      top(ii + 1).score = top(ii).score
      top(ii + 1).playdate = top(ii).playdate
      top(ii + 1).nickname = top(ii).nickname
    NEXT ii
    COLOR 9: center eng$(1 + lang%), 11
    COLOR 15: center eng$(2 + lang%), 13

inputname:
    IF usernumber < 5 THEN
      DO: LOOP UNTIL INKEY$ = ""
      COLOR 15
      pname$ = ask$("Enter name:", 32, 16, 20, 1)
      IF pname$ = "exit" OR pname$ = "up" OR pname$ = "down" OR pname$ = "" THEN GOSUB inputname
      LINE ((43 + LEN(pname$)) * 8, 240)-((43 + LEN(pname$)) * 8, 254), 3
      pname$ = UCASE$(MID$(pname$, 1, 1)) + LCASE$(MID$(pname$, 2, LEN(pname$) - 1))
    ELSE
      pname$ = UCASE$(MID$(user.nickname, 1, 1)) + LCASE$(MID$(user.nickname, 2, LEN(user.nickname) - 1))
    END IF
    top(i).nickname = pname$
    top(i).playdate = DATE$
    top(i).score = score
    OPEN "snake.top" FOR RANDOM AS #1 LEN = LEN(top(1))
    FOR iii = 1 TO 10
      PUT #1, iii, top(iii)
    NEXT iii
    CLOSE #1
    GOTO 2
  END IF
NEXT i
COLOR 9
center eng$(4 + lang%), 11
COLOR 15
center eng$(5 + lang%), 13
mark = 1
center eng$(6 + lang%), 16
center eng$(9 + lang%), 18
center eng$(11 + lang%), 20
DO
  DO: LOOP UNTIL INKEY$ = ""
  DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
  SOUND 150, 1
  SELECT CASE a$
  CASE CHR$(0) + "P": mark = mark + 1
  CASE CHR$(0) + "H": mark = mark - 1
  CASE CHR$(13): EXIT DO
  CASE CHR$(32): EXIT DO
  END SELECT
  IF mark > 3 THEN mark = 1
  IF mark < 1 THEN mark = 3
  SELECT CASE mark
  CASE 1
    center eng$(6 + lang%), 16
    center eng$(9 + lang%), 18
    center eng$(11 + lang%), 20
  CASE 2
    center eng$(7 + lang%), 16
    center eng$(8 + lang%), 18
    center eng$(11 + lang%), 20
  CASE 3
    center eng$(7 + lang%), 16
    center eng$(9 + lang%), 18
    center eng$(10 + lang%), 20
  END SELECT
  t# = TIMER + .05: DO: LOOP UNTIL TIMER >= t#
LOOP
IF mark = 1 THEN highscores 1: EXIT SUB
IF mark = 2 THEN EXIT SUB
IF mark = 3 THEN CLOSE #2: KILL "snake.tem": SYSTEM

2:
LINE (100, 140)-(540, 470), 3, BF
center eng$(12 + lang%), 12
FOR topers = 1 TO 10
  IF topers = mark THEN COLOR 9 ELSE COLOR 15
  LOCATE topers + 12, 21
  PRINT top(topers).nickname; " "; top(topers).playdate; " "; top(topers).score
NEXT
FOR y = 175 TO 351 STEP 16
  LINE (158, y)-(482, y), 2
NEXT
LINE (157, 174)-(483, 352), 2, B
LINE (158, 176)-(158, 350), 2: LINE (482, 176)-(482, 350), 2
LINE (319, 176)-(319, 350), 2: LINE (320, 176)-(320, 350), 2
LINE (412, 176)-(412, 350), 2: LINE (413, 176)-(413, 350), 2
center eng$(8 + lang%), 25
DO: a$ = INKEY$: LOOP UNTIL a$ = CHR$(13) OR a$ = CHR$(32) OR a$ = CHR$(27)
SOUND 150, 1
END SUB

SUB initialize
CLOSE #2
OPEN "snake.tem" FOR RANDOM AS #2 LEN = LEN(snake(1))
ERASE ground
FOR col = 1 TO 32
  ground(col, 1) = -2
  ground(col, 24) = -2
NEXT col
FOR row = 2 TO 23
  ground(1, row) = -2
  ground(32, row) = -2
NEXT row
FOR y = 2 TO 23
  FOR x = 2 TO 31
    ground(x, y) = 0
  NEXT
NEXT
oldlength = 16
snakelength = 16
x = 24
FOR i = 1 TO snakelength
  x = x - 1
  snake(1).col = x
  snake(1).row = 23
  snake(1).TURN = 0
  snake(1).dir = east
  SELECT CASE i
  CASE 1: snake(1).bodypart = head
  CASE 2: snake(1).bodypart = neck
  CASE 3: snake(1).bodypart = shoulder
  CASE 4: snake(1).bodypart = body
  CASE 5: snake(1).bodypart = body
  CASE 6: snake(1).bodypart = body
  CASE 7: snake(1).bodypart = body
  CASE 8: snake(1).bodypart = body
  CASE 9: snake(1).bodypart = body
  CASE 10: snake(1).bodypart = body
  CASE 11: snake(1).bodypart = shoulder
  CASE 12: snake(1).bodypart = neck
  CASE 13: snake(1).bodypart = tail
  CASE 14: snake(1).bodypart = tailend
  CASE 15: snake(1).bodypart = rattle
  CASE 16
    snake(1).bodypart = blank
  END SELECT
  ground(x, 23) = -1
  PUTimage x, 23, snake(1).bodypart + snake(1).dir
  PUT #2, i, snake(1)
NEXT i
ground(x, 23) = 0
END SUB

SUB login
LINE (0, 130)-(639, 479), 3, BF
center "-5-Login as a user", 11
center "Login as guest", 13
center "Return", 15
mark = 1
DO
  DO: LOOP UNTIL INKEY$ = ""
  DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
  SOUND 150, 1

18:
  SELECT CASE a$
  CASE CHR$(13): EXIT DO
  CASE CHR$(32): EXIT DO
  CASE CHR$(8): LINE (0, 130)-(639, 479), 3, BF: EXIT SUB
  CASE CHR$(27): LINE (0, 130)-(639, 479), 3, BF: EXIT SUB
  CASE CHR$(0) + "P": mark = mark + 1
  CASE CHR$(0) + "H": mark = mark - 1
  END SELECT
  IF mark > 3 THEN mark = 1
  IF mark < 1 THEN mark = 3
  SELECT CASE mark
  CASE 1
    center "-5-Login as a user", 11
    center "Login as guest", 13
    center "Return", 15
  CASE 2
    center "Login as a user", 11
    center "-5-Login as guest", 13
    center "Return", 15
  CASE 3
    center "Login as a user", 11
    center "Login as guest", 13
    center "-5-Return", 15
  END SELECT
LOOP
IF mark = 3 THEN EXIT SUB
IF mark = 2 THEN
  usernumber = 2
  OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(user)
  GET #1, 4, user
  CLOSE #1
  changeapp 1: changeapp 2: changeapp 3
  OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(usernumber)
  PUT #1, 2, usernumber
  CLOSE #1
  LINE (0, 130)-(639, 479), 3, BF
  center SPACE$(35), 1
  center "Welcome, " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)) + "!", 1
  EXIT SUB
END IF
pname$ = ask$("User name:", 30, 24, 20, 1)
LINE ((40 + LEN(pname$)) * 8, 368)-((40 + LEN(pname$)) * 8, 382), 3
SELECT CASE pname$
CASE "exit": center SPACE$(35), 24: a$ = "": GOTO 18
CASE "down": a$ = CHR$(0) + "P": center SPACE$(35), 24: GOTO 18
CASE "up": a$ = CHR$(0) + "H": center SPACE$(35), 24: GOTO 18
CASE ELSE
  GOTO 10
END SELECT

10:
pass$ = ask$("Password:", 31, 25, 8, 2)
center SPACE$(35), 25
center SPACE$(35), 24
SELECT CASE pass$
CASE "exit": a$ = "": GOTO 18
CASE "down": a$ = CHR$(0) + "P": GOTO 18
CASE "up": a$ = CHR$(0) + "H": GOTO 18
CASE ELSE
  OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(user)
  FOR i = 5 TO 4 + users
    GET #1, i, user
    IF RTRIM$(user.nickname) = pname$ AND RTRIM$(user.password) = pass$ THEN
      CLOSE #1
      usernumber = i
      OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(usernumber)
      PUT #1, 2, usernumber
      CLOSE #1
      changeapp 1: changeapp 2: changeapp 3
      LINE (0, 130)-(639, 479), 3, BF
      center SPACE$(35), 1
      center "Welcome, " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)) + "!", 1
      EXIT SUB
    END IF
  NEXT
END SELECT
GET #1, usernumber, user
center "                        ", 24
center "                        ", 25
center "-4-Incorrect user name or password", 25
t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#
center "                                  ", 25
CLOSE #1
a$ = "": GOTO 18
END SUB

SUB logo
' S N A K E logo
RESTORE intro
PALETTE 1, 45
LINE (0, 0)-(639, 479), 3, BF
FOR i = 1 TO 5
  READ startx: READ starty
  READ counter
  FOR n = 1 TO counter
    READ x: READ y
    LINE (startx, starty)-(x, y), 1
    startx = x: starty = y
  NEXT
  READ px, py: PAINT (px, py), 1, 1
NEXT
LINE (300, 70)-(340, 85), 1, BF
END SUB

SUB mainmenu (mark)

4:
CLS
logo
IF mark = 1 THEN
  x = 0
  DO
    x = x + 1
    g = 0: r = 45
    FOR c = 1 TO 15
      PALETTE 1, (r - c * 3) + (g + c * 3) * 256
      t# = TIMER + .05: WHILE t# > TIMER: WEND
    NEXT
    FOR c = 15 TO 1 STEP -1
      PALETTE 1, (r - c * 3) + (g + c * 3) * 256
      t# = TIMER + .05: WHILE t# > TIMER: WEND
    NEXT
  LOOP UNTIL x = 1
END IF
PALETTE 1, 45
OUT &HC8, 0
OUT &HC9, 3
OUT &HC9, 14
OUT &HC9, 0
IF mark = 1 THEN
  ' Small movie
  RESTORE movie
  OPEN "movie.dat" FOR RANDOM AS #1 LEN = LEN(film)
  DO
    READ startf: READ endf
    IF startf = -1 THEN EXIT DO
    FOR i = startf TO endf
      READ index
      GET #1, i, film
      IF index = 6500 THEN index = 6625
      tempx = film.x: tempy = film.y
      PUTimage tempx, tempy, index
    NEXT
    FOR rep = 1 TO 2
      WAIT &H3DA, 8
      WAIT &H3DA, 8, 8
    NEXT
  LOOP
  CLOSE #1
END IF
IF champdone = 1 THEN center "Welcome, " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)) + "!", 1
level = 0: champ = 0
mark = 1
center "-5-" + eng$(13 + lang%), 12
center eng$(14 + lang%), 14
center eng$(46 + lang%), 16
center eng$(15 + lang%), 18
center eng$(16 + lang%), 20
center eng$(17 + lang%), 22
IF champdone = 1 THEN center eng$(64 + lang%), 24
center eng$(18 + lang%), 27
COLOR 15
DO
  DO: LOOP UNTIL INKEY$ = ""
  DO: a$ = INKEY$: LOOP UNTIL a$ <> ""

6:
  SOUND 150, 1
  SELECT CASE a$
  CASE CHR$(0) + "P": mark = mark + 1: IF champdone <> 1 AND mark = 7 THEN mark = 8
  CASE CHR$(0) + "H": mark = mark - 1: IF champdone <> 1 AND mark = 7 THEN mark = 6
  CASE CHR$(13): EXIT DO
  CASE CHR$(32): EXIT DO
  CASE CHR$(27): CLOSE #2: KILL "snake.tem": SYSTEM
  END SELECT
  IF mark > 8 THEN mark = 1
  IF mark < 1 THEN mark = 8
  IF champdone <> 1 AND mark = 7 THEN mark = 8
  SELECT CASE mark
  CASE 1
    center "-5-" + eng$(13 + lang%), 12
    center eng$(14 + lang%), 14
    center eng$(18 + lang%), 27
  CASE 2
    center eng$(13 + lang%), 12
    center "-5-" + eng$(14 + lang%), 14
    center eng$(46 + lang%), 16
  CASE 3
    center eng$(14 + lang%), 14
    center eng$(45 + lang%), 16
    center eng$(15 + lang%), 18
  CASE 4
    center eng$(46 + lang%), 16
    center "-5-" + eng$(15 + lang%), 18
    center eng$(16 + lang%), 20
  CASE 5
    center eng$(15 + lang%), 18
    center "-5-" + eng$(16 + lang%), 20
    center eng$(17 + lang%), 22
  CASE 6
    center eng$(16 + lang%), 20
    center "-5-" + eng$(17 + lang%), 22
    IF champdone = 1 THEN center eng$(64 + lang%), 24 ELSE center eng$(18 + lang%), 27
  CASE 7
    center "-5-" + eng$(64 + lang%), 24
    center eng$(17 + lang%), 22
    center eng$(18 + lang%), 27
  CASE 8
    center eng$(13 + lang%), 12
    IF champdone = 1 THEN center eng$(64 + lang%), 24 ELSE center eng$(17 + lang%), 22
    center "-5-" + eng$(18 + lang%), 27
  END SELECT
  t# = TIMER + .05: DO: LOOP UNTIL TIMER >= t#
LOOP
score = 0
prey = 0
IF mark = 1 THEN score = 0: oldscore = 0: champ = 0: lives = 1: defscreen: speedlevel = 0: SPEEDset: playSNAKE: EXIT SUB
IF mark = 2 THEN champ = 1: prey = 10: showinfo 3, prey: level = 1: score = 0: oldscore = 0: lives = 5: defscreen: speedlevel = 0: SPEEDset: playSNAKE: EXIT SUB
IF mark = 3 THEN GOSUB pass
IF mark = 4 THEN highscores 1
IF mark = 5 THEN options
IF mark = 7 THEN
  login
  LINE (0, 130)-(639, 479), 3, BF
  center eng$(13 + lang%), 12
  center eng$(14 + lang%), 14
  center eng$(46 + lang%), 16
  center eng$(15 + lang%), 18
  center eng$(16 + lang%), 20
  center eng$(17 + lang%), 22
  center "-5-" + eng$(64 + lang%), 24
  center eng$(18 + lang%), 27
  a$ = "": GOTO 6
END IF
IF mark = 8 THEN CLOSE #2: KILL "snake.tem": SYSTEM
EXIT SUB

pass:
center "                       ", 16
DO
  LOCATE 16, 38: PRINT "      "
  pass$ = ask$("", 38, 16, 5, 2)
  SELECT CASE pass$
  CASE "down": center eng$(46 + lang%), 16: a$ = CHR$(0) + "P": GOTO 6
  CASE "up": center eng$(46 + lang%), 16: a$ = CHR$(0) + "H": GOTO 6
  CASE "exit": a$ = "": GOTO 6
  CASE ELSE: EXIT DO
  END SELECT
LOOP
FOR i = 1 TO 10
  IF pass$ = portp$(top(i).id) THEN
    champ = 1: prey = 10: showinfo 3, prey: level = i: lives = 5: score = 0: oldscore = 0: defscreen: SPEEDset: playSNAKE: EXIT SUB
  END IF
NEXT
SOUND 60, 10
LOCATE 16, 39: COLOR 4: PRINT "-----": t# = TIMER + 2: DO: LOOP UNTIL TIMER >= t#
a$ = ""
GOTO 6
END SUB

SUB options
LINE (0, 130)-(639, 479), 3, BF
center eng$(48 + lang%), 11
center "-5-" + eng$(49 + lang%), 15
IF champdone = 1 THEN
  center eng$(50 + lang%), 18
  center eng$(52 + lang%), 21
END IF
center eng$(9 + lang%), 28
mark = 1
DO
  DO: LOOP UNTIL INKEY$ = ""
  a$ = ""
  DO: a$ = INKEY$: LOOP UNTIL a$ <> ""

16:
  SOUND 150, 1
  SELECT CASE a$
  CASE CHR$(0) + "P": mark = mark + 1: IF champdone <> 1 THEN mark = mark + 2
  CASE CHR$(0) + "H": mark = mark - 1: IF champdone <> 1 THEN mark = mark - 2
  CASE CHR$(32): EXIT DO
  CASE CHR$(13): EXIT DO
  CASE CHR$(27): LINE (0, 130)-(639, 479), 3, BF: EXIT SUB
  END SELECT
  IF mark > 4 THEN mark = 1
  IF mark < 1 THEN mark = 4
  SELECT CASE mark
  CASE 1
    center "-5-" + eng$(49 + lang%), 15
    IF champdone = 1 THEN center eng$(50 + lang%), 18
    center eng$(9 + lang%), 28
  CASE 2
    center "-5-" + eng$(50 + lang%), 18
    center eng$(49 + lang%), 15
    center eng$(52 + lang%), 21
  CASE 3
    center "-5-" + eng$(52 + lang%), 21
    center eng$(50 + lang%), 18
    center eng$(9 + lang%), 28
  CASE 4
    center "-5-" + eng$(9 + lang%), 28
    center eng$(49 + lang%), 15
    IF champdone = 1 THEN center eng$(52 + lang%), 21
  END SELECT
  t# = TIMER + .05: DO: LOOP UNTIL TIMER >= t#
LOOP
settings mark
IF mark = 4 THEN LINE (0, 130)-(639, 479), 3, BF: EXIT SUB
a$ = ""
center eng$(48 + lang%), 11
IF mark = 1 THEN c$ = "-5-" ELSE c$ = ""
center c$ + eng$(49 + lang%), 15
IF champdone = 1 THEN
  IF mark = 2 THEN c$ = "-5-" ELSE c$ = ""
  center c$ + eng$(50 + lang%), 18
  IF mark = 3 THEN c$ = "-5-" ELSE c$ = ""
  center c$ + eng$(52 + lang%), 21
END IF
IF mark = 4 THEN c$ = "-5-" ELSE c$ = ""
center c$ + eng$(9 + lang%), 28
GOTO 16
END SUB

SUB playSNAKE
flag = 1

3:
showinfo 3, prey
death$ = ""

1:
ERASE background
rats = 0
IF death$ <> "" THEN
  IF lives = 0 THEN score = score + INT((score / 30)) * user.rats: showinfo 2, score
  IF lives = 0 THEN dy = 16 ELSE dy = 15
  GET (199, 89)-(441, 308), background
  LINE (199, 89)-(441, 308), 3, BF
  LINE (199, 89)-(441, 308), 7, B
  LINE (201, 91)-(439, 306), 7, B
  COLOR 15: center death$, 9
  IF lives = 0 THEN center eng$(19 + lang%), 11: center eng$(20 + lang%), 13
  IF lives > 0 THEN center eng$(21 + lang%), 13
  center eng$(9 + lang%), dy
  IF lives = 0 THEN center eng$(8 + lang%), dy
  mark = 1
  DO
    DO: LOOP UNTIL INKEY$ = ""
    DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
    SELECT CASE a$
    CASE CHR$(0) + "P": mark = mark + 1
    CASE CHR$(0) + "H": mark = mark - 1
    CASE CHR$(13): EXIT DO
    CASE CHR$(32): EXIT DO
    CASE CHR$(27): CLOSE #2: KILL "snake.tem": SYSTEM
    END SELECT
    IF mark > 2 THEN mark = 1
    IF mark < 1 THEN mark = 2
    IF lives = 0 AND mark <> 2 THEN mark = 2
    SELECT CASE mark
    CASE 1
      center eng$(21 + lang%), 13
      center eng$(9 + lang%), dy
    CASE 2
      IF lives > 0 THEN center eng$(22 + lang%), 13
      center eng$(8 + lang%), dy
    END SELECT
    t# = TIMER + .05: DO: LOOP UNTIL TIMER >= t#
  LOOP
  PUT (199, 89), background, PSET
  clearground mcol, mrow
  IF lives = 0 THEN highscores 2: EXIT SUB
  IF mark = 2 THEN EXIT SUB
END IF
death$ = ""
initialize
IF champ = 1 THEN score = oldscore: showinfo 2, score
IF champ = 1 THEN IF setuplevel = 2 THEN EXIT SUB
realspeed = SPEED!
IF champ = 0 THEN
  FOR i = 3 TO 1 STEP -1
    center eng$(23 + lang%) + STR$(i) + "...", 13
    t# = TIMER + 1: DO: LOOP UNTIL TIMER >= t#
  NEXT
  center "                    ", 13
END IF
GOSUB PUTmouse
col = 23: row = 23
colchange = 1: rowchange = 0
direction = east: oldd = east
plusl = 0
DO: LOOP UNTIL INKEY$ = ""
FOR r = 1 TO 10
  GOSUB rattle
NEXT r
DO

startplay:
  a$ = INKEY$
  SELECT CASE a$
  CASE CHR$(0) + "M"
    IF colchange <> -1 THEN colchange = 1: rowchange = 0: direction = east
  CASE CHR$(0) + "P"
    IF rowchange <> -1 THEN rowchange = 1: colchange = 0: direction = south
  CASE CHR$(0) + "K"
    IF colchange <> 1 THEN colchange = -1: rowchange = 0: direction = west
  CASE CHR$(0) + "H"
    IF rowchange <> 1 THEN rowchange = -1: colchange = 0: direction = north
  CASE CHR$(32)
    GOSUB pausemenu
  CASE CHR$(27)
    GOSUB pausemenu
  CASE CHR$(13)
    GOSUB pausemenu
  CASE "p"
    GOSUB pausemenu
  END SELECT
  IF champ = 1 THEN
    IF prey = 0 THEN oldscore = score: showinfo 2, score:   level = level + 1: clearground mcol, mrow: prey = 10: GOTO 3
  END IF
  IF ground(col + colchange, row + rowchange) < 0 THEN
    t# = TIMER + .1
    DO
      a$ = INKEY$
      SELECT CASE a$
      CASE CHR$(0) + "M"
        IF colchange <> -1 THEN colchange = 1: rowchange = 0: direction = east: EXIT DO
      CASE CHR$(0) + "P"
        IF rowchange <> -1 THEN rowchange = 1: colchange = 0: direction = south: EXIT DO
      CASE CHR$(0) + "K"
        IF colchange <> 1 THEN colchange = -1: rowchange = 0: direction = west: EXIT DO
      CASE CHR$(0) + "H"
        IF rowchange <> 1 THEN rowchange = -1: colchange = 0: direction = north: EXIT DO
      END SELECT
    LOOP UNTIL TIMER > t#
  END IF
  row = row + rowchange: col = col + colchange
  IF rats < user.rats THEN IF INT(RND * 100) = 2 THEN GOSUB PUTrat
  ' lengthen
  IF snakelength < 130 THEN
    IF plusl THEN
      snakelength = snakelength + 1
      IF snakelength = oldlength + 15 THEN realspeed = realspeed - INT(5000! / ((cpu / 10!) / (1.59 / 10!))): oldlength = snakelength
      FOR i = snakelength TO snakelength - 7 STEP -1
        GET #2, i, snake(1)
        GET #2, i - 1, snake(2)
        snake(1).bodypart = snake(2).bodypart
        PUT #2, i, snake(1)
      NEXT
      plusl = plusl - 1
    END IF
  ELSE
  END IF
  FOR i = snakelength TO 2 STEP -1
    GET #2, i, snake(1)
    GET #2, i - 1, snake(2)
    snake(1).row = snake(2).row
    snake(1).col = snake(2).col
    snake(1).TURN = snake(2).TURN
    snake(1).dir = snake(2).dir
    snake(1).rdir = snake(2).rdir
    PUT #2, i, snake(1)
  NEXT i
  GET #2, snakelength, snake(1)
  GET #2, snakelength - 1, snake(2)
  snake(1).TURN = 0
  snake(2).TURN = 0
  PUT #2, snakelength, snake(1)
  PUT #2, snakelength - 1, snake(2)
  GET #2, snakelength - 2, snake(1)
  IF snake(1).TURN = 0 THEN
    snake(2).dir = snake(1).dir
  ELSE
    snake(2).dir = snake(1).rdir
  END IF
  PUT #2, snakelength - 1, snake(2)
  IF direction <> oldd THEN
    GET #2, 2, snake(1)
    snake(1).TURN = TURN
    SELECT CASE oldd
    CASE north
      IF direction = east THEN snake(1).dir = NE
      IF direction = west THEN snake(1).dir = NW
      snake(1).rdir = north
    CASE east
      IF direction = north THEN snake(1).dir = EN
      IF direction = south THEN snake(1).dir = ES
      snake(1).rdir = east
    CASE south
      IF direction = east THEN snake(1).dir = SE
      IF direction = west THEN snake(1).dir = SW
      snake(1).rdir = south
    CASE west
      IF direction = north THEN snake(1).dir = WN
      IF direction = south THEN snake(1).dir = WS
      snake(1).rdir = west
    END SELECT
    PUT #2, 2, snake(1)
  END IF
  GET #2, 1, snake(1)
  snake(1).row = row: snake(1).col = col
  snake(1).TURN = 0: snake(1).dir = direction
  PUT #2, 1, snake(1)
  oldd = direction
  GET #2, snakelength, snake(1)
  ground(snake(1).col, snake(1).row) = 0
  PUT #2, snakelength, snake(1)
  IF ground(col, row) < 0 THEN
    lives = lives - 1: showinfo 1, lives
    IF ground(col, row) = -2 THEN death$ = "-4-*-15- You ran into the wall!!-4- *"
    IF ground(col, row) = -1 THEN death$ = "-4-*-15- That was your own tail!-4- *"
    GOTO 1
  END IF
  IF ground(col, row) = 1000 THEN
    IF direction = mdirection THEN
      score = score + speedlevel * 10: showinfo 2, score
      IF champ = 0 THEN prey = prey + 1: showinfo 3, prey
      IF champ = 1 THEN prey = prey - 1: showinfo 3, prey
      PLAY "MBT80L64O6D-E-E"
      IF champ = 1 THEN plusl = plusl + 3
      plusl = plusl + 2: GOSUB PUTmouse
    ELSE
      GOSUB PUTmouse
    END IF
  END IF
  IF ground(col, row) = 2000 THEN
    PLAY "MBMST128L64O2D-E-E"
    randomdeath = INT(RND * 10) + 1
    score = score - 50: IF score < 0 THEN score = 0
    showinfo 2, score
    rats = rats - 1
    IF randomdeath < 3 THEN lives = lives - 1: showinfo 1, lives: death$ = "-4-*-15-That ugly rat killed you!-4-*": GOTO 1
    plusl = plusl + 10
  END IF
  FOR i = snakelength TO 1 STEP -1
    GET #2, i, snake(1)
    srow = snake(1).row
    scol = snake(1).col
    sindex = snake(1).bodypart + snake(1).TURN + snake(1).dir
    PUTimage scol, srow, sindex
    IF snake(1).bodypart = body THEN
      FOR h = i TO 1 STEP -1
        IF snake(1).bodypart = shoulder THEN i = h: EXIT FOR
      NEXT h
    END IF
  NEXT i
  FOR i! = 1 TO realspeed: NEXT
LOOP

PUTmouse:
GET #2, snakelength, snake(1)
ground(snake(1).col, snake(1).row) = 1
DO
  mcol = INT(RND * 30) + 2
  mrow = INT(RND * 22) + 2
LOOP UNTIL ground(mcol, mrow) = 0
mdirection = INT(RND * 4) * 125
IF user.lvlreached > 2 THEN IF flag = 1 THEN flag = 2 ELSE flag = 1
IF flag = 1 THEN PUTimage mcol, mrow, mouse + mdirection
IF flag = 2 THEN PUTimage mcol, mrow, frog + mdirection
ground(mcol, mrow) = 1000
ground(snake(1).col, snake(1).row) = 0
PUT #2, snakelength, snake(1)
RETURN

PUTrat:
DO
  rcol = INT(RND * 30) + 2
  rrow = INT(RND * 22) + 2
LOOP UNTIL ground(rcol, rrow) = 0
PUTimage rcol, rrow, rat
ground(rcol, rrow) = 2000
rats = rats + 1
RETURN

rattle:
PUT (160, 438), imageSET(rattle + east), PSET
GOSUB cd
PUT (160, 440), imageSET(rattle + east), PSET
GOSUB cd
PUT (160, 442), imageSET(rattle + east), PSET
GOSUB cd
PUT (160, 440), imageSET(rattle + east), PSET
GOSUB cd
IF ground(9, 22) < 0 THEN PUTimage 9, 22, block
IF ground(9, 24) < 0 THEN PUTimage 9, 24, block
IF ground(9, 22) = 1000 THEN PUTimage mcol, mrow, mouse + mdirection
RETURN

cd:
PLAY "MFMST255L64O1CD"
RETURN

pausemenu:
mark = 1
GET (199, 89)-(441, 308), background

7:
LINE (199, 89)-(441, 308), 3, BF
LINE (199, 89)-(441, 308), 7, B
LINE (201, 91)-(439, 306), 7, B
center eng$(24 + lang%), 9
IF mark = 1 THEN center eng$(25 + lang%), 12 ELSE center eng$(26 + lang%), 12
center eng$(9 + lang%), 14
center eng$(11 + lang%), 18
IF mark = 1 THEN center eng$(44 + lang%), 16 ELSE center eng$(43 + lang%), 16
DO
  DO: LOOP UNTIL INKEY$ = ""
  DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
  SOUND 150, 1
  SELECT CASE a$
  CASE CHR$(0) + "P": mark = mark + 1
  CASE CHR$(0) + "H": mark = mark - 1
  CASE CHR$(13): EXIT DO
  CASE CHR$(32): EXIT DO
  END SELECT
  IF mark > 4 THEN mark = 1
  IF mark < 1 THEN mark = 4
  SELECT CASE mark
  CASE 1
    center eng$(25 + lang%), 12
    center eng$(9 + lang%), 14
    center eng$(11 + lang%), 18
  CASE 2
    center eng$(26 + lang%), 12
    center eng$(8 + lang%), 14
    center eng$(44 + lang%), 16
  CASE 3
    center eng$(43 + lang%), 16
    center eng$(9 + lang%), 14
    center eng$(11 + lang%), 18
  CASE 4
    center eng$(44 + lang%), 16
    center eng$(26 + lang%), 12
    center eng$(10 + lang%), 18
  END SELECT
  t# = TIMER + .05: DO: LOOP UNTIL TIMER >= t#
LOOP
IF mark = 1 THEN
  PUT (199, 89), background, PSET
  FOR i = 3 TO 1 STEP -1
    center eng$(27 + lang%) + STR$(i) + "...", 13
    t# = TIMER + 1
    DO: LOOP UNTIL TIMER >= t#
  NEXT
  PUT (199, 89), background, PSET
  t# = TIMER + .05: DO: LOOP UNTIL TIMER > t#
  RETURN
END IF
IF mark = 2 THEN EXIT SUB
IF mark = 3 THEN SPEEDset: realspeed = SPEED!: GOTO 7
IF mark = 4 THEN CLOSE #2: KILL "snake.tem": SYSTEM
RETURN
END SUB

FUNCTION portp$ (txt$)
temp$ = ""
FOR n = 1 TO 5
  SELECT CASE MID$(txt$, n, 1)
  CASE "0": a$ = "A"
  CASE "1": a$ = "B"
  CASE "2": a$ = "C"
  CASE "3": a$ = "D"
  CASE "4": a$ = "/"
  CASE "5": a$ = "F"
  CASE "6": a$ = "G"
  CASE "7": a$ = "H"
  CASE "8": a$ = "I"
  CASE "9": a$ = "J"
  CASE "!": a$ = "K"
  CASE "@": a$ = "_"
  CASE "#": a$ = "M"
  CASE "$": a$ = "N"
  CASE "%": a$ = "O"
  CASE "^": a$ = "P"
  CASE "&": a$ = "Q"
  CASE "*": a$ = "R"
  CASE "(": a$ = "S"
  CASE ")": a$ = "T"
  CASE "-": a$ = "U"
  CASE "_": a$ = "V"
  CASE "=": a$ = "W"
  CASE "+": a$ = ":"
  CASE "[": a$ = "Y"
  CASE "]": a$ = "Z"
  CASE "{": a$ = ":"
  CASE "}": a$ = ";"
  CASE "\": a$ = "V"
  CASE "|": a$ = "<"
  CASE ";": a$ = "?"
  CASE ":": a$ = ">"
  CASE ",": a$ = "@"
  CASE "<": a$ = "3"
  CASE ">": a$ = "4"
  CASE "?": a$ = "E"
  CASE "/": a$ = "6"
  CASE ".": a$ = "7"
  CASE "`": a$ = "L"
  CASE "~": a$ = "9"
  CASE ELSE: a$ = "5"
  END SELECT
  temp$ = temp$ + a$
NEXT
portp$ = temp$
END FUNCTION

SUB PUTimage (col, row, index)
x = (col - 1) * 20
y = (row - 1) * 20
PUT (x, y), imageSET(index), PSET
IF index < 6000 THEN ground(col, row) = -1
IF index = block THEN ground(col, row) = -2
END SUB

SUB restorecolors
RESTORE Paletteinfo
FOR n = 0 TO 15
  READ red, green, blue
  OUT &H3C8, n
  OUT &H3C9, red
  OUT &H3C9, green
  OUT &H3C9, blue
NEXT
END SUB

SUB settings (i)
LINE (0, 130)-(639, 479), 3, BF
SELECT CASE i
CASE 1
  starts = 53
  sel = 2
CASE 2
  starts = 55
  sel = 4
  center "-12-            " + STR$(user.rats), 16
  PUTimage 24, 10, head + north: PUTimage 24, 11, neck + north: PUTimage 24, 12, shoulder + north
  PUTimage 24, 13, body + north: PUTimage 24, 14, shoulder + north: PUTimage 24, 15, neck + north
  PUTimage 24, 16, tail + north: PUTimage 24, 17, tailend + north: PUTimage 24, 18, rattle + north
CASE 3
  starts = 60
  sel = 3
CASE 4: EXIT SUB
END SELECT
mark = 1
c$ = "-5-"
FOR y = 16 TO 16 + (sel - 1) * 2 STEP 2
  center c$ + eng$(lang% + starts + (y - 16 + 2) / 2 - 1), y
  c$ = ""
NEXT
DO
  DO: LOOP UNTIL INKEY$ = ""
  DO: a$ = INKEY$: LOOP UNTIL a$ <> ""

8:
  SOUND 150, 1
  SELECT CASE a$
  CASE CHR$(0) + "P": mark = mark + 1
  CASE CHR$(0) + "H": mark = mark - 1
  CASE CHR$(8): LINE (0, 130)-(639, 479), 3, BF: EXIT SUB
  CASE CHR$(27): LINE (0, 130)-(639, 479), 3, BF: EXIT SUB
  CASE CHR$(13): lrmark = 0:  EXIT DO
  CASE CHR$(0) + "M": lrmark = 1: EXIT DO
  CASE CHR$(0) + "K": lrmark = -1: EXIT DO
  END SELECT
  IF mark > sel THEN mark = 1
  IF mark < 1 THEN mark = sel
  SELECT CASE mark
  CASE 1
    center "-5-" + eng$(starts + lang%), 16
    center eng$(starts + sel - 1 + lang%), 16 + (sel - 1) * 2
    center eng$(starts + 1 + lang%), 18
  CASE 2
    center "-5-" + eng$(starts + 1 + lang%), 18
    center eng$(starts + lang%), 16
    IF sel > 2 THEN center eng$(starts + 2 + lang%), 20 ELSE center eng$(starts + lang%), 16
  CASE 3
    center "-5-" + eng$(starts + 2 + lang%), 20
    center eng$(starts + 1 + lang%), 18
    IF sel > 3 THEN center eng$(starts + 3 + lang%), 22 ELSE center eng$(starts + lang%), 16
  CASE 4
    center "-5-" + eng$(starts + 3 + lang%), 22
    center eng$(starts + 2 + lang%), 20
    IF sel > 4 THEN center eng$(starts + 4 + lang%), 24 ELSE center eng$(starts + lang%), 16
  END SELECT
  t# = TIMER + .05: DO: LOOP UNTIL TIMER >= t#
LOOP
SELECT CASE i
CASE 1
  LINE (0, 130)-(639, 479), 3, BF
  IF mark = 1 THEN lang% = 0 ELSE lang% = 64
  center eng$(48 + lang%), 11
  user.language = lang%
  OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(user)
  IF usernumber > 4 THEN PUT #1, usernumber, user
  CLOSE #1
  EXIT SUB
CASE 2
  IF lrmark = 0 THEN a$ = "": GOTO 8
  SELECT CASE mark
  CASE 1
    user.rats = user.rats + lrmark: IF user.rats > 5 THEN user.rats = 1
    IF user.rats < 1 THEN user.rats = 5
    IF user.lvlreached < 3 THEN user.rats = 3
    center "-12-            " + STR$(user.rats), 16
  CASE 2
    user.bg = user.bg + lrmark: IF user.bg > 5 THEN user.bg = 1
    IF user.bg < 1 THEN user.bg = 5
    IF user.lvlreached < 4 THEN user.bg = 1
    changeapp 1
  CASE 3
    user.snakec = user.snakec + lrmark: IF user.snakec > 5 THEN user.snakec = 1
    IF user.snakec < 1 THEN user.snakec = 5
    IF user.lvlreached < 5 THEN user.snakec = 1
    changeapp 2
  CASE 4
    user.spattern = user.spattern + lrmark: IF user.spattern > 5 THEN user.spattern = 1
    IF user.spattern < 1 THEN user.spattern = 5
    IF user.lvlreached < 6 THEN user.spattern = 1
    changeapp 3
  END SELECT
  IF usernumber > 4 THEN
    OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(user)
    PUT #1, usernumber, user
    CLOSE #1
  END IF
  a$ = "": GOTO 8
CASE 3
  IF mark = 1 THEN GOSUB create
  IF mark = 2 THEN oldnumber = usernumber: GOSUB change
  IF mark = 3 THEN oldnumber = usernumber: GOSUB delete
END SELECT

create:
IF lrmark <> 0 THEN a$ = "": GOTO 8
LINE (0, 130)-(639, 479), 3, BF
DO
  LOCATE 16, 30: PRINT SPACE$(33)
  pname$ = ask$("Enter a name:", 30, 16, 20, 1)
  LINE ((43 + LEN(pname$)) * 8, 240)-((43 + LEN(pname$)) * 8, 254), 3
  SELECT CASE pname$
  CASE "exit": a$ = "": LINE (0, 130)-(639, 479), 3, BF: GOTO 8
  CASE "down"
  CASE "up"
  CASE ELSE: EXIT DO
  END SELECT
LOOP
OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(user)
FOR n = 1 TO users
  GET #1, n + 4, user
  IF RTRIM$(user.nickname) = pname$ THEN center "-4-Name already exists", 17: SOUND 60, 5: t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#: center "                     ", 17: GET #1, oldnumber, user: CLOSE #1: GOSUB create
NEXT
GET #1, usernumber, user
CLOSE #1
DO
  center SPACE$(55), 19
  center SPACE$(55), 21

9:
  pass$ = ask$("Enter password:", 28, 19, 8, 2)
  IF pass$ = "exit" THEN a$ = "": LINE (0, 130)-(639, 479), 3, BF: GOTO 8
  IF pass$ = "down" OR pass$ = "up" THEN LOCATE 25, 35: PRINT STRING$(25, " "): GOTO 9
  LINE ((43 + LEN(pass$)) * 8, 288)-((43 + LEN(pass$)) * 8, 302), 3

11:
  repass$ = ask$("Confirm password:", 26, 21, 8, 2)
  IF repass$ = pass$ THEN EXIT DO
  IF repass$ = "exit" THEN a$ = "": LINE (0, 130)-(639, 479), 3, BF: GOTO 8
  IF repass$ <> "down" AND repass$ <> "up" THEN
    SOUND 60, 5
    center "-4-Passwords don't match", 24
    t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#
    center SPACE$(30), 24
  ELSE
    center SPACE$(30), 24
    GOTO 11
  END IF
LOOP
user.nickname = pname$
user.password = pass$
user.level = 1
user.avscore = 0
user.gplayed = 0
user.lvlreached = 1
user.language = lang%
user.gmode = 1
user.rats = 3
user.bg = 1
user.snakec = 1
user.spattern = 1
users = users + 1: usernumber = 4 + users
OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(user)
PUT #1, 4 + users, user
CLOSE #1
OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(users)
PUT #1, 2, usernumber
PUT #1, 3, users
CLOSE #1
a$ = ""
center SPACE$(35), 1
center "Welcome, " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)) + "!", 1
LINE (0, 130)-(639, 479), 3, BF: GOTO 8

change:
IF lrmark <> 0 THEN a$ = "": GOTO 8
LINE (0, 130)-(639, 479), 3, BF
DO
  LOCATE 16, 30: PRINT SPACE$(53)
  pname$ = ask$("Enter a name:", 30, 16, 20, 1)
  LINE ((43 + LEN(pname$)) * 8, 240)-((43 + LEN(pname$)) * 8, 254), 3
  SELECT CASE pname$
  CASE "exit": a$ = "": LINE (0, 130)-(639, 479), 3, BF: GOTO 8
  CASE "down"
  CASE "up"
  CASE ELSE: EXIT DO
  END SELECT
LOOP
OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(user)
FOR n = 1 TO users
  GET #1, n + 4, user
  IF RTRIM$(user.nickname) = pname$ THEN usernumber = n + 4: GOTO 15
NEXT
center "-4-User does not exist", 17: usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#: center SPACE$(55), 17: GOSUB change

15:
GET #1, usernumber, user
DO
  center SPACE$(50), 19
  pass$ = ask$("Enter password:", 28, 19, 8, 2)
  SELECT CASE pass$
  CASE "exit": a$ = "": LINE (0, 130)-(639, 479), 3, BF: usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: GOTO 8
  CASE "down"
  CASE "up"
  CASE ELSE
    IF pass$ <> RTRIM$(user.password) THEN center "-4-Incorrect password", 20: t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#: center SPACE$(50), 20: GOTO 15
    LINE ((43 + LEN(pass$)) * 8, 288)-((43 + LEN(pass$)) * 8, 302), 3: GOTO 14
  END SELECT
LOOP

14:
LOCATE 25, 35: PRINT SPACE$(35)
DO
  pass$ = ask$("Enter new password:", 24, 21, 8, 2)
  LINE ((43 + LEN(pass$)) * 8, 320)-((43 + LEN(pass$)) * 8, 334), 3
  SELECT CASE pass$
  CASE "exit": a$ = "": LINE (0, 130)-(639, 479), 3, BF: usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: GOTO 8
  CASE "down"
  CASE "up"
  CASE ELSE
    EXIT DO
  END SELECT
LOOP
DO
  pass1$ = ask$("Confirm the password:", 22, 22, 8, 2)
  LINE ((43 + LEN(pass1$)) * 8, 326)-((43 + LEN(pass1$)) * 8, 340), 3
  SELECT CASE pass1$
  CASE "exit": a$ = "": LINE (0, 130)-(639, 479), 3, BF: usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: GOTO 8
  CASE "down"
  CASE "up"
  CASE ELSE
    IF pass$ = pass1$ THEN EXIT DO ELSE center SPACE$(65), 21: center SPACE$(65), 22: center "-4-Passwords don't match", 21: t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#: center SPACE$(55), 21: GOTO 14
  END SELECT
LOOP
user.password = pass$
PUT #1, usernumber, user
CLOSE #1
LINE (0, 130)-(639, 479), 3, BF: a$ = ""
GOTO 8

delete:
IF lrmark <> 0 THEN a$ = "": GOTO 8
LINE (0, 130)-(639, 479), 3, BF
DO
  pname$ = ask$("Enter a name:", 30, 16, 20, 1)
  LINE ((43 + LEN(pname$)) * 8, 240)-((43 + LEN(pname$)) * 8, 254), 3
  SELECT CASE pname$
  CASE "exit": a$ = "": LINE (0, 130)-(639, 479), 3, BF: GOTO 8
  CASE "down"
  CASE "up"
  CASE ELSE: EXIT DO
  END SELECT
LOOP
OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(user)
FOR n = 1 TO users
  GET #1, n + 4, user
  IF RTRIM$(user.nickname) = pname$ THEN usernumber = n + 4: GOTO 13
NEXT
center "-4-User does not exist", 17: usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#: GOSUB delete

13:
GET #1, usernumber, user
DO
  LOCATE 25, 35: PRINT STRING$(25, " ")
  LOCATE 27, 33: PRINT STRING$(25, " ")

12:
  pass$ = ask$("Enter password:", 28, 19, 8, 2)
  IF pass$ = "exit" THEN a$ = "": LINE (0, 130)-(639, 479), 3, BF: usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: a$ = "": GOTO 8
  IF pass$ = "down" OR pass$ = "up" THEN center SPACE$(65), 19: GOTO 12
  LINE ((43 + LEN(pass$)) * 8, 288)-((43 + LEN(pass$)) * 8, 302), 3
  IF pass$ <> RTRIM$(user.password) THEN center SPACE$(60), 19: center "-4-Incorrect password", 19: t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#: center SPACE$(50), 19: GOTO 12
  pass$ = ask$("Are you sure?", 30, 21, 4, 1)
  IF UCASE$(pass$) = "YES" OR UCASE$(pass$) = "Y" OR UCASE$(pass$) = "IGEN" OR UCASE$(pass$) = "I" THEN EXIT DO
  usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: LINE (0, 130)-(639, 479), 3, BF: a$ = "": GOTO 8
LOOP
IF users > 1 THEN
  FOR n = usernumber + 1 TO 4 + users
    GET #1, n, user
    PUT #1, n - 1, user
  NEXT n
END IF
user.nickname = ""
user.password = ""
user.level = 0
user.avscore = 0
user.lvlreached = 0
user.language = 0
user.gmode = 0
user.rats = 0
user.bg = 0
user.snakec = 0
user.spattern = 0
PUT #1, 4 + users, user
users = users - 1: usernumber = 4
GET #1, 4, user
CLOSE #1
OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(users)
PUT #1, 2, usernumber
PUT #1, 3, users
CLOSE #1
LINE (0, 130)-(639, 479), 3, BF
center SPACE$(35), 1
center "Welcome, " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)) + "!", 1
changeapp 1: changeapp 2: changeapp 3
a$ = ""
GOTO 8
END SUB

FUNCTION setuplevel
lvl = level
ERASE ground
FOR y = 2 TO 23
  FOR x = 2 TO 31
    ground(x, y) = 0
    LINE ((x - 1) * 20, (y - 1) * 20)-((x - 1) * 20 + 19, (y - 1) * 20 + 19), 3, BF
  NEXT
NEXT
initialize
prey = 10
showinfo 3, prey
SELECT CASE lvl
CASE 1: RESTORE lvl1
CASE 2: RESTORE lvl2
CASE 3: RESTORE lvl3
CASE 4: RESTORE lvl4
CASE 5: RESTORE lvl5
CASE 6: RESTORE lvl6
CASE 7: RESTORE lvl7
CASE 8: RESTORE lvl8
CASE 9: RESTORE lvl9
CASE 10
  FOR i = 0 TO 1
    FOR x = 4 + i TO 28 + i STEP 6
      PUTimage x, 4, block
      PUTimage x, 21, block
      PUTimage x, 9, block
      PUTimage x, 10, block
      PUTimage x, 15, block
      PUTimage x, 16, block
      ground(x, 21) = -2: ground(x, 9) = -2: ground(x, 15) = -2
      ground(x, 4) = -2: ground(x, 10) = -2: ground(x, 16) = -2
    NEXT
  NEXT
  FOR x = 3 TO 30 STEP 3
    PUTimage x, 5, block
    PUTimage x, 20, block
    PUTimage x, 8, block
    PUTimage x, 9, block
    PUTimage x, 10, block
    PUTimage x, 15, block
    PUTimage x, 16, block
    PUTimage x, 17, block
    ground(x, 5) = -2: ground(x, 8) = -2: ground(x, 10) = -2: ground(x, 16) = -2
    ground(x, 20) = -2: ground(x, 9) = -2: ground(x, 15) = -2: ground(x, 17) = -2
  NEXT
CASE 11
  score = score * lives
  showinfo 2, score
  GET (190, 119)-(450, 278), background
  LINE (190, 119)-(450, 278), 3, BF
  LINE (190, 119)-(450, 278), 7, B
  LINE (192, 121)-(448, 276), 7, B
  center eng$(1 + lang%), 11
  IF champdone = 0 THEN center eng$(63 + lang%), 13
  center eng$(8 + lang%), 15
  OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(champdone)
  champdone = 1: PUT #1, 1, champdone: CLOSE #1
  DO
    DO: LOOP UNTIL INKEY$ = ""
    DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
    IF a$ = CHR$(27) OR a$ = CHR$(13) OR a$ = CHR$(32) THEN
      PUT (190, 119), background, PSET
      clearground 2, 4
      highscores 2: setuplevel = 2: EXIT FUNCTION
    END IF
  LOOP
END SELECT
IF lvl < 9 THEN
  DO
    READ startx
    IF startx = 0 THEN EXIT DO
    READ starty, endx, endy
    IF startx < endx THEN iist = 1 ELSE iist = -1
    IF starty < endy THEN ist = 1 ELSE ist = -1
    FOR i = starty TO endy STEP ist
      FOR ii = startx TO endx STEP iist
        PUTimage ii, i, block
        ground(ii, i) = -2
      NEXT
    NEXT
  LOOP
END IF

5:
COLOR 15
GET (199, 89)-(441, 308), background
LINE (199, 136)-(441, 280), 3, BF
LINE (201, 138)-(439, 278), 8, B
LINE (199, 136)-(441, 280), 8, B
center eng$(28 + lang%) + LTRIM$(RTRIM$(STR$(lvl))), 10
center portp$(top(level).id), 11
center eng$(29 + lang%), 13
center eng$(44 + lang%), 15
center eng$(9 + lang%), 17
mark = 1
DO
  DO: LOOP UNTIL INKEY$ = ""
  DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
  SELECT CASE a$
  CASE CHR$(0) + "P": mark = mark + 1
  CASE CHR$(0) + "H": mark = mark - 1
  CASE CHR$(13): EXIT DO
  CASE CHR$(32): EXIT DO
  END SELECT
  IF mark > 3 THEN mark = 1
  IF mark < 1 THEN mark = 3
  SELECT CASE mark
  CASE 1
    center eng$(29 + lang%), 13
    center eng$(44 + lang%), 15
    center eng$(9 + lang%), 17
  CASE 2
    center eng$(30 + lang%), 13
    center eng$(43 + lang%), 15
    center eng$(9 + lang%), 17
  CASE 3
    center eng$(30 + lang%), 13
    center eng$(44 + lang%), 15
    center eng$(8 + lang%), 17
  END SELECT
  t# = TIMER + .05: DO: LOOP UNTIL TIMER >= t#
LOOP
PUT (199, 89), background, PSET
IF mark = 2 THEN SPEEDset: realspeed = SPEED!: GOTO 5
IF mark = 3 THEN setuplevel = 2 ELSE setuplevel = 1
END FUNCTION

SUB showinfo (index, value)
SELECT CASE index
CASE 1
  PUT (80, 4), numSET(value * 40), PSET
CASE 2
  IF value < 10 THEN v$ = "0000" + LTRIM$(RTRIM$(STR$(value)))
  IF value > 9 AND value < 100 THEN v$ = "000" + LTRIM$(RTRIM$(STR$(value)))
  IF value > 99 AND value < 1000 THEN v$ = "00" + LTRIM$(RTRIM$(STR$(value)))
  IF value > 999 AND value < 10000 THEN v$ = "0" + LTRIM$(RTRIM$(STR$(value)))
  IF value > 9999 THEN v$ = LTRIM$(RTRIM$(STR$(value)))
  FOR i = 552 TO 584 STEP 8
    PUT (i, 4), numSET(VAL(MID$(v$, (i - 552) / 8 + 1, 1)) * 40), PSET
  NEXT
CASE 3
  IF value < 10 THEN p$ = "000" + LTRIM$(RTRIM$(STR$(value)))
  IF value > 9 AND value < 100 THEN p$ = "00" + LTRIM$(RTRIM$(STR$(value)))
  IF value > 99 AND value < 1000 THEN p$ = "0" + LTRIM$(RTRIM$(STR$(value)))
  IF value > 999 THEN p$ = LTRIM$(RTRIM$(STR$(value)))
  FOR i = 353 TO 377 STEP 8
    PUT (i, 464), numSET(VAL(MID$(p$, (i - 353) / 8 + 1, 1)) * 40), PSET
  NEXT
END SELECT
END SUB

SUB SPEEDset
COLOR 15
IF speedlevel = 0 THEN GET (199, 89)-(441, 308), background
LINE (199, 89)-(441, 308), 3, BF
LINE (199, 89)-(441, 308), 7, B
LINE (201, 91)-(439, 306), 7, B
IF speedlevel <> 0 THEN mark = speedlevel ELSE mark = 3
center eng$(31 + lang%), 8
IF mark = 1 THEN r = 32 ELSE r = 33
center eng$(r + lang%), 10
IF mark = 2 THEN r = 34 ELSE r = 35
center eng$(r + lang%), 12
IF mark = 3 THEN r = 36 ELSE r = 37
center eng$(r + lang%), 14
IF mark = 4 THEN r = 38 ELSE r = 39
center eng$(r + lang%), 16
IF mark = 5 THEN r = 40 ELSE r = 41
center eng$(r + lang%), 18
DO
  DO: LOOP UNTIL INKEY$ = ""
  DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
  SOUND 150, 1
  SELECT CASE a$
  CASE CHR$(0) + "P": mark = mark + 1
  CASE CHR$(0) + "H": mark = mark - 1
  CASE CHR$(32): EXIT DO
  CASE CHR$(13): EXIT DO
  CASE CHR$(27): CLOSE #2: KILL "snake.tem": SYSTEM
  END SELECT
  IF mark > 5 THEN mark = 1
  IF mark < 1 THEN mark = 5
  SELECT CASE mark
  CASE 1
    center eng$(32 + lang%), 10
    center eng$(35 + lang%), 12
    center eng$(41 + lang%), 18
  CASE 2
    center eng$(33 + lang%), 10
    center eng$(34 + lang%), 12
    center eng$(37 + lang%), 14
  CASE 3
    center eng$(35 + lang%), 12
    center eng$(36 + lang%), 14
    center eng$(39 + lang%), 16
  CASE 4
    center eng$(37 + lang%), 14
    center eng$(38 + lang%), 16
    center eng$(41 + lang%), 18
  CASE 5
    center eng$(33 + lang%), 10
    center eng$(39 + lang%), 16
    center eng$(40 + lang%), 18
  END SELECT
  t# = TIMER + .05: DO: LOOP UNTIL TIMER >= t#
LOOP
PUT (199, 89), background, PSET
SELECT CASE mark
CASE 1
  SPEED! = 100000 / ((cpu / 10) / (1.59 / 10)): speedlevel = 1
CASE 2
  SPEED! = 70000 / ((cpu / 14.286) / (1.59 / 14.286)): speedlevel = 2
CASE 3
  SPEED! = 50000 / ((cpu / 20) / (1.59 / 20)): speedlevel = 3
CASE 4
  SPEED! = 30000 / ((cpu / 33.333) / (1.59 / 33.333)): speedlevel = 4
CASE 5
  SPEED! = 20000 / ((cpu / 50) / (1.59 / 50)): speedlevel = 5
END SELECT
END SUB

SUB testlevel
RESTORE lvls
FOR i = 10 TO 1 STEP -1
  READ x
  IF user.avscore >= x THEN user.level = i: EXIT FOR
NEXT
IF user.level > user.lvlreached THEN user.lvlreached = user.level
END SUB

'end of program


    
This message has been edited by iorr5t on Oct 31, 2007 12:30 PM
This message has been edited by Tusike on Oct 14, 2007 11:42 AM


 
 Respond to this message   

(Login Tusike)

Creatf.bas - Creates files

September 24 2007, 9:42 AM 

'Creatf.bas - creates file for Snake
DEFINT A-Z
CLS : SCREEN 12
TYPE filmloc
x AS INTEGER
y AS INTEGER
END TYPE
DIM film AS filmloc
TYPE account
nickname AS STRING * 20
password AS STRING * 8
level AS INTEGER
avscore AS INTEGER
gplayed AS INTEGER
lvlreached AS INTEGER
language AS INTEGER
gmode AS INTEGER
rats AS INTEGER
bg AS INTEGER
snakec AS INTEGER
spattern AS INTEGER
END TYPE
TYPE topperson
pname AS STRING * 20
playdate AS STRING * 10
score AS LONG
id AS STRING * 5
END TYPE
DIM user AS account
OPEN "snake.use" FOR OUTPUT AS #1: CLOSE #1
won = 0
OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(won)
PUT #1, 1, won
won = 3
PUT #1, 2, won
won = 0
PUT #1, 3, won
CLOSE #1
user.nickname = "Guest"
user.password = ""
user.avscore = 0
user.gplayed = 0
user.level = 1
user.lvlreached = 1
user.rats = 3
user.language = 0
user.gmode = 1
user.bg = 1
user.snakec = 1
user.spattern = 1
OPEN "snake.use" FOR RANDOM AS #1 LEN = LEN(user)
PUT #1, 4, user
CLOSE #1
DIM toper(1 TO 10) AS topperson
OPEN "snake.top" FOR RANDOM AS #1 LEN = LEN(toper(1))
RESTORE ids
FOR i = 1 TO 10
READ z$
toper(i).pname = "Player" + STR$(i)
toper(i).playdate = DATE$
toper(i).score = 5500 - (500 * i)
toper(i).id = z$
PUT #1, i, toper(i)
NEXT
CLOSE #1
OPEN "snake.str" FOR OUTPUT AS #1
RESTORE tet
DO
READ r$
IF r$ = "done" THEN EXIT DO
WRITE #1, r$
LOOP
CLOSE #1
RESTORE movie
OPEN "movie.dat" FOR RANDOM AS #1 LEN = LEN(film)
FOR i = 1 TO 66
READ film.x, film.y
PUT #1, i, film
NEXT
CLOSE #1


SYSTEM
ids:
DATA "1!-`.", ">;|9("
DATA "?@2_~", "&:&7\"
DATA "/8 $+", "`*'6}"
DATA "<.%[4", "^5{<]"
DATA ">93#=", "]],8)"
tet:
DATA "C O N G R A T U L A T I O N S!"
DATA "You made the top 10"
DATA "Name too long. Please try again."
DATA "-12-S O R R Y!!!"
DATA "You didn't make the highscores"
DATA "-5-View the highscores"
DATA "View the highscores"
DATA "-5-Return to main menu"
DATA "Return to main menu"
DATA "-5-Exit the game"
DATA "Exit the game"
DATA " Player name: Play date: Score:"
DATA "Play the game"
DATA "Play the championship"
DATA "View the highscores"
DATA "Settings"
DATA "Instructions"
DATA "Exit"
DATA "-12-G A M E O V E R"
DATA "You lost all of your lives"
DATA "-5-Try again"
DATA "Try again"
DATA "Game starts in"
DATA "-12-G A M E P A U S E D"
DATA "-5-Continue the game"
DATA "Continue the game"
DATA "Game will continue in"
DATA "Level - "
DATA "-5-Start the game"
DATA "Start the game"
DATA "-12-Choose the speed level"
DATA "-5-very slow"
DATA "very slow"
DATA "-5-slow"
DATA "slow"
DATA "-5-moderate"
DATA "moderate"
DATA "-5-fast"
DATA "fast"
DATA "-5-very fast"
DATA "very fast"
DATA "CHECKING COMPUTER SPEED"
DATA "-5-Change speed"
DATA "Change speed"
DATA "-5-Enter a password"
DATA "Enter a password"
DATA "-4-Wrong password"
DATA "-12-S E T T I N G S"
DATA "Language selections"
DATA "Game settings"
DATA "Visual settings"
DATA "User settings"
DATA "English"
DATA "Hungarian"
DATA "< Rats >"
DATA "< Background color >"
DATA "< Snake's color >"
DATA "< Snake patterns' color >"
DATA "Game mode: "
DATA "Create new user"
DATA "Change user password"
DATA "Delete user"
DATA "You can now create users!!!"
DATA "Login as.."
DATA " G R A T U L A L O K! "
DATA "Bekerultel az elso tizbe"
DATA "Nev tul hosszu. Kerem irjon be egy masikat.
DATA "-12-B O C S I!!!"
DATA "Nem jutottal be az elso tiz koze"
DATA "-5-Elso tiz megtekintese"
DATA "Elso tiz megtekintese"
DATA "-5-Vissza a fomenure"
DATA "Vissza a fomenure"
DATA "-5-Kilepes"
DATA "Kilepes"
DATA " Jatekos neve Idopont Pontok "
DATA "Jatek kezdese"
DATA "Bajnoksag kezdese"
DATA "Elso tiz megtekintese"
DATA "Beallitasok"
DATA "Szabalyok"
DATA "Kilepes"
DATA "-12-G A M E O V E R"
DATA "Az osszes eleted elfogyott"
DATA "-5-Ujrakezdes"
DATA "Ujrakezdes"
DATA "Jatek kezdete:"
DATA "-12-G A M E P A U S E D"
DATA "-5-Jatek folytatasa"
DATA "Jatek folytatasa"
DATA "Jatek folytatasa:"
DATA "Szint "
DATA "-5-Jatek kezdese"
DATA "Jatek kezdese"
DATA "-12-Gyorsasag valasztasa"
DATA "-5-nagyon lassu"
DATA "nagyon lassu"
DATA "-5-lassu"
DATA "lassu"
DATA "-5-kozepes"
DATA "kozepes"
DATA "-5-gyors"
DATA "gyors"
DATA "-5-nagyon gyors"
DATA "nagyon gyors"
DATA "A GEP SEBESSEGENEK ELLENORZESE"
DATA "-5-Sebesseg valtoztatasa"
DATA "Sebesseg valtoztatasa"
DATA "-5-Jelszo megadasa"
DATA "Jelszo megadasa"
DATA "-4-Rossz jelszo"
DATA "-12-B E A L L I T A S O K"
DATA "Nyelv valasztasa"
DATA "Jatek beallitasai"
DATA "Kinezet valtoztatasa"
DATA "Felhasznalok"
DATA "Angol"
DATA "Magyar"
DATA "< Patkanyok >"
DATA "< Hatterszin >"
DATA "< Kigyo szine >"
DATA "< Kigyo minta szine >"
DATA "Jatek mod:"
DATA "Uj felhasznalo"
DATA "Jelszo modositasa"
DATA "Felhasznalo torlese"
DATA "Letrehozhat felhasznalokat!"
DATA "Bejelentkezes"
DATA "done"

movie:
DATA 5,1
DATA 5,2
DATA 5,3
DATA 5,4
DATA 5,5
DATA 5,6
DATA 5,7
DATA 5,8
DATA 5,9
DATA 5,10
DATA 5,11
DATA 5,12
DATA 5,13
DATA 5,14
DATA 5,15
DATA 5,16
DATA 5,17
DATA 6,17
DATA 7,17
DATA 8,17
DATA 9,17
DATA 10,17
DATA 11,17
DATA 12,17
DATA 13,17
DATA 14,17
DATA 15,17
DATA 16,17
DATA 17,17
DATA 18,17
DATA 19,17
DATA 20,17
DATA 21,17
DATA 22,17
DATA 23,17
DATA 23,16
DATA 23,15
DATA 23,14
DATA 23,13
DATA 23,12
DATA 23,11
DATA 23,10
DATA 23,9
DATA 23,8
DATA 22,8
DATA 21,8
DATA 20,8
DATA 19,8
DATA 18,8
DATA 17,8
DATA 16,8
DATA 15,8
DATA 14,8
DATA 13,8
DATA 12,8
DATA 11,8
DATA 10,8
DATA 9,8
DATA 8,8
DATA 7,8
DATA 6,8
DATA 5,8
DATA 4,8
DATA 3,8
DATA 2,8
DATA 1,8

'end of program


 
 Respond to this message   

(Login Tusike)

Snake v0.8 (1 will be the full version...)

December 14 2007, 11:57 PM 

Actually, this is the full version now! I added the instructions to the game, too.
Please run creatf.bas first to play the game. Here is the program:

DECLARE SUB customs ()
DECLARE SUB instructions ()
DECLARE SUB drawJEP (lvl%)
DECLARE SUB drawmove ()
DECLARE FUNCTION place% (x%)
DECLARE FUNCTION min% (x%)
DECLARE SUB PRINTIT (text$, x%, y%)
DECLARE SUB startup ()
CONST fleVER = "Files\snake.ver", Ver = "1222"
CONST fleUSE = "Files\snake.use"
CONST fleTEM = "Files\snake.tem"
CONST fleSTR = "Files\snake.str"
CONST fleTOP = "Files\snake.top"
CONST fleMOV = "Files\movie.dat"

DECLARE SUB zap ()
DECLARE FUNCTION MenuChoice% (selections%, start%, xstart%)
DECLARE FUNCTION eng$ (number%, language%)
DECLARE SUB login ()
DECLARE SUB testlevel ()
DEFINT A-Z
DECLARE FUNCTION ask$ (text$, x, y, max, mode)
DECLARE SUB changeapp (i)
DECLARE SUB settings (i)
DECLARE SUB options ()
DECLARE FUNCTION setuplevel ()
DECLARE SUB logo ()
DECLARE SUB highscores (index)
DECLARE SUB SPEEDset ()
DECLARE SUB center (text$, y!)
DECLARE SUB clearground (x, y)
DECLARE SUB mainmenu (mark)
DECLARE SUB showinfo (index, value)
DECLARE SUB initialize ()
DECLARE SUB playSNAKE ()
DECLARE SUB defscreen ()
DECLARE SUB restorecolors ()
DECLARE SUB drawthings ()
DECLARE SUB PUTimage (col, row, index)
RANDOMIZE TIMER
CLEAR , , 3000
CLS
SCREEN 12
DIM SHARED imageSET(7749) AS SINGLE, numSET(399) AS SINGLE, cpu AS DOUBLE
DIM SHARED background(6820) AS SINGLE, global$, start, map$
DIM SHARED ground(1 TO 32, 1 TO 24), lang%, mch(10), side$, sblock(100)
DIM SHARED prey, SPEED AS SINGLE, level, usernumber, users, champdone, champ, realspeed AS SINGLE, score, oldscore, speedlevel, lives, snakelength, oldlength
TYPE topperson
nickname AS STRING * 20
playdate AS STRING * 10
score AS LONG
id AS STRING * 5
END TYPE
DIM SHARED top(1 TO 10) AS topperson
TYPE filmloc
x AS INTEGER
y AS INTEGER
END TYPE
DIM SHARED film AS filmloc
TYPE body
col AS INTEGER
row AS INTEGER
TURN AS INTEGER
dir AS INTEGER
rdir AS INTEGER
END TYPE
TYPE account
nickname AS STRING * 20
password AS STRING * 8
level AS INTEGER
avscore AS INTEGER
gplayed AS INTEGER
lvlreached AS INTEGER
language AS INTEGER
gmode AS INTEGER
rats AS INTEGER
bg AS INTEGER
snakec AS INTEGER
spattern AS INTEGER
END TYPE
DIM SHARED user AS account
DIM SHARED snake(1 TO 2) AS body
CONST head = 0
CONST neck = 500
CONST shoulder = 1000
CONST body = 1500
CONST tail = 2000
CONST tailEND = 2500
CONST rattle = 3000
CONST mouse = 6000
CONST rat = 6500
CONST frog = 7250
CONST blank = 6625
CONST block = 7125
CONST TURN = 3000

CONST west = 0
CONST north = 125
CONST east = 250
CONST south = 375


CONST NE = 0
CONST NW = 125
CONST SW = 250
CONST SE = 375
CONST WN = 375
CONST EN = 250
CONST ES = 125
CONST WS = 0

' Check compatibility with CreateF
DIM SHARED MyErr
ON ERROR GOTO GetMyErr
OPEN fleVER FOR INPUT AS #8: LINE INPUT #8, l$
ON ERROR GOTO 0: CLOSE #8
IF l$ <> Ver THEN
PRINT "SNAKE consists of four programs"
PRINT " CreateF.bas creates initial files, custom.bas will be used later"
PRINT " Snake.bas and profile.bas use those files": PRINT
PRINT " You must ensure CreateF is run first"
PRINT " You must ensure both programs are the same version"
PRINT " Press any key to exit"
PRINT
PRINT
PRINT "SNAKE negy programbol all"
PRINT " custom.bas majd kesobb kell, CreateF.bas letrehozza a fajlokat"
PRINT " melyeket Snake.bas es profile.bas hasznal fel": PRINT
PRINT " Eloszor createF.bas-t kell futtatni"
PRINT " Az is fontos hogy mindharom program ugyanaz a kiadas legyen"
PRINT " Barmely billentyu a kilepeshez"
a$ = INPUT$(1)

SYSTEM
END IF

OPEN "files\snake.tem" FOR OUTPUT AS #1: CLOSE #1
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(champdone)
GET #1, 1, champdone
GET #1, 2, usernumber
GET #1, 3, users
CLOSE #1
OPEN "files\snake.top" FOR RANDOM AS #1 LEN = LEN(top(1))
FOR topers = 1 TO 10
GET #1, topers, top(topers)
NEXT
CLOSE #1
cpu# = 0
IF champdone = 1 THEN
OPEN "profile.txt" FOR APPEND AS #1
IF LOF(1) = 0 THEN
CLOSE #1: KILL "profile.txt"
ELSE
CLOSE #1
OPEN "profile.txt" FOR INPUT AS #1
INPUT #1, nev$
INPUT #1, cpu#
CLOSE #1
KILL "profile.txt"
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(user)
FOR i = 5 TO 4 + users
GET #1, i, user
IF LTRIM$(RTRIM$(UCASE$(user.nickname))) = RTRIM$(LTRIM$(UCASE$(nev$))) THEN CLOSE #1: usernumber = i: GOSUB Getsprites: restorecolors: changeapp 1: changeapp 2: changeapp 3: lang% = user.language: GOTO start
NEXT
END IF
END IF
GOSUB Getsprites
restorecolors

OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(user)
IF usernumber > 4 THEN
IF champdone = 1 THEN GET #1, usernumber, user
ELSE
GET #1, 4, user
END IF
CLOSE #1
lang% = user.language
startup
mainmenu 1
start:
DO
mainmenu 2
LOOP
CLOSE #2: KILL "files\snake.tem"
SYSTEM
GetMyErr: MyErr = ERR: RESUME NEXT

Getsprites:
FOR n = 0 TO 15
OUT &H3C8, n
OUT &H3C9, 0
OUT &H3C9, 0
OUT &H3C9, 0
NEXT n
IF cpu# = 0 THEN
t# = TIMER
FOR i! = 1 TO 1000000: NEXT
t2# = TIMER
cpu# = t2# - t#
END IF

maxx = 19: maxy = 299: x = -1: y = 0
OPEN "files\images.dat" FOR INPUT AS #1
DO

INPUT #1, counter, colr
IF colr = 7 THEN colr = 3: GOTO 17
IF colr = 14 THEN colr = 3
IF colr = 77 THEN colr = 7
IF colr = 2 AND y > 279 THEN colr = 11
17
FOR i = 1 TO counter
x = x + 1
IF x > maxx THEN x = 0: y = y + 1
PSET (x, y), colr
NEXT
LOOP UNTIL x = maxx AND y = maxy
CLOSE #1
index = 0
placey = 0
DO
IF index = 7000 THEN index = 7250
GET (0, placey)-(19, placey + 19), imageSET(index)
IF index < 6500 OR index = 7250 THEN GOSUB pose
index = index + 500
placey = placey + 20
LOOP UNTIL placey = 300

LINE (0, 0)-(19, 19), 7, BF
FOR i = 1 TO 500
x = INT(RND * 20)
y = INT(RND * 20)
PSET (x, y), 8
PSET (x + 1, y + 1), 15
NEXT
LINE (0, 0)-(19, 19), 7, B
GET (0, 0)-(19, 19), imageSET(block)
LINE (0, 0)-(7, 7), 7, B
GET (0, 0)-(7, 7), sblock
LINE (0, 0)-(19, 19), 3, BF: GET (0, 0)-(19, 19), imageSET(6625)
GET (0, 0)-(19, 19), imageSET(6750)
GET (0, 0)-(19, 19), imageSET(6875)
GET (0, 0)-(19, 19), imageSET(7000)
CLS
COLOR 4
FOR i = 0 TO 9
IF i = 0 THEN s$ = "O" ELSE s$ = LTRIM$(RTRIM$(STR$(i)))
LOCATE 1, 1: PRINT s$
LINE (40, 41)-(46, 53), 15, BF
FOR y = 1 TO 13
FOR x = 0 TO 6
IF POINT(x, y) = 4 THEN PSET (40 + x, 40 + y), 4
NEXT
NEXT
GET (40, 41)-(46, 53), numSET(i * 40)
LINE (40, 41)-(46, 53), 3, BF
NEXT

RETURN
pose:
FOR poses = index TO index + 250 STEP 125
PUT (100, 100), imageSET(poses), PSET
FOR x = 100 TO 119
FOR y = 100 TO 119
PSET (219 - y, x - 20), POINT(x, y)
NEXT y
NEXT x
GET (100, 80)-(119, 99), imageSET(poses + 125)
NEXT poses

RETURN






Paletteinfo:
DATA 0,14,3, 0,0,42, 0,42,0, 0,14,3, 42,0,0, 60,52,0
DATA 60,52,0, 42,42,42, 21,21,21, 21,21,63, 21,63,21, 0,42,0
DATA 63,21,21, 63,21,63, 0,0,0, 63,63,63

intro:
DATA 140, 30, 19, 169, 40, 169, 55, 140, 40, 125, 60, 135, 75, 155, 85, 165, 100, 160, 110
DATA 153, 120, 140, 129, 111, 119, 111, 105, 140, 119, 147, 110, 150, 100, 145, 95, 120, 80, 110, 60, 140, 30, 140, 31
DATA 195, 129, 9, 195, 30, 260, 95, 260, 30, 265, 28, 269, 30, 269, 129,204, 65, 204, 129, 195, 129, 197, 127
DATA 285, 129, 8, 305, 30, 334, 30, 355, 129, 345, 125, 325, 45, 315, 45, 295, 125, 285, 129, 320, 35
DATA 375, 129, 13, 380, 125, 380, 34, 375, 30, 390, 30, 390, 70, 435, 30, 445, 30, 397, 80, 445, 129, 435, 129, 390, 90, 390, 129, 375, 129, 380, 32
DATA 465, 129, 12, 465, 30, 539, 32, 539, 43, 480, 45, 480, 73, 510, 68, 510, 92, 480, 87, 480, 115, 539, 116, 539, 127, 465, 129, 466, 128


lvl1:
DATA 0
lvl2:
DATA 15,8,18,17, 0
lvl3:
DATA 4, 4, 4, 21, 5, 5, 5, 20, 29, 4, 29, 21, 28, 5, 28, 20, 15, 8, 18, 17, 0
lvl4:
DATA 4, 4, 29, 4, 4, 21, 29, 21, 4, 5, 4, 11, 4, 14, 4, 21, 29, 5, 29, 11, 29, 14, 29, 21, 13, 12, 19, 13, 0
lvl5:
DATA 4, 4, 29, 4, 4, 21, 29, 21, 4, 5, 4, 11, 4, 14, 4, 21, 29, 5, 29, 11, 29, 14, 29, 21
DATA 10, 10, 23, 11, 10, 14, 23, 15, 0

lvl6:
DATA 4, 4, 5, 5, 8, 4, 9, 5, 12, 4, 13, 5, 16, 4, 17, 5, 20, 4, 21, 5, 24, 4, 25, 5, 28, 4, 29, 5
DATA 4, 20, 5, 21, 8, 20, 9, 21, 12, 20, 13, 21, 16, 20, 17, 21, 20, 20, 21, 21, 24, 20, 25, 21, 28, 20, 29, 21
DATA 4, 9, 15, 9, 18, 9, 29, 9, 4, 16, 15, 16, 18, 16, 29, 16,0

lvl8:
DATA 4, 4, 29, 4, 4, 21, 29, 21, 4, 5, 4, 11, 4, 14, 4, 21, 29, 5, 29, 11, 29, 14, 29, 21
DATA 10, 12, 23, 12, 10, 13, 23, 13
DATA 7, 7, 26, 7, 7, 18, 26, 18, 7, 8, 7, 11, 7, 14, 7, 17, 26, 8, 26, 11, 26, 14, 26, 17, 0

lvl7:
DATA 2, 11, 2, 11, 2, 14, 2, 14, 31, 11, 31, 11, 31, 14, 31, 14, 15, 2, 15, 2, 18, 2, 18, 2
DATA 18, 6, 19, 6, 20, 7, 21, 7, 22, 8, 23, 8, 24, 9, 24, 9, 25, 10, 25, 10, 26, 11, 26, 11
DATA 18, 19, 19, 19, 20, 18, 21, 18, 22, 17, 23, 17, 24, 16, 24, 16, 25, 15, 25, 15, 26, 14, 26, 14
DATA 14, 6, 15, 6, 12, 7, 13, 7, 10, 8, 11, 8, 9, 9, 9, 9, 8, 10, 8, 10, 7, 11, 7, 11
DATA 14, 19, 15, 19, 12, 18, 13, 18, 10, 17, 11, 17, 9, 16, 9, 16, 8, 15, 8, 15, 7, 14, 7, 14
DATA 2, 2, 3, 2, 2, 3, 2, 3, 30, 2, 31, 2, 31, 3, 31, 3, 31, 22, 31, 23, 30, 23, 30, 23, 2, 23, 3, 23, 2, 22, 2, 22
DATA 0

lvl9:
DATA 2, 2, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13
DATA 31, 2, 29, 4, 29, 4, 28, 5, 28, 5, 27, 6, 27, 6, 26, 7, 26, 7, 25, 8, 25, 8, 24, 9, 24, 9, 23, 10, 23, 10, 22, 11, 22, 11, 21, 12, 21, 12, 20, 13
DATA 14, 14, 14, 14, 19, 14, 19, 14
DATA 13, 14, 15, 16, 12, 16, 13, 17, 11, 17, 12, 18, 10, 18, 11, 19, 9, 19, 10, 20, 8, 20, 9, 21
DATA 20, 14, 18, 16, 21, 16, 20, 17, 22, 17, 21, 18, 23, 18, 22, 19, 24, 19, 23, 20, 25, 20, 24, 21
DATA 16, 4, 17, 9
DATA 0

lvls:
DATA 3000, 2600, 2200, 1800, 1400, 1000, 700, 400,200, 0


handler:
PRINT global$
SYSTEM
RESUME

FUNCTION ask$ (text$, x, y, max, mode)
COLOR 15
PRINTIT text$, x, y
startx = x + LEN(text$): x = (x + LEN(text$)) * 8
txtlen = 0
LINE (x, (y - 1) * 2 + y * 14 - 14)-(x, (y - 1) * 2 + y * 14), 7
txt$ = ""
DO
DO: LOOP UNTIL INKEY$ = ""
DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
COLOR 5
SELECT CASE a$
CASE CHR$(13): IF txt$ <> "" THEN EXIT DO
CASE CHR$(27)

ask$ = "exit": EXIT FUNCTION
CASE CHR$(0) + "P": ask$ = "down": EXIT FUNCTION
CASE CHR$(0) + "H": ask$ = "up": EXIT FUNCTION
CASE CHR$(8)
IF txtlen > 0 THEN
LOCATE y, startx + txtlen: PRINT SPACE$(max - txtlen + 2)
txtlen = txtlen - 1: IF txtlen = 0 THEN txt$ = "" ELSE txt$ = MID$(txt$, 1, txtlen)
COLOR 5
IF mode = 1 THEN LOCATE y, startx + 1: PRINT txt$ ELSE LOCATE y, startx + 1: PRINT STRING$(txtlen, "*")
LINE (x + (txtlen * 8), (y - 1) * 2 + y * 14 - 14)-(x + (txtlen * 8), (y - 1) * 2 + y * 14), 7
END IF
CASE ELSE
IF mode = 2 THEN minimum = 33: maximum = 126 ELSE minimum = 65: maximum = 90
IF ASC(UCASE$(a$)) >= minimum AND ASC(UCASE$(a$)) <= maximum AND txtlen <= max THEN
txtlen = txtlen + 1
IF txtlen <= max THEN
IF mode = 1 THEN LOCATE y, startx + txtlen: PRINT UCASE$(a$) ELSE LOCATE y, startx + txtlen: PRINT "*"
txt$ = txt$ + UCASE$(a$)
LINE (x + txtlen * 8, (y - 1) * 2 + y * 14 - 14)-(x + txtlen * 8, (y - 1) * 2 + y * 14), 7
ELSE
txtlen = max
END IF
END IF
END SELECT
LOOP
LINE (x + LEN(txt$) * 8, (y - 1) * 2 + y * 14 - 14)-(x + LEN(txt$) * 8, (y - 1) * 2 + y * 14), 3
ask$ = txt$
END FUNCTION

DEFSNG A-Z
SUB center (text$, y)
DIM letter(0 TO 199)
textlen = LEN(text$)
FOR i = 1 TO LEN(text$)
a$ = MID$(text$, i, 1)
IF a$ = "^" THEN textlen = textlen - 1
IF a$ = "-" THEN
textlen = textlen - 2
IF MID$(text$, i + 2, 1) = "-" THEN
textlen = textlen - 1: i = i + 3: GOTO 20
ELSE
textlen = textlen - 2: i = i + 4: GOTO 20
END IF
END IF
20
NEXT

s = 0
textlen = textlen * 8
startx = 320 - (textlen / 2)
y = (y - 1) * 2 + y * 14 - 14
c = 15
ii = 0
FOR i = 1 TO LEN(text$)
a$ = MID$(text$, i, 1)
IF a$ = "-" THEN
IF MID$(text$, i + 2, 1) = "-" THEN c = VAL(MID$(text$, i + 1, 1)): i = i + 2 ELSE c = VAL(MID$(text$, i + 1, 2)): i = i + 3
GOTO 21
END IF
IF a$ = "^" THEN s = 1: GOTO 21
ii = ii + 1
IF a$ = " " THEN
LINE (startx + (ii - 1) * 8, y)-(startx + (ii) * 8, y + 14), 3, BF
GOTO 21
END IF
z = ASC(a$)
SELECT CASE a$
CASE "=": z = 45
CASE "#": IF s = 1 THEN s = 0: z = 144 ELSE z = 130
CASE "@": IF s = 1 THEN s = 0: z = 143 ELSE z = 160
CASE "|": IF s = 1 THEN s = 0: z = 161 ELSE z = 161
CASE "$": IF s = 1 THEN s = 0: z = 162 ELSE z = 162
CASE "_": IF s = 1 THEN s = 0: z = 163 ELSE z = 163
CASE "<": IF s = 1 THEN s = 0: z = 153 ELSE z = 148
CASE ">": IF s = 1 THEN s = 0: z = 154 ELSE z = 129
END SELECT
DEF SEG = VARSEG(letter(0))
global$ = "letters\chr" + LTRIM$(RTRIM$(STR$(z))) + ".chr"
ON ERROR GOTO handler
BLOAD "letters\chr" + LTRIM$(RTRIM$(STR$(z))) + ".chr", VARPTR(letter(0))
DEF SEG
ON ERROR GOTO 0
x = startx + (ii - 1) * 8
SELECT CASE c
CASE 5: index = 160
CASE 8: index = 0
CASE 9: index = 120
CASE 12: index = 40
CASE 15: index = 80
END SELECT
global$ = STR$(x) + STR$(y) + STR$(index)
ON ERROR GOTO handler
IF y > 0 AND (z = 144 OR z = 143 OR z = 154 OR z = 153) THEN PUT (x, y - 2), letter(index), PSET ELSE PUT (x, y), letter(index), PSET
ON ERROR GOTO 0
21

NEXT

END SUB

DEFINT A-Z
SUB changeapp (i)
SELECT CASE i
CASE 1
SELECT CASE user.bg
CASE 1: PALETTE 0, 3 + 256 * 14 + 0 * 65536: PALETTE 3, 3 + 256 * 14 + 0 * 65536
CASE 2: PALETTE 0, 3 + 256 * 0 + 14 * 65536: PALETTE 3, 3 + 256 * 0 + 14 * 65536
CASE 3: PALETTE 0, 14 + 256 * 3 + 0 * 65536: PALETTE 3, 14 + 256 * 3 + 0 * 65536
CASE 4: PALETTE 0, 10 + 256 * 10 + 10 * 65536: PALETTE 3, 10 + 256 * 10 + 10 * 65536
CASE 5: PALETTE 0, 20 + 256 * 10 + 0 * 65536: PALETTE 3, 20 + 256 * 10 + 0 * 65536
END SELECT

CASE 2
SELECT CASE user.snakec
CASE 1: PALETTE 2, 0 + 256 * 42 + 0 * 65536
CASE 2: PALETTE 2, 55 + 256 * 55 + 0 * 65536
CASE 3: PALETTE 2, 49 + 256 * 38 + 13 * 65536
CASE 4: PALETTE 2, 0 + 256 * 0 + 0 * 65536
CASE 5: PALETTE 2, 55 + 256 * 55 + 55 * 65536
END SELECT

CASE 3
SELECT CASE user.spattern
CASE 1: PALETTE 6, 60 + 256 * 52 + 0 * 65536
CASE 2: PALETTE 6, 7 + 256 * 30 + 7 * 65536
CASE 3: PALETTE 6, 7 + 256 * 7 + 30 * 65536
CASE 4: PALETTE 6, 5 + 256 * 5 + 5 * 65536
CASE 5: PALETTE 6, 30 + 256 * 7 + 7 * 65536
END SELECT
END SELECT
END SUB

SUB clearground (mx, my)
y = 20
FOR x = 20 TO 360
LINE (x, y)-(639 - x, 479 - y), 5, B
IF y > 25 THEN
LINE (x - 6, y - 6)-(639 - (x - 6), 479 - (y - 6)), 3, B
END IF
y = y + 1
NEXT
LINE (20, 20)-(619, 459), 3, BF
END SUB

SUB customs
zap
center eng$(73, lang%), 12
mch(1) = 74
mch(2) = 77
mch(3) = 46
SELECT CASE MenuChoice%(3, 1, 15)
CASE 1
OPEN "profile.txt" FOR APPEND AS #11
PRINT #11, user.nickname
PRINT #11, lang%
PRINT #11, cpu#
CLOSE #11
CLS
logo
IF champdone = 1 THEN center eng$(70, lang%) + " " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)), 1
CLOSE
CHAIN "custom.bas"
CASE 2
zap
SHELL "dir /b maps\*.lvl > temp"
OPEN "temp" FOR INPUT AS #7
OPEN "maps.dat" FOR RANDOM AS #3 LEN = 14
counter = 0
DO WHILE NOT EOF(7)
counter = counter + 1
LINE INPUT #7, map$
PUT #3, counter, map$
LOOP
CLOSE #7
CLOSE #3
KILL "TEMP"
mark = 1
max = counter
OPEN "maps.dat" FOR RANDOM AS #3 LEN = 14
GET #3, mark, map$
center SPACE$(16), 12
center "-9-" + UCASE$(MID$(map$, 1, 1)) + LCASE$(MID$(map$, 2, LEN(map$) - 5)), 12
OPEN "maps\" + map$ FOR INPUT AS #4
FOR x = 1 TO 32
FOR y = 1 TO 24
INPUT #4, g
IF g = 1 THEN PUT (208 + (x - 1) * 7, 208 + (y - 1) * 7), sblock, PSET
NEXT
NEXT
CLOSE #4
DO
DO: a$ = INKEY$: LOOP UNTIL a$ = ""
DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
SELECT CASE a$
CASE CHR$(0) + "M": mark = mark + 1: center SPACE$(8), 10: IF mark > counter THEN mark = 1
CASE CHR$(0) + "K": mark = mark - 1: center SPACE$(8), 10: IF mark < 1 THEN mark = counter
CASE CHR$(13), CHR$(32): EXIT DO
CASE CHR$(27): CLOSE #3: KILL "maps.dat": zap: EXIT SUB
END SELECT
GET #3, mark, map$
center SPACE$(12), 12
center "-9-" + UCASE$(MID$(map$, 1, 1)) + LCASE$(MID$(map$, 2, LEN(map$) - 5)), 12
OPEN "maps\" + map$ FOR INPUT AS #4
FOR x = 1 TO 32
FOR y = 1 TO 24
INPUT #4, g
IF g = 1 THEN PUT (208 + (x - 1) * 7, 208 + (y - 1) * 7), sblock, PSET
IF g = 0 THEN LINE (208 + (x - 1) * 7, 208 + (y - 1) * 7)-(208 + (x - 1) * 7 + 6, 208 + (y - 1) * 7 + 6), 3, BF
NEXT
NEXT
CLOSE #4
LOOP
CLOSE #4
CLOSE #3
KILL "maps.dat"
score = 0: oldscore = 0: champ = 0: lives = 1: defscreen: speedlevel = 0: SPEEDset: playSNAKE: EXIT SUB
CASE 3: EXIT SUB
END SELECT
END SUB

SUB defscreen
CLS
PAINT (0, 0), 3
IF map$ = "" THEN
FOR col = 1 TO 32
PUTimage col, 1, block
PUTimage col, 24, block
NEXT col
FOR row = 2 TO 23
PUTimage 32, row, block
PUTimage 1, row, block
NEXT row
ELSE
OPEN "maps\" + map$ FOR INPUT AS #3
FOR col = 1 TO 32
FOR row = 1 TO 24
INPUT #3, ground(col, row)
IF ground(col, row) = 1 THEN PUTimage col, row, block ELSE PUTimage col, row, blank
NEXT
NEXT
CLOSE #3
END IF
PRINTIT "-4-" + eng$(10, lang%), 5, 3
PRINTIT "-4-" + eng$(11, lang%), 64, 3
COLOR 4
LOCATE 3, 36: PRINT "S N A K E"
LINE (27, 2)-(88, 17), 15, BF
LINE (276, 2)-(354, 17), 15, BF
LINE (500, 2)-(592, 17), 15, BF
FOR y = 30 TO 50
FOR x = 25 TO 560
IF POINT(x, y) = 4 THEN PSET (x, y - 29), 4: PSET (x + 1, y - 28), 7
NEXT
NEXT
LINE (25, 30)-(560, 50), 3, BF
PUT (80, 4), numSET(lives * 40), PSET
PUT (552, 4), numSET(0), PSET
PUT (560, 4), numSET(0), PSET
PUT (568, 4), numSET(0), PSET
PUT (576, 4), numSET(0), PSET
PUT (584, 4), numSET(0), PSET
COLOR 4
LOCATE 28, 62: PRINT "Peter Varnai"
PRINTIT "-4-" + eng$(12, lang%), 33, 28
LINE (254, 462)-(385, 477), 15, BF
FOR y = 426 TO 455
FOR x = 254 TO 639
IF POINT(x, y) = 4 THEN PSET (x, y + 30), 4: PSET (x + 1, y + 31), 7
NEXT
NEXT
showinfo 3, prey
LINE (254, 428)-(619, 455), 3, BF
END SUB

SUB drawJEP (lvl)
OPEN "files\lvl" + LTRIM$(RTRIM$(STR$(lvl))) + ".dat" FOR INPUT AS #9

maxx = 359: maxy = 410: x = 279: y = 341
DO

INPUT #9, counter, colr
IF counter = -1 THEN EXIT DO
28
FOR i = 1 TO counter
x = x + 1
IF x > maxx THEN x = 280: y = y + 1
PSET (x, y), colr
NEXT

LOOP
CLOSE #9
END SUB

SUB drawmove
GET #2, place(1), snake(1)
PUTimage snake(1).col, snake(1).row, head + snake(1).dir

GET #2, place(2), snake(1)
PUTimage snake(1).col, snake(1).row, neck + snake(1).TURN + snake(1).dir

GET #2, place(3), snake(1)
PUTimage snake(1).col, snake(1).row, shoulder + snake(1).TURN + snake(1).dir

GET #2, place(snakelength), snake(1)
IF snake(1).row <> 1 AND snake(1).col <> 1 THEN PUTimage snake(1).col, snake(1).row, blank


GET #2, place(snakelength - 1), snake(1)
GET #2, place(snakelength - 2), snake(2)
IF snake(2).TURN = 0 THEN
snake(1).dir = snake(2).dir
ELSE
snake(1).dir = snake(2).rdir
END IF
PUT #2, place(snakelength - 1), snake(1)
PUTimage snake(1).col, snake(1).row, rattle + snake(1).dir

GET #2, place(snakelength - 2), snake(1)
PUTimage snake(1).col, snake(1).row, tailEND + snake(1).TURN + snake(1).dir

GET #2, place(snakelength - 3), snake(1)
PUTimage snake(1).col, snake(1).row, tail + snake(1).TURN + snake(1).dir

GET #2, place(snakelength - 4), snake(1)
PUTimage snake(1).col, snake(1).row, neck + snake(1).TURN + snake(1).dir

GET #2, place(snakelength - 5), snake(1)
PUTimage snake(1).col, snake(1).row, shoulder + snake(1).TURN + snake(1).dir

PUTimage 1, 1, block
END SUB

FUNCTION eng$ (number, language)
SELECT CASE language
CASE 1
OPEN "files\english.txt" FOR RANDOM AS #10 LEN = 35
CASE 2
OPEN "files\magyar.txt" FOR RANDOM AS #10 LEN = 35
END SELECT
GET #10, number, t$
CLOSE #10
eng$ = LTRIM$(RTRIM$((t$)))

END FUNCTION

SUB highscores (index)
logo
IF champdone = 1 THEN center eng$(70, lang%) + " " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)), 1
' index = 1 --> show the highscores
' index = 2 --> write to AND show the highscores
OPEN "files\snake.top" FOR RANDOM AS #1 LEN = LEN(top(1))
FOR topers = 1 TO 10
GET #1, topers, top(topers)
NEXT
CLOSE #1

user.avscore = ((CLNG(user.avscore * user.gplayed + score)) / (user.gplayed + 1)
testlevel
user.gplayed = user.gplayed + 1
IF index = 1 THEN GOTO 2
IF users > 0 THEN
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(user)
PUT #1, usernumber, user
CLOSE #1
END IF

FOR i = 1 TO 10
IF score >= top(i).score THEN
mark = i
FOR ii = 9 TO i STEP -1
top(ii + 1).score = top(ii).score
top(ii + 1).playdate = top(ii).playdate
top(ii + 1).nickname = top(ii).nickname
NEXT ii
center "-12-" + eng$(32, lang%), 11
COLOR 15: center eng$(33, lang%), 13
inputname:
IF usernumber < 5 THEN
DO: LOOP UNTIL INKEY$ = ""
COLOR 15
pname$ = ask$(eng$(34, lang%), 32, 16, 16, 1)
IF pname$ = "exit" OR pname$ = "up" OR pname$ = "down" OR pname$ = "" THEN GOSUB inputname
LINE ((43 + LEN(pname$)) * 8, 240)-((43 + LEN(pname$)) * 8, 254), 3
pname$ = UCASE$(MID$(pname$, 1, 1)) + LCASE$(MID$(pname$, 2, LEN(pname$) - 1))
ELSE
pname$ = UCASE$(MID$(user.nickname, 1, 1)) + LCASE$(MID$(user.nickname, 2, LEN(user.nickname) - 1))
END IF
top(i).nickname = pname$
top(i).playdate = DATE$
top(i).score = score
OPEN "files\snake.top" FOR RANDOM AS #1 LEN = LEN(top(1))
FOR iii = 1 TO 10
PUT #1, iii, top(iii)
NEXT iii
CLOSE #1
GOTO 2
END IF
NEXT i
COLOR 9
center eng$(30, lang%), 11
COLOR 15
center eng$(31, lang%), 13
mch(1) = 4
mch(2) = 22
mch(3) = 8
SELECT CASE MenuChoice%(3, 1, 16)
CASE 1: highscores 1: EXIT SUB
CASE 2: EXIT SUB
CASE 3: CLOSE #2: KILL "files\snake.tem": SYSTEM
END SELECT
2
LINE (100, 140)-(540, 470), 3, BF
COLOR 15
PRINTIT eng$(40, lang%), 24, 12
PRINTIT eng$(41, lang%), 42, 12
PRINTIT eng$(11, lang%), 54, 12
FOR topers = 1 TO 10
IF topers = mark THEN c = 9 ELSE c = 7
LOCATE topers + 12, 21
IF topers < 10 THEN g = 2 ELSE g = 1
COLOR 4
PRINT LTRIM$(RTRIM$(STR$(topers))); ".";
COLOR c: PRINT SPACE$(g); LEFT$(top(topers).nickname, 16); " "; top(topers).playdate; " "; top(topers).score
NEXT

FOR y = 175 TO 351 STEP 16
LINE (158, y)-(482, y), 2
NEXT
LINE (157, 174)-(483, 352), 2, B
LINE (158, 176)-(158, 350), 2: LINE (482, 176)-(482, 350), 2
LINE (319, 176)-(319, 350), 2: LINE (320, 176)-(320, 350), 2
LINE (412, 176)-(412, 350), 2: LINE (413, 176)-(413, 350), 2
center "-15-" + "[ -5-" + eng$(22, lang%) + "-15- ]", 25
DO: a$ = INKEY$: LOOP UNTIL a$ = CHR$(13) OR a$ = CHR$(32) OR a$ = CHR$(27)
SOUND 150, 1
zap
END SUB

SUB initialize
CLOSE #2
OPEN "files\snake.tem" FOR RANDOM AS #2 LEN = LEN(snake(1))
IF map$ = "" THEN
ERASE ground
FOR col = 1 TO 32
ground(col, 1) = -2
ground(col, 24) = -2
NEXT col
FOR row = 2 TO 23
ground(1, row) = -2
ground(32, row) = -2
NEXT row
FOR y = 2 TO 23
FOR x = 2 TO 31
ground(x, y) = 0
NEXT
NEXT
END IF
oldlength = 16
snakelength = 16
x = 24
FOR i = 1 TO snakelength
x = x - 1
snake(1).col = x
snake(1).row = 23
snake(1).TURN = 0
snake(1).dir = east
SELECT CASE i
CASE 1: index = head
CASE 2: index = neck
CASE 3: index = shoulder
CASE 4: index = body
CASE 5: index = body
CASE 6: index = body
CASE 7: index = body
CASE 8: index = body
CASE 9: index = body
CASE 10: index = body
CASE 11: index = shoulder
CASE 12: index = neck
CASE 13: index = tail
CASE 14: index = tailEND
CASE 15: index = rattle
CASE 16
index = blank
END SELECT
ground(x, 23) = -1

PUTimage x, 23, index + snake(1).dir
PUT #2, i, snake(1)
NEXT i
ground(x, 23) = 0
END SUB

SUB instructions
page = 1
maxpage = 8
DO
center eng$(72, lang%), 10
LINE (70, 134)-(568, 400), 7, B
LINE (68, 132)-(570, 402), 7, B
OPEN "files\page" + LTRIM$(RTRIM$(STR$(page))) + ".txt" FOR INPUT AS #9
FOR i! = 1 TO 7
INPUT #9, english$
INPUT #9, magyar$
IF lang% = 1 THEN CALL center(english$, i! * 2 + 10) ELSE CALL center(magyar$, i! * 2 + 10)
NEXT i!
PRINTIT "-5-" + LTRIM$(RTRIM$(STR$(page))), 70, 27
IF page = 8 THEN
LOCATE 16, 21: COLOR 9: PRINT CHR$(64)
COLOR 5: LOCATE 27, 59: PRINT "Peter Varnai"
IF lang% = 2 THEN PRINTIT "-5-V@rnai P#ter", 59, 27
END IF
29
DO: LOOP UNTIL INKEY$ = ""
DO: a$ = INKEY$: LOOP WHILE a$ = ""
SELECT CASE a$

CASE CHR$(27): CLOSE #9: SYSTEM
CASE CHR$(8), CHR$(13), CHR$(32): CLOSE #9: zap: EXIT SUB
CASE CHR$(0) + "M"
page = page + 1: IF page > maxpage THEN SOUND 150, 4: page = maxpage ELSE zap
CASE CHR$(0) + "K"
page = page - 1: IF page < 1 THEN SOUND 150, 4: page = 1 ELSE zap
CASE "1", "2", "3", "4", "5", "6", "7", "8"
PRINTIT SPACE$(15), 59, 27
page = VAL(a$)
CASE ELSE: GOTO 29
END SELECT
CLOSE #9
LOOP
END SUB

SUB login
LINE (0, 130)-(639, 479), 3, BF
mch(1) = 66
mch(2) = 67
mch(3) = 46
18
SELECT CASE MenuChoice(3, 1, 11)
CASE 3: EXIT SUB
CASE 2
usernumber = 2
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(user)
GET #1, 4, user
CLOSE #1
changeapp 1: changeapp 2: changeapp 3
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(usernumber)
PUT #1, 2, usernumber
CLOSE #1
LINE (0, 130)-(639, 479), 3, BF
center SPACE$(65), 1
center eng$(70, lang%) + " " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)), 1
EXIT SUB
END SELECT
pname$ = ask$(eng$(68, lang%), 30, 24, 16, 1)
LINE ((40 + LEN(pname$)) * 8, 368)-((40 + LEN(pname$)) * 8, 382), 3
SELECT CASE pname$
CASE "exit": center SPACE$(35), 24: a$ = "": GOTO 18
CASE "down": a$ = CHR$(0) + "P": center SPACE$(35), 24: GOTO 18
CASE "up": a$ = CHR$(0) + "H": center SPACE$(35), 24: GOTO 18
CASE ELSE
GOTO 10
END SELECT
10
pass$ = ask$(eng$(56, lang%), 31, 25, 8, 2)
center SPACE$(35), 25
center SPACE$(35), 24
SELECT CASE pass$
CASE "exit": a$ = "": GOTO 18
CASE "down": a$ = CHR$(0) + "P": GOTO 18
CASE "up": a$ = CHR$(0) + "H": GOTO 18
CASE ELSE
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(user)
FOR i = 5 TO 4 + users
GET #1, i, user
IF RTRIM$(user.nickname) = pname$ AND RTRIM$(user.password) = pass$ THEN
CLOSE #1
usernumber = i
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(usernumber)
PUT #1, 2, usernumber
CLOSE #1
changeapp 1: changeapp 2: changeapp 3
LINE (0, 130)-(639, 479), 3, BF
center SPACE$(65), 1
center eng$(70, lang%) + " " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)), 1
EXIT SUB
END IF
NEXT
END SELECT
GET #1, usernumber, user
center SPACE$(30), 24
center SPACE$(30), 25
center "-12-" + eng$(69, lang%), 25
t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#
center SPACE$(35), 25
CLOSE #1
a$ = "": GOTO 18
END SUB

SUB logo
' S N A K E logo
RESTORE intro
PALETTE 1, 45
LINE (0, 0)-(639, 479), 3, BF
FOR i = 1 TO 5
READ startx: READ starty
READ counter
FOR n = 1 TO counter
READ x: READ y
LINE (startx, starty)-(x, y), 1
startx = x: starty = y
NEXT
READ px, py: PAINT (px, py), 1, 1
NEXT
LINE (300, 70)-(340, 85), 1, BF
IF champdone = 1 THEN center eng$(9, lang%) + ", " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)) + "!", 1
END SUB

SUB mainmenu (mark)
4
CLS

logo
IF mark = 1 THEN
x = 0
DO
x = x + 1
g = 0: r = 45
FOR c = 1 TO 15
PALETTE 1, (r - c * 3) + (g + c * 3) * 256
t# = TIMER + .05: WHILE t# > TIMER: WEND
NEXT
FOR c = 15 TO 1 STEP -1
PALETTE 1, (r - c * 3) + (g + c * 3) * 256
t# = TIMER + .05: WHILE t# > TIMER: WEND
NEXT
LOOP UNTIL x = 1
END IF

PALETTE 1, 45

OUT &HC8, 0
OUT &HC9, 3
OUT &HC9, 14
OUT &HC9, 0
IF mark = 1 THEN

'Small movie
OPEN "files\movie2.dat" FOR INPUT AS #2
OPEN "files\movie.dat" FOR RANDOM AS #1 LEN = LEN(film)
DO
a$ = INKEY$
INPUT #2, startf: INPUT #2, endf
IF startf = -1 THEN EXIT DO
FOR i = startf TO endf
INPUT #2, index
GET #1, i, film
IF index = 6500 THEN index = 6625
tempx = film.x: tempy = film.y
PUTimage tempx, tempy, index
NEXT
FOR rep = 1 TO 2
WAIT &H3DA, 8
WAIT &H3DA, 8, 8
NEXT
IF a$ <> "" THEN PAINT (0, 0), 3: logo: EXIT DO
LOOP
CLOSE #1
CLOSE #2
END IF
level = 0: champ = 0
center SPACE$(65), 1
DO
IF champdone = 1 THEN center eng$(70, lang%) + " " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)), 1
score = 0
prey = 0
mark = 1
6
mch(1) = 1
mch(2) = 2
mch(3) = 3
mch(4) = 4
mch(5) = 5
mch(6) = 6
IF champdone = 1 AND users <> 0 THEN mch(7) = 7 ELSE mch(7) = 0
IF champdone = 1 AND usernumber > 4 THEN mch(8) = 71 ELSE mch(8) = 0
IF champdone = 1 AND usernumber > 4 THEN mch(9) = 76 ELSE mch(9) = 0
mch(10) = 8
SELECT CASE MenuChoice%(10, mark, 12)
CASE 1
map$ = ""
score = 0: oldscore = 0: champ = 0: lives = 1: defscreen: speedlevel = 0: SPEEDset: playSNAKE: EXIT SUB
CASE 2
map$ = ""
champ = 1: prey = 10: showinfo 3, prey: level = 1: score = 0: oldscore = 0: lives = 5: defscreen: speedlevel = 0: SPEEDset: playSNAKE: EXIT SUB
CASE 3
map$ = ""
GOSUB pass
CASE 4
highscores 1
mark = 4
GOTO 6
CASE 5
options
CASE 6
zap
instructions
mark = 6
GOTO 6
CASE 7
login
LINE (0, 130)-(639, 479), 3, BF
mark = 7
GOTO 6
CASE 8
SELECT CASE user.level
CASE 1: nextlvl = 200
CASE 2: nextlvl = 400
CASE 3: nextlvl = 700
CASE 4: nextlvl = 1000
CASE 5: nextlvl = 1400
CASE 6: nextlvl = 1800
CASE 7: nextlvl = 2200
CASE 8: nextlvl = 2600
CASE 9: nextlvl = 3000
CASE 10: nextlvl = 0
END SELECT
OPEN "profile.txt" FOR APPEND AS #11
PRINT #11, user.nickname
PRINT #11, user.avscore
PRINT #11, user.gplayed
PRINT #11, user.level
PRINT #11, lang%
PRINT #11, LTRIM$(RTRIM$(STR$(nextlvl)))
PRINT #11, cpu#
CLOSE #11
CLS
logo
IF champdone = 1 THEN center eng$(70, lang%) + " " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)), 1
drawJEP (user.level)
CHAIN "profile.bas"
CASE 9
customs
map$ = ""
zap
mark = 9: GOTO 6
CASE 10
CLOSE #2: KILL "files\snake.tem": SYSTEM
EXIT SUB
END SELECT
LOOP
pass:
center SPACE$(25), 16
DO
LOCATE 16, 38: PRINT SPACE$(6)
pass$ = ask$("", 38, 16, 5, 2)
SELECT CASE pass$
CASE "down": center eng$(3, lang%), 16: a$ = CHR$(0) + "P": GOTO 6
CASE "up": center eng$(3, lang%), 16: a$ = CHR$(0) + "H": GOTO 6
CASE "exit": a$ = "": GOTO 6
CASE ELSE: EXIT DO
END SELECT
LOOP
FOR i = 1 TO 10
IF pass$ = top(i).id THEN
champ = 1: prey = 10: showinfo 3, prey: level = i: lives = 5: score = 0: oldscore = 0: defscreen: SPEEDset: playSNAKE: EXIT SUB
END IF
NEXT
SOUND 60, 10
LOCATE 16, 39: COLOR 4: PRINT "-----": t# = TIMER + 2: DO: LOOP UNTIL TIMER >= t#
mark = 3
GOTO 6

END SUB

FUNCTION MenuChoice% (selections, start, xstart)
sel = start
CONST MenuBright = "-15-"
CONST MenuDull = "-8-"
DO
FOR i = 1 TO selections
IF mch(i) > 0 THEN
w$ = eng$(mch(i), lang%)
IF i = sel THEN w$ = MenuBright + "[ " + "-5-" + w$ + MenuBright + " ]" ELSE w$ = MenuDull + " " + w$ + " "
center w$, xstart + ((i - 1) * 2)
END IF
NEXT i
DO: LOOP UNTIL INKEY$ = "": DO: a$ = UCASE$(INKEY$): LOOP WHILE a$ = ""

SOUND 150, 1
SELECT CASE a$
CASE CHR$(27): SYSTEM
CASE CHR$(0) + "P":
DO
sel = sel + 1: IF sel > selections THEN sel = 1
LOOP WHILE mch(sel) = 0
CASE CHR$(0) + "H":
DO
sel = sel - 1: IF sel < 1 THEN sel = selections
LOOP WHILE mch(sel) = 0
CASE CHR$(13), CHR$(32): side$ = "": EXIT DO
CASE CHR$(0) + "K": IF side$ = "?" THEN side$ = "-": EXIT DO
CASE CHR$(0) + "M": IF side$ = "?" THEN side$ = "+": EXIT DO
END SELECT
t# = TIMER + .05: DO: LOOP UNTIL TIMER >= t#
LOOP

MenuChoice% = sel
END FUNCTION

SUB options
16
LINE (0, 130)-(639, 479), 3, BF
center eng$(42, lang%), 11
mch(1) = 43
IF champdone = 1 THEN
IF user.lvlreached >= 3 AND usernumber > 4 THEN mch(3) = 47 ELSE mch(3) = 0
mch(2) = 52
ELSE
mch(2) = 0
mch(3) = 0
END IF
mch(4) = 22
mark = MenuChoice%(4, 1, 15)
settings mark
IF mark = 4 THEN LINE (0, 130)-(639, 479), 3, BF: EXIT SUB
GOTO 16
END SUB

FUNCTION place (x)
begin = start
FOR i = 2 TO x STEP 1
begin = begin + 1: IF begin > snakelength THEN begin = 1
NEXT
place = begin
END FUNCTION

SUB playSNAKE
IF user.lvlreached > 4 THEN flag = 2 ELSE flag = 1
3
showinfo 3, prey
death$ = ""
1
rats = 0
IF death$ <> "" THEN
IF lives = 0 THEN score = score + INT((score / 30)) * user.rats: showinfo 2, score
GET (199, 89)-(441, 308), background
LINE (199, 89)-(441, 308), 3, BF
LINE (199, 89)-(441, 308), 7, B
LINE (201, 91)-(439, 306), 7, B

COLOR 15: center death$, 9
IF lives = 0 THEN center eng$(28, lang%), 11: center eng$(29, lang%), 13
IF lives = 0 THEN
mch(1) = 22
IF MenuChoice%(1, 1, 16) = 1 THEN highscores 2: EXIT SUB
END IF
IF lives > 0 THEN mch(1) = 37: mark = 1 ELSE mch(1) = 0: mark = 2
mch(2) = 22
IF MenuChoice%(2, mark, 13) = 2 THEN EXIT SUB
PUT (199, 89), background, PSET
clearground mcol, mrow
IF lives = 0 THEN highscores 2: EXIT SUB
END IF
death$ = ""
initialize
IF champ = 1 THEN score = oldscore: showinfo 2, score
IF champ = 1 THEN IF setuplevel = 2 THEN EXIT SUB
realspeed = SPEED!
IF champ = 0 THEN
GET (199, 89)-(441, 308), background
FOR i = 3 TO 1 STEP -1
center eng$(19, lang%) + STR$(i) + "...", 13
t# = TIMER + 1: DO: LOOP UNTIL TIMER >= t#
NEXT
PUT (199, 89), background, PSET
END IF
GOSUB PUTmouse
col = 23: row = 23
colchange = 1: rowchange = 0
direction = east: oldd = east
plusl = 0
start = 1

DO: LOOP UNTIL INKEY$ = ""
FOR r = 1 TO 10
GOSUB rattle
NEXT r

DO

startplay:
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "M"
IF colchange <> -1 THEN colchange = 1: rowchange = 0: direction = east
CASE CHR$(0) + "P"
IF rowchange <> -1 THEN rowchange = 1: colchange = 0: direction = south
CASE CHR$(0) + "K"
IF colchange <> 1 THEN colchange = -1: rowchange = 0: direction = west
CASE CHR$(0) + "H"
IF rowchange <> 1 THEN rowchange = -1: colchange = 0: direction = north
CASE CHR$(32)
GOSUB pausemenu
CASE CHR$(27)
GOSUB pausemenu
CASE CHR$(13)
GOSUB pausemenu
CASE "p"
GOSUB pausemenu
END SELECT
IF champ = 1 THEN
IF prey = 0 THEN oldscore = score: showinfo 2, score: level = level + 1: clearground mcol, mrow: prey = 10: GOTO 3
END IF
IF ground(col + colchange, row + rowchange) < 0 THEN
t# = TIMER + .1
DO
a$ = INKEY$
SELECT CASE a$
CASE CHR$(0) + "M"
IF colchange <> -1 THEN colchange = 1: rowchange = 0: direction = east: EXIT DO
CASE CHR$(0) + "P"
IF rowchange <> -1 THEN rowchange = 1: colchange = 0: direction = south: EXIT DO
CASE CHR$(0) + "K"
IF colchange <> 1 THEN colchange = -1: rowchange = 0: direction = west: EXIT DO
CASE CHR$(0) + "H"
IF rowchange <> 1 THEN rowchange = -1: colchange = 0: direction = north: EXIT DO
END SELECT
LOOP UNTIL TIMER > t#
END IF
row = row + rowchange: col = col + colchange
IF rats < user.rats THEN IF INT(RND * 100) = 2 THEN GOSUB PUTrat

'lengthen
IF plusl THEN
OPEN "store.txt" FOR RANDOM AS #3 LEN = LEN(snake(1))
FOR i = 1 TO snakelength
GET #2, place(i), snake(1)
PUT #3, i, snake(1)
NEXT
snakelength = snakelength + 1
ground(snake(1).col, snake(1).row) = 0
FOR i = 1 TO snakelength
GET #3, i, snake(1)
IF i = snakelength THEN snake(1).col = 1: snake(1).row = 1
PUT #2, i, snake(1)
NEXT
start = 1
CLOSE #3: KILL "store.txt"
plusl = plusl - 1
END IF
oldstart = start
GET #2, oldstart, snake(1)
snake(2).col = col
snake(2).row = row
snake(2).TURN = 0
snake(2).dir = direction
snake(2).rdir = direction
start = start - 1: IF start = 0 THEN start = snakelength
GET #2, start, snake(1)
ground(snake(1).col, snake(1).row) = 0
PUT #2, start, snake(2)

IF direction <> oldd THEN
GET #2, oldstart, snake(1)
snake(1).TURN = TURN
SELECT CASE oldd
CASE north
IF direction = east THEN snake(1).dir = NE
IF direction = west THEN snake(1).dir = NW
snake(1).rdir = north
CASE east
IF direction = north THEN snake(1).dir = EN
IF direction = south THEN snake(1).dir = ES
snake(1).rdir = east
CASE south
IF direction = east THEN snake(1).dir = SE
IF direction = west THEN snake(1).dir = SW
snake(1).rdir = south
CASE west
IF direction = north THEN snake(1).dir = WN
IF direction = south THEN snake(1).dir = WS
snake(1).rdir = west
END SELECT
PUT #2, oldstart, snake(1)
END IF
oldd = direction
IF ground(col, row) < 0 THEN
lives = lives - 1: showinfo 1, lives
IF ground(col, row) = -2 THEN death$ = "-12-*-15- " + eng$(25, lang%) + "-12- *"
IF ground(col, row) = -1 THEN death$ = "-12-*-15- " + eng$(26, lang%) + "-12- *"
GOTO 1
END IF
27
IF ground(col, row) = 1000 THEN
IF direction = mdirection THEN
score = score + speedlevel * 10: showinfo 2, score
IF champ = 0 THEN prey = prey + 1: showinfo 3, prey
IF champ = 1 THEN prey = prey - 1: showinfo 3, prey
PLAY "MBT80L64O6D-E-E"
IF champ = 1 THEN plusl = plusl + 4
plusl = plusl + 1: GOSUB PUTmouse
ELSE
GOSUB PUTmouse
END IF
END IF
IF ground(col, row) = 2000 THEN
PLAY "MBMST128L64O2D-E-E"
randomdeath = INT(RND * 10) + 1
score = score - 50: IF score < 0 THEN score = 0
showinfo 2, score
rats = rats - 1
IF randomdeath < 3 THEN lives = lives - 1: showinfo 1, lives: death$ = "-12-*-15-" + eng$(27, lang%) + "-12-*": GOTO 1
plusl = plusl + 10
END IF
drawmove

FOR i! = 1 TO realspeed: NEXT


LOOP


PUTmouse:
GET #2, place(snakelength), snake(1)
ground(snake(1).col, snake(1).row) = 1
DO
mcol = INT(RND * 30) + 2
mrow = INT(RND * 22) + 2
LOOP UNTIL ground(mcol, mrow) = 0
mdirection = INT(RND * 4) * 125
IF user.lvlreached > 4 THEN IF flag = 1 THEN flag = 2 ELSE flag = 1
IF flag = 1 THEN PUTimage mcol, mrow, mouse + mdirection
IF flag = 2 THEN PUTimage mcol, mrow, frog + mdirection
ground(mcol, mrow) = 1000
ground(snake(1).col, snake(1).row) = 0
PUT #2, place(snakelength), snake(1)
RETURN

PUTrat:
DO
rcol = INT(RND * 30) + 2
rrow = INT(RND * 22) + 2
LOOP UNTIL ground(rcol, rrow) = 0
PUTimage rcol, rrow, rat
ground(rcol, rrow) = 2000
rats = rats + 1
RETURN

rattle:
PUT (160, 438), imageSET(rattle + east), PSET
GOSUB cd
PUT (160, 440), imageSET(rattle + east), PSET
GOSUB cd
PUT (160, 442), imageSET(rattle + east), PSET
GOSUB cd
PUT (160, 440), imageSET(rattle + east), PSET
GOSUB cd
IF ground(9, 22) < 0 THEN PUTimage 9, 22, block
IF ground(9, 24) < 0 THEN PUTimage 9, 24, block
IF ground(9, 22) = 1000 THEN PUTimage mcol, mrow, mouse + mdirection
RETURN

cd:
PLAY "MFMST255L64O1CD"
RETURN


pausemenu:

GET (199, 89)-(441, 308), background
mark = 1
7
LINE (199, 89)-(441, 308), 3, BF
LINE (199, 89)-(441, 308), 7, B
LINE (201, 91)-(439, 306), 7, B
center eng$(20, lang%), 9
mch(1) = 21
mch(2) = 22
mch(3) = 23
mch(4) = 8
DO
mark = MenuChoice%(4, mark, 12)
LOOP UNTIL side$ = ""
SELECT CASE mark
CASE 1
PUT (199, 89), background, PSET
FOR i = 3 TO 1 STEP -1
center eng$(24, lang%) + STR$(i) + "...", 13
t# = TIMER + 1
DO: LOOP UNTIL TIMER >= t#
NEXT
PUT (199, 89), background, PSET
t# = TIMER + .05: DO: LOOP UNTIL TIMER > t#
RETURN
CASE 2
EXIT SUB
CASE 3
SPEEDset
realspeed = SPEED!: mark = 3: GOTO 7
CASE 4
CLOSE #2: KILL "files\snake.tem": SYSTEM
RETURN
END SELECT
END SUB

SUB PRINTIT (text$, x, y)
textlen = LEN(text$)
FOR i = 1 TO LEN(text$)
a$ = MID$(text$, i, 1)
IF a$ = "^" THEN textlen = textlen - 1
IF a$ = "-" THEN
textlen = textlen - 2
IF MID$(text$, i + 2, 1) = "-" THEN
textlen = textlen - 1: i = i + 3: GOTO 25
ELSE
textlen = textlen - 2: i = i + 4: GOTO 25
END IF
END IF
25
NEXT
s = 0
c = 15
ii = 0
FOR i = 1 TO LEN(text$)
a$ = MID$(text$, i, 1)
IF a$ = "-" THEN
IF MID$(text$, i + 2, 1) = "-" THEN c = VAL(MID$(text$, i + 1, 1)): i = i + 2 ELSE c = VAL(MID$(text$, i + 1, 2)): i = i + 3
GOTO 26
END IF
IF a$ = "^" THEN s = 1: GOTO 26
ii = ii + 1
z = ASC(a$)
SELECT CASE a$
CASE "=": z = 45
CASE "#": IF s = 1 THEN s = 0: z = 144 ELSE z = 130
CASE "@": IF s = 1 THEN s = 0: z = 143 ELSE z = 160
CASE "|": IF s = 1 THEN s = 0: z = 161 ELSE z = 161
CASE "$": IF s = 1 THEN s = 0: z = 162 ELSE z = 162
CASE "_": IF s = 1 THEN s = 0: z = 163 ELSE z = 163
CASE "<": IF s = 1 THEN s = 0: z = 153 ELSE z = 148
CASE ">": IF s = 1 THEN s = 0: z = 154 ELSE z = 129
END SELECT
COLOR c
LOCATE y, x + ii - 1: PRINT CHR$(z)
26
NEXT

END SUB

SUB PUTimage (col, row, index)
x = (col - 1) * 20
y = (row - 1) * 20
PUT (x, y), imageSET(index), PSET
IF index < 6000 THEN ground(col, row) = -1
IF index = block THEN ground(col, row) = -2
END SUB

SUB restorecolors
RESTORE Paletteinfo
FOR n = 0 TO 15
READ red, green, blue
OUT &H3C8, n
OUT &H3C9, red
OUT &H3C9, green
OUT &H3C9, blue
NEXT

END SUB

SUB settings (i)
LINE (0, 130)-(639, 479), 3, BF

SELECT CASE i
CASE 1
mch(1) = 44
mch(2) = 45
mark = 2
CASE 2
mch(1) = 53
IF users > 0 THEN
mch(2) = 54
mch(3) = 55
ELSE
mch(2) = 0
mch(3) = 0
END IF
mch(4) = 46
mark = 4
CASE 3
mch(1) = 48
IF user.lvlreached < 4 THEN mch(2) = 0 ELSE mch(2) = 49
IF user.lvlreached < 6 THEN mch(3) = 0 ELSE mch(3) = 50
IF user.lvlreached < 7 THEN mch(4) = 0 ELSE mch(4) = 51
mch(5) = 46
mark = 5
center "-12-" + SPACE$(14) + STR$(user.rats), 12
PUTimage 24, 10, head + north: PUTimage 24, 11, neck + north: PUTimage 24, 12, shoulder + north
PUTimage 24, 13, body + north: PUTimage 24, 14, shoulder + north: PUTimage 24, 15, neck + north
PUTimage 24, 16, tail + north: PUTimage 24, 17, tailEND + north: PUTimage 24, 18, rattle + north

CASE 4: EXIT SUB
END SELECT
8
SELECT CASE i
CASE 1
LINE (0, 130)-(639, 479), 3, BF
lang% = MenuChoice%(mark, lang%, 12)
zap
center eng$(42, lang%), 11
user.language = lang%
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(user)
IF usernumber > 4 THEN PUT #1, usernumber, user
CLOSE #1
EXIT SUB
CASE 2
SELECT CASE MenuChoice%(4, 1, 15)
CASE 1: oldnumber = usernumber: GOSUB create
CASE 2: oldnumber = usernumber: GOSUB change
CASE 3: oldnumber = usernumber: GOSUB delete
CASE 4
EXIT SUB
END SELECT

CASE 3
mmark = 1
DO
side$ = "?"
mmark = MenuChoice%(mark, mmark, 12)
lrmark = 0
IF side$ = "-" THEN lrmark = -1
IF side$ = "+" THEN lrmark = 1
SELECT CASE mmark
CASE 1
user.rats = user.rats + lrmark: IF user.rats > 5 THEN user.rats = 0
IF user.rats < 0 THEN user.rats = 5
center "-12-" + SPACE$(14) + STR$(user.rats), 12
CASE 2
user.bg = user.bg + lrmark: IF user.bg > 5 THEN user.bg = 1
IF user.bg < 1 THEN user.bg = 5
changeapp 1
CASE 3
user.snakec = user.snakec + lrmark: IF user.snakec > 5 THEN user.snakec = 1
IF user.snakec < 1 THEN user.snakec = 5
changeapp 2
CASE 4
user.spattern = user.spattern + lrmark: IF user.spattern > 5 THEN user.spattern = 1
IF user.spattern < 1 THEN user.spattern = 5
changeapp 3
CASE 5
IF side$ = "" THEN EXIT DO
END SELECT
LOOP
IF usernumber > 4 THEN
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(user)
PUT #1, usernumber, user
CLOSE #1
END IF
EXIT SUB
END SELECT

create:
IF lrmark <> 0 THEN a$ = "": GOTO 8
LINE (0, 130)-(639, 479), 3, BF
DO
LOCATE 16, 30: PRINT SPACE$(33)
pname$ = ask$(eng$(34, lang%), 30, 16, 16, 1)
SELECT CASE pname$
CASE "exit": a$ = "": LINE (0, 130)-(639, 479), 3, BF: GOTO 8
CASE "down"
CASE "up"
CASE ELSE: EXIT DO
END SELECT
LOOP
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(user)
FOR n = 1 TO users
GET #1, n + 4, user
IF RTRIM$(user.nickname) = pname$ THEN center "-12-" + eng$(60, lang%), 17: SOUND 60, 5: t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#: center SPACE$(25), 17: GET #1, oldnumber, user: CLOSE #1: GOSUB create
NEXT
GET #1, usernumber, user
CLOSE #1
DO
center SPACE$(55), 19
center SPACE$(55), 21
9
pass$ = ask$(eng$(3, lang%) + ":", 28, 19, 8, 2)
IF pass$ = "exit" THEN a$ = "": LINE (0, 130)-(639, 479), 3, BF: GOTO 8
IF pass$ = "down" OR pass$ = "up" THEN LOCATE 25, 35: PRINT SPACE$(25): GOTO 9
11
repass$ = ask$(eng$(57, lang%), 26, 21, 8, 2)
IF repass$ = pass$ THEN EXIT DO
IF repass$ = "exit" THEN a$ = "": LINE (0, 130)-(639, 479), 3, BF: GOTO 8
IF repass$ <> "down" AND repass$ <> "up" THEN
SOUND 60, 5
center "-12-" + eng$(59, lang%), 24
t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#
center SPACE$(30), 24
ELSE
center SPACE$(30), 24
GOTO 11
END IF
LOOP

user.nickname = pname$
user.password = pass$
user.level = 1
user.avscore = 0
user.gplayed = 0
user.lvlreached = 1
user.language = lang%
user.gmode = 1
user.rats = 3
user.bg = 1
user.snakec = 1
user.spattern = 1
users = users + 1: usernumber = 4 + users
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(user)
PUT #1, 4 + users, user
CLOSE #1
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(users)
PUT #1, 2, usernumber
PUT #1, 3, users
CLOSE #1
IF users > 0 THEN
mch(2) = 54
mch(3) = 55
ELSE
mch(2) = 0
mch(3) = 0
END IF
center SPACE$(65), 1
center eng$(70, lang) + " " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)), 1
changeapp 1: changeapp 2: changeapp 3
LINE (0, 130)-(639, 479), 3, BF: GOTO 8

change:
IF lrmark <> 0 THEN a$ = "": GOTO 8

LINE (0, 130)-(639, 479), 3, BF
DO
LOCATE 16, 30: PRINT SPACE$(53)
pname$ = ask$(eng$(34, lang%), 30, 16, 16, 1)
SELECT CASE pname$
CASE "exit": a$ = "": LINE (0, 130)-(639, 479), 3, BF: GOTO 8
CASE "down"
CASE "up"
CASE ELSE: EXIT DO
END SELECT
LOOP
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(user)
FOR n = 1 TO users
GET #1, n + 4, user
IF RTRIM$(user.nickname) = pname$ THEN usernumber = n + 4: GOTO 15
NEXT
center "-12-" + eng$(61, lang%), 17: usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#: center SPACE$(55), 17: GOSUB change
15
GET #1, usernumber, user
DO
center SPACE$(50), 19
pass$ = ask$(eng$(56, lang%), 28, 19, 8, 2)
SELECT CASE pass$
CASE "exit": a$ = "": LINE (0, 130)-(639, 479), 3, BF: usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: GOTO 8
CASE "down"
CASE "up"
CASE ELSE
IF pass$ <> RTRIM$(user.password) THEN center "-12-" + eng$(58, lang%), 20: t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#: center SPACE$(50), 20: GOTO 15
GOTO 14
END SELECT
LOOP
14
LOCATE 25, 35: PRINT SPACE$(35)
DO
pass$ = ask$(eng$(62, lang%), 24, 21, 8, 2)
SELECT CASE pass$
CASE "exit": a$ = "": LINE (0, 130)-(639, 479), 3, BF: usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: GOTO 8
CASE "down"
CASE "up"
CASE ELSE
EXIT DO
END SELECT
LOOP
DO
pass1$ = ask$(eng$(57, lang%), 22, 22, 8, 2)
SELECT CASE pass1$
CASE "exit": a$ = "": LINE (0, 130)-(639, 479), 3, BF: usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: GOTO 8
CASE "down"
CASE "up"
CASE ELSE
IF pass$ = pass1$ THEN EXIT DO ELSE center SPACE$(65), 21: center SPACE$(65), 22: center "-12-" + eng$(59, lang%), 21: t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#: center SPACE$(55), 21: GOTO 14
END SELECT
LOOP
user.password = pass$
PUT #1, usernumber, user
CLOSE #1
LINE (0, 130)-(639, 479), 3, BF: a$ = ""
GOTO 8

delete:
IF lrmark <> 0 THEN a$ = "": GOTO 8
LINE (0, 130)-(639, 479), 3, BF
DO
pname$ = ask$(eng$(34, lang%), 30, 16, 16, 1)
LINE ((43 + LEN(pname$)) * 8, 240)-((43 + LEN(pname$)) * 8, 254), 3
SELECT CASE pname$
CASE "exit": a$ = "": LINE (0, 130)-(639, 479), 3, BF: GOTO 8
CASE "down"
CASE "up"
CASE ELSE: EXIT DO
END SELECT
LOOP
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(user)
FOR n = 1 TO users
GET #1, n + 4, user
IF RTRIM$(user.nickname) = pname$ THEN usernumber = n + 4: GOTO 13
NEXT
center "-12-" + eng$(61, lang%), 17: usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#: GOSUB delete
13
GET #1, usernumber, user
DO
LOCATE 25, 35: PRINT SPACE$(25)
LOCATE 27, 33: PRINT SPACE$(25)
12
pass$ = ask$(eng$(56, lang%), 28, 19, 8, 2)
IF pass$ = "exit" THEN a$ = "": LINE (0, 130)-(639, 479), 3, BF: usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: a$ = "": GOTO 8
IF pass$ = "down" OR pass$ = "up" THEN center SPACE$(65), 19: GOTO 12
IF pass$ <> RTRIM$(user.password) THEN center SPACE$(60), 19: center "-12-" + eng$(58, lang%), 19: t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#: center SPACE$(50), 19: GOTO 12
COLOR 12: center eng$(63, lang%), 21
mch(1) = 64
mch(2) = 65
IF MenuChoice%(2, 1, 24) = 1 THEN EXIT DO
mch(1) = 53
mch(2) = 54
usernumber = oldnumber: GET #1, usernumber, user: CLOSE #1: LINE (0, 130)-(639, 479), 3, BF: GOTO 8
LOOP
mch(1) = 53
mch(2) = 54
IF users > 1 THEN
FOR n = usernumber + 1 TO 4 + users
GET #1, n, user
PUT #1, n - 1, user
NEXT n
END IF
user.nickname = ""
user.password = ""
user.level = 0
user.avscore = 0
user.lvlreached = 0
user.language = 0
user.gmode = 0
user.rats = 0
user.bg = 0
user.snakec = 0
user.spattern = 0
PUT #1, 4 + users, user
users = users - 1: usernumber = 4
GET #1, 4, user
CLOSE #1
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(users)
PUT #1, 2, usernumber
PUT #1, 3, users
CLOSE #1
IF users > 0 THEN
mch(2) = 54
mch(3) = 55
ELSE
mch(2) = 0
mch(3) = 0
END IF
LINE (0, 130)-(639, 479), 3, BF
center SPACE$(65), 1
center eng$(70, lang%) + " " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)), 1
changeapp 1: changeapp 2: changeapp 3
a$ = ""
GOTO 8

END SUB

FUNCTION setuplevel
lvl = level
ERASE ground
FOR y = 2 TO 23
FOR x = 2 TO 31
ground(x, y) = 0
LINE ((x - 1) * 20, (y - 1) * 20)-((x - 1) * 20 + 19, (y - 1) * 20 + 19), 3, BF
NEXT
NEXT
initialize
prey = 10
showinfo 3, prey
SELECT CASE lvl
CASE 1: RESTORE lvl1
CASE 2: RESTORE lvl2
CASE 3: RESTORE lvl3
CASE 4: RESTORE lvl4
CASE 5: RESTORE lvl5
CASE 6: RESTORE lvl6
CASE 7: RESTORE lvl7
CASE 8: RESTORE lvl8
CASE 9: RESTORE lvl9
CASE 10
FOR i = 0 TO 1
FOR x = 4 + i TO 28 + i STEP 6
PUTimage x, 4, block
PUTimage x, 21, block
PUTimage x, 9, block
PUTimage x, 10, block
PUTimage x, 15, block
PUTimage x, 16, block
ground(x, 21) = -2: ground(x, 9) = -2: ground(x, 15) = -2
ground(x, 4) = -2: ground(x, 10) = -2: ground(x, 16) = -2
NEXT
NEXT
FOR x = 3 TO 30 STEP 3
PUTimage x, 5, block
PUTimage x, 20, block
PUTimage x, 8, block
PUTimage x, 9, block
PUTimage x, 10, block
PUTimage x, 15, block
PUTimage x, 16, block
PUTimage x, 17, block
ground(x, 5) = -2: ground(x, 8) = -2: ground(x, 10) = -2: ground(x, 16) = -2
ground(x, 20) = -2: ground(x, 9) = -2: ground(x, 15) = -2: ground(x, 17) = -2
NEXT
CASE 11
score = score * lives
showinfo 2, score
GET (190, 119)-(450, 278), background
LINE (190, 119)-(450, 278), 3, BF
LINE (190, 119)-(450, 278), 7, B
LINE (192, 121)-(448, 276), 7, B
center "-12-" + eng$(32, lang%), 11
IF champdone = 0 THEN center eng$(38, lang%), 13
center "-5-" + eng$(22, lang%), 15
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(champdone)
champdone = 1: PUT #1, 1, champdone: CLOSE #1
DO
DO: LOOP UNTIL INKEY$ = ""
DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
IF a$ = CHR$(27) OR a$ = CHR$(13) OR a$ = CHR$(32) THEN
PUT (190, 119), background, PSET
clearground 2, 4
highscores 2: setuplevel = 2: EXIT FUNCTION
END IF
LOOP
END SELECT

IF lvl < 10 THEN
DO
READ startx
IF startx = 0 THEN EXIT DO
READ starty, endx, endy
IF startx < endx THEN iist = 1 ELSE iist = -1
IF starty < endy THEN ist = 1 ELSE ist = -1
FOR i = starty TO endy STEP ist
FOR ii = startx TO endx STEP iist

PUTimage ii, i, block
ground(ii, i) = -2
NEXT
NEXT
LOOP
END IF
5
COLOR 15
GET (199, 89)-(441, 308), background
LINE (199, 136)-(441, 280), 3, BF
LINE (201, 138)-(439, 278), 8, B
LINE (199, 136)-(441, 280), 8, B
center eng$(35, lang%) + " = " + LTRIM$(RTRIM$(STR$(lvl))), 10
center top(level).id, 11
mch(1) = 36
mch(2) = 23
mch(3) = 22
SELECT CASE MenuChoice%(3, 1, 13)
CASE 2: SPEEDset: realspeed = SPEED!: GOTO 5
CASE 3: setuplevel = 2
CASE ELSE: setuplevel = 1
END SELECT
PUT (199, 89), background, PSET
END FUNCTION

SUB showinfo (index, value)
SELECT CASE index
CASE 1
PUT (80, 4), numSET(value * 40), PSET
CASE 2
IF value < 10 THEN v$ = "0000" + LTRIM$(RTRIM$(STR$(value)))
IF value > 9 AND value < 100 THEN v$ = "000" + LTRIM$(RTRIM$(STR$(value)))
IF value > 99 AND value < 1000 THEN v$ = "00" + LTRIM$(RTRIM$(STR$(value)))
IF value > 999 AND value < 10000 THEN v$ = "0" + LTRIM$(RTRIM$(STR$(value)))
IF value > 9999 THEN v$ = LTRIM$(RTRIM$(STR$(value)))
FOR i = 552 TO 584 STEP 8
PUT (i, 4), numSET(VAL(MID$(v$, (i - 552) / 8 + 1, 1)) * 40), PSET
NEXT
CASE 3
IF value < 10 THEN p$ = "000" + LTRIM$(RTRIM$(STR$(value)))
IF value > 9 AND value < 100 THEN p$ = "00" + LTRIM$(RTRIM$(STR$(value)))
IF value > 99 AND value < 1000 THEN p$ = "0" + LTRIM$(RTRIM$(STR$(value)))
IF value > 999 THEN p$ = LTRIM$(RTRIM$(STR$(value)))
FOR i = 353 TO 377 STEP 8
PUT (i, 464), numSET(VAL(MID$(p$, (i - 353) / 8 + 1, 1)) * 40), PSET
NEXT
END SELECT

END SUB

SUB SPEEDset
COLOR 15
IF speedlevel = 0 THEN GET (199, 89)-(441, 308), background
LINE (199, 89)-(441, 308), 3, BF
LINE (199, 89)-(441, 308), 7, B
LINE (201, 91)-(439, 306), 7, B
IF speedlevel <> 0 THEN mark = speedlevel ELSE mark = 3
mch(1) = 14
mch(2) = 15
mch(3) = 16
mch(4) = 17
mch(5) = 18
center eng$(13, lang%), 8
SELECT CASE MenuChoice%(5, mark, 10)
CASE 1
SPEED! = 120000 / ((cpu# / 10) / (1.59 / 10)): speedlevel = 1
CASE 2
SPEED! = 90000 / ((cpu# / 14.286) / (1.59 / 14.286)): speedlevel = 2
CASE 3
SPEED! = 60000 / ((cpu# / 20) / (1.59 / 20)): speedlevel = 3
CASE 4
SPEED! = 30000 / ((cpu# / 33.333) / (1.59 / 33.333)): speedlevel = 4
CASE 5
SPEED! = 15000 / ((cpu# / 50) / (1.59 / 50)): speedlevel = 5
END SELECT
FOR i = 8 TO 18 STEP 2
center SPACE$(24), (i)
NEXT
PUT (199, 89), background, PSET
END SUB

SUB startup
PAINT (0, 0), 3
mch(1) = 44
mch(2) = 45
lang% = MenuChoice%(2, 1, 12)
23
IF users > 0 THEN
mch(2) = 66
mch(1) = 67
IF MenuChoice(2, 1, 12) = 1 THEN
GOTO 24
ELSE
center SPACE$(35), 12
center SPACE$(35), 14
pname$ = ask$(eng$(68, lang%), 30, 11, 16, 1)
SELECT CASE pname$
CASE "exit": SYSTEM
CASE ELSE
GOTO 22
END SELECT
22
pass$ = ask$(eng$(56, lang%), 31, 13, 8, 2)
center SPACE$(35), 11
center SPACE$(35), 13
SELECT CASE pass$
CASE "exit": SYSTEM
CASE ELSE
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(user)
FOR i = 5 TO 4 + users
GET #1, i, user
IF RTRIM$(user.nickname) = pname$ AND RTRIM$(user.password) = pass$ THEN
CLOSE #1
usernumber = i
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(usernumber)
PUT #1, 2, usernumber
CLOSE #1
changeapp 1: changeapp 2: changeapp 3
LINE (0, 130)-(639, 479), 3, BF
center SPACE$(65), 1
center eng$(70, lang%) + " " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)), 1
EXIT SUB
END IF
NEXT
END SELECT
GET #1, usernumber, user
center SPACE$(30), 11
center SPACE$(30), 13
center "-12-" + eng$(69, lang%), 13
t# = TIMER + 1.5: DO: LOOP UNTIL TIMER >= t#
center SPACE$(35), 13
CLOSE #1
PAINT (0, 0), 3
GOTO 23
END IF
ELSE
24
usernumber = 2
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(user)
GET #1, 4, user
CLOSE #1
changeapp 1: changeapp 2: changeapp 3
OPEN "files\snake.use" FOR RANDOM AS #1 LEN = LEN(usernumber)
PUT #1, 2, usernumber
CLOSE #1
LINE (0, 130)-(639, 479), 3, BF
center SPACE$(65), 1
center eng$(70, lang%) + " " + MID$(RTRIM$(user.nickname), 1, 1) + LCASE$(MID$(RTRIM$(user.nickname), 2, LEN(RTRIM$(user.nickname)) - 1)), 1
EXIT SUB
END IF
END SUB

SUB testlevel
RESTORE lvls
FOR i = 10 TO 1 STEP -1
READ x
IF user.avscore >= x THEN user.level = i: EXIT FOR
NEXT
IF user.level > user.lvlreached THEN user.lvlreached = user.level
END SUB

SUB zap
LINE (0, 130)-(639, 479), 3, BF
END SUB



    
This message has been edited by Tusike on Jan 4, 2008 12:13 PM
This message has been edited by Tusike on Dec 22, 2007 11:07 AM
This message has been edited by Tusike on Dec 16, 2007 5:49 AM
This message has been edited by Tusike on Dec 15, 2007 9:37 AM


 
 Respond to this message   

(Login Tusike)

Creatf.bas -creates files for snake

December 14 2007, 11:58 PM 

'Creatf.bas - creates file for Snake
CONST fleVER = "Files\snake.ver", Ver = "1222"
CONST fleUSE = "Files\snake.use"
CONST fleTOP = "Files\snake.top"
CONST fleENG = "files\english.txt"
CONST fleMAG = "files\magyar.txt"
CONST fleMV1 = "Files\movie.dat"
CONST fleMV2 = "Files\movie2.dat"
CONST fleIMG = "Files\images.dat"
DEFINT A-Z
DIM letter(0 TO 199) AS SINGLE
SCREEN 12: CLS
PAINT (0, 0), 3
FOR n = 0 TO 15
OUT &H3C8, n
OUT &H3C9, 0
OUT &H3C9, 0
OUT &H3C9, 0
NEXT n
TYPE filmloc
x AS INTEGER
y AS INTEGER
END TYPE
DIM film AS filmloc
TYPE account
nickname AS STRING * 20
password AS STRING * 8
Level AS INTEGER
avscore AS INTEGER
gplayed AS INTEGER
lvlreached AS INTEGER
Language AS INTEGER
gmode AS INTEGER
rats AS INTEGER
bg AS INTEGER
snakec AS INTEGER
spattern AS INTEGER
END TYPE
TYPE topperson
pname AS STRING * 20
playdate AS STRING * 10
Score AS LONG
id AS STRING * 5
END TYPE
DIM User AS account

ON ERROR GOTO Ignore: MKDIR "files"
MKDIR "letters"
KILL "files\*.*"
KILL "letters\*.*"
ON ERROR GOTO 0
OPEN fleVER FOR OUTPUT AS #1: PRINT #1, Ver: CLOSE #1

OPEN fleUSE FOR OUTPUT AS #1: CLOSE #1
won = 0
OPEN fleUSE FOR RANDOM AS #1 LEN = LEN(won)
PUT #1, 1, won
won = 3
PUT #1, 2, won
won = 0
PUT #1, 3, won
CLOSE #1
User.nickname = "Guest"
User.password = ""
User.avscore = 0
User.gplayed = 0
User.Level = 1
User.lvlreached = 1
User.rats = 3
User.Language = 1
User.gmode = 1
User.bg = 1
User.snakec = 1
User.spattern = 1
OPEN fleUSE FOR RANDOM AS #1 LEN = LEN(User)
PUT #1, 4, User
CLOSE #1
DIM toper(1 TO 10) AS topperson
OPEN fleTOP FOR RANDOM AS #1 LEN = LEN(toper(1))
RESTORE ids
FOR i = 1 TO 10
READ z$
toper(i).pname = "Player" + STR$(i)
toper(i).playdate = DATE$
toper(i).Score = 2200 - (200 * i)
toper(i).id = z$
PUT #1, i, toper(i)
NEXT
CLOSE #1
OPEN fleENG FOR OUTPUT AS #1: CLOSE #1
OPEN fleENG FOR RANDOM AS #1 LEN = 35
RESTORE english
mark = 0

DO
mark = mark + 1
READ R$
IF R$ = "done" THEN EXIT DO
PUT #1, mark, R$
LOOP
CLOSE #1
OPEN fleMAG FOR OUTPUT AS #1: CLOSE #1
OPEN fleMAG FOR RANDOM AS #1 LEN = 35
RESTORE magyar
mark = 0
DO
mark = mark + 1
READ R$
IF R$ = "done" THEN EXIT DO
PUT #1, mark, R$
LOOP
CLOSE #1
RESTORE instructions
FOR i = 1 TO 8
OPEN "files\page" + LTRIM$(RTRIM$(STR$(i))) + ".txt" FOR OUTPUT AS #1
FOR ii = 1 TO 7
READ eng$
READ hun$
WRITE #1, eng$
WRITE #1, hun$
NEXT ii
CLOSE #1
NEXT i

RESTORE movie
OPEN fleMV1 FOR OUTPUT AS #1: CLOSE #1
OPEN fleMV1 FOR RANDOM AS #1 LEN = LEN(film)
FOR i = 1 TO 66
READ film.x, film.y
PUT #1, i, film
NEXT
CLOSE #1
RESTORE imagedata
OPEN fleIMG FOR OUTPUT AS #1
FOR i = 1 TO 4
FOR ii = 1 TO 811
READ x
WRITE #1, x
NEXT ii
NEXT i
CLOSE #1
RESTORE movie2
OPEN fleMV2 FOR OUTPUT AS #1
FOR i = 1 TO 1015
READ x
WRITE #1, x
NEXT
CLOSE #1
RESTORE chars
FOR n = 1 TO 83
READ z
FOR i = 1 TO 5
IF i = 1 THEN C = 8
IF i = 2 THEN C = 12
IF i = 3 THEN C = 15
IF i = 4 THEN C = 9
IF i = 5 THEN C = 5
COLOR C
LOCATE i, 1: PRINT CHR$(z)
NEXT
IF n < 80 THEN h = 2 ELSE h = 0
GET (0, h)-(8, h + 14), letter(0)
GET (0, h + 16)-(8, h + 30), letter(40)
GET (0, h + 32)-(8, h + 46), letter(80)
GET (0, h + 48)-(8, h + 62), letter(120)
GET (0, h + 64)-(8, h + 78), letter(160)
DEF SEG = VARSEG(letter(0))
BSAVE "letters\chr" + LTRIM$(RTRIM$(STR$(z))) + ".chr", VARPTR(letter(0)), 800
NEXT
CLS
RESTORE JEP
FOR i = 1 TO 10
OPEN "files\lvl" + LTRIM$(RTRIM$(STR$(i))) + ".dat" FOR OUTPUT AS #1
DO
READ x, y
IF x = -2 THEN EXIT DO
PRINT #1, x;
PRINT #1, y
LOOP
CLOSE #1

NEXT

PALETTE
PRINT "All files created for the game Snake."
PRINT "You can now run Snake.bas."
PRINT
PRINT "Please report any bugs at '[email protected]'"
PRINT
PRINT "You can also offer suggestions, improvements."
PRINT
PRINT "Thanks for playing Snake!!! Enjoy!"
PRINT
PRINT
COLOR 9
PRINT "Minden fajl letrehozva a Snake-hez."
PRINT "El lehet inditani a Snake.bas-t."
PRINT
PRINT "Ha hibat talalsz, mondd el a [email protected]"
PRINT
PRINT "Javaslatokat is szivesen fogadok."
PRINT
PRINT "Koszonom hogy a Snake-et valasztotta. Jo szorakozast!"

chars:
DATA 33, 39, 42, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 63, 65, 66, 67, 68, 69
DATA 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81
DATA 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 93, 97, 98, 99
DATA 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111
DATA 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 129
DATA 130, 148, 160, 161, 162, 163

DATA 143, 144, 153, 154
SYSTEM

Ignore: RESUME NEXT

ids:
DATA "START", "SNAKE"
DATA "SHELL", "LIGHT"
DATA "PRIDE", "EGYPT"
DATA "OCEAN", "EARTH"
DATA "SHARK", "PLUTO"
english:
DATA "Play the game"
DATA "Play the championship"
DATA "Enter password"
DATA "View the highscores"
DATA "Settings"
DATA "Instructions"
DATA "Login as..."
DATA "Exit the game"
DATA "Welcome"
DATA "Lives:"
DATA "Score:"
DATA "Prey caught:"
DATA "-12-Choose speed level"
DATA "very slow"
DATA "slow"
DATA "moderate"
DATA "fast"
DATA "very fast"
DATA "Game start in"
DATA "-12-G A M E P A U S E D"
DATA "Continue the game"
DATA "Return to main menu"
DATA "Change speed"
DATA "Game will continue in"
DATA "You ran into the wall!"
DATA "That was your own tail!"
DATA "That ugly rat killed you!"
DATA "-12-G A M E O V E R"
DATA "You lost all of your lives"
DATA "-12-S O R R Y!"
DATA "You didn't make the highscores"
DATA "C O N G R A T U L A T I O N S!"
DATA "You made the top ten"
DATA "Enter name:"
DATA "Level"
DATA "Start the game"
DATA "Try again"
DATA "You can now create users!"
DATA "-12-H I G H S C O R E S"
DATA "Player name:"
DATA "Play date:"
DATA "-12-S E T T I N G S"
DATA "Language selection"
DATA "English"
DATA "Magyar"
DATA "Return"
DATA "Game Settings"
DATA "rats"
DATA "background color"
DATA "snake color"
DATA "snake patterns' color"
DATA "User Settings"
DATA "Create new user"
DATA "Change user password"
DATA "Delete user"
DATA "Enter password:"
DATA "Confirm password:"
DATA "Incorrect password"
DATA "Passwords don't match!"
DATA "Name already exists"
DATA "User does not exist"
DATA "Enter new password:"
DATA "Are you sure?"
DATA "Yes"
DATA "No"
DATA "Login as user"
DATA "Login as a guest"
DATA "User name:"
DATA "Incorrect user name or password"
DATA "You are logged in as"
DATA "View user information"
DATA "-12-I N S T R U C T I O N S"
DATA "-12-C U S T O M L E V E L S"
'that was 73
DATA "Start creating levels"
DATA "Clear map"
DATA "Custom levels"
DATA "Play custom levels"
DATA "MOUSE"
DATA "Edit map"
DATA "Menu"
DATA "Quit"
DATA "Save"
DATA "Open"
DATA "Welcome to Snake's level=editor"
DATA "Use it to create custom levels."
DATA "On the bottom you can see some "
DATA "shortcut keys. Have a great time"
DATA "editing custom=levels."
DATA "Custom level editor"
DATA "done"


magyar:
DATA "J@t#k kezd#se"
DATA "Bajnoks@g j@tsz@sa"
DATA "Jelsz$ megad@sa"
DATA "Ranglista megtekint#se"
DATA "Be@ll|t@sok"
DATA "Seg#dlet"
DATA "Bel#p#s mint..."
DATA "Kil#p#s a j@t#kb$l"
DATA "^>dv<z<lj>k"
DATA "^#let: "
DATA "Pont: "
DATA "Zs@km@ny: "
DATA "-12-Neh#zs#g be@ll|t@sa"
DATA "nagyon lass_"
DATA "lass_"
DATA "k<zepes"
DATA "gyors"
DATA "nagyon gyors"
DATA "J@t#k kezd<dik: "
DATA "-12-J^@T^#K MEGSZAK|TVA"
DATA "J@t#k folytat@sa"
DATA "Vissza a men>be"
DATA "Sebess#g v@ltoztat@sa
DATA "J@t#k folytat@sa: "
DATA "Nekiment#l a falnak!"
DATA "Az a saj@t tested volt!"
DATA "Az a ronda patk@ny meg<lt!"
DATA "-12-J ^@ T ^# K V ^# G E"
DATA "Elveszett az <sszes #letedet"
DATA "-12-B O C S I!"
DATA "Nem jutottal be az els< t|zbe"
DATA "G R A T U L ^@ L O K!"
DATA "Bejutott@l az els< t|zbe!"
DATA "N#v megad@sa:"
DATA "Szint"
DATA "J@t#k kezd#se"
DATA "_jra pr$b@l"
DATA "L#trehozhat felhaszn@l$kat!"
DATA "-12-R A N G L I S T A"
DATA "J@t#kos neve:"
DATA " Id<pont: "
DATA "-12-B E ^@ L L | T ^@ S O K"
DATA "Nyelv v@laszt@sa"
DATA "English"
DATA "Magyar"
DATA "Vissza"
DATA "J@t#k be@ll|t@sai"
DATA "patk@nyok"
DATA "h@tt#r sz|ne"
DATA "k|gy$ sz|ne"
DATA "k|gy$ minta sz|ne"
DATA "J@t#kosok be@ll|t@sai"
DATA "_j felhaszn@l$ l#trehoz@sa"
DATA "Jelsz$ v@ltoztat@sa"
DATA "Felhaszn@l$ t<rl#se"
DATA "Jelsz$ megad@sa:"
DATA "Jelsz$ meger<s|t#se:"
DATA "Helytelen jelsz$"
DATA "A k#t jelsz$ nem egyezik meg!"
DATA "Ilyen n#v m@r l#tezik"
DATA "Ilyen felhasznal$ nem l#tezik"
DATA "_j jelsz$ megad@sa:"
DATA "Biztos?"
DATA "Igen"
DATA "Nem"
DATA "Bel#p#s felhaszn@l$k#nt"
DATA "Bel#p#s vend#gk#nt"
DATA "Felhasznal$ neve:"
DATA "Helytelen n#v vagy jelsz$"
DATA "Be vagy jelentkezve mint"
DATA "Adatok megtekint#se"
DATA "-12-S E G ^# D L E T"
DATA "-12-S A J ^@ T P ^@ L Y ^@ K"
DATA "P@ly@k k#sz|t#se"
DATA "^_j p@lya"
DATA "P@ly@k"
DATA "P@lya j@tsz@sa"
DATA "EG^#R"
DATA "Szerkeszt#s"
DATA "Men<"
DATA "Kil#p#s"
DATA "Ment#s"
DATA "Nyit@s"
DATA "Ez itt a Snake p@lya tervez<je."
DATA "Ezzel saj@t p@ly@kat k#sz|thetsz"
DATA "Alul l@tsz egy p@r parancsot. "
DATA "Sok sz$rakoz@st a p@ly@k k#sz|= "
DATA "t#s#ben #s j@tsz@s@ban! "
DATA "P@lya=tervez<"
DATA "done"

instructions:
DATA "-5-Snake-15- is a game developed by Peter Varnai. These are the "
DATA "A -5-Snake-15- egy j@t#k melyet V@rnai P#ter k#sz|tett. Ez itt a "
DATA "instructions on how to use it. First of all, how to use this"
DATA "j@t#khoz tartoz$ seg#dlet. Legel<sz<r vegy>k @t, hogyan kell"
DATA "program: "
DATA "haszn@lni mag@t a seg#dletet: "
DATA "Use the -9-arrow keys-15- to flip through the pages. Press the "
DATA "A -9-nyilakkal-15- lehet lapozni jobbra illetve balra. -9-[BACKSPACE] "
DATA "-9-[BACKSPACE]-15- key any time to return to the main menu. -9-[ESC] "
DATA "gombbal b@rmikor visszamehetsz a men>be. -9-[ESC]-15- a kil#p#shez."
DATA "quits the program. The following pages will let you unders= "
DATA "A k<vetkez< oldalak seg|tenek majd a j@t#k legfontosabb r#= "
DATA "tand the most important concepts of the game. "
DATA "szeinek a meg#rt#s#ben. "
DATA "-5-Using menus-15-: Use the -9-up=down keys-15- and-9- [ENTER]-15- or-9- [SPACE] -15-to "
DATA "-5-Men>k haszn@lata-15-: a -9-fel=le nyilakkal-15-, -9-[ENTER] -15-#s-9- [SPACE]-15-=el "
DATA "select a choice. You can exit the game any time using -9-[ESC]-15-,"
DATA "v@lassz az opci$k k<z>l. B@rmikor kil#phetsz az -9-[ESC]-15-=el. Ha"
DATA "even if you are being prompted for an information e.g. name."
DATA "inform@ci$t k#r a j@t#k, pl. a nevedet, akkor is kil#phetsz."
DATA "-5-Playing the game-15-: First, select -5-Play a game-15- or-5- championship."
DATA "-5-J@tsz@s-15-: El<sz<r v@laszd ki az -5-^_j j@t#k-15- vagy-5- Bajnoks@g kez= "
DATA "You can then select the -9-game speed-15-, and the game will start."
DATA "-5-d#se-15- opci$t, majd @ll|tsd be a j@t#k -9-sebess#g#t-15-. Kezd<knek "
DATA "For beginners, medium or fast speed is recommended. You can "
DATA "a k<zepes vagy gyors aj@nlatos. A j@t#kot megszak|thatod a "
DATA "pause the game any time using the -9-P key-15-, -9-[SPACE]-15- or-9- [ENTER]-15-."
DATA "-9-P-15-,-9- [ENTER]-15-, vagy-9- [SPACE]-15- gombokkal. "
DATA "The object of the game is to eat as many -9-mice-15- as you can. As"
DATA "A j@t#k l#nyege, hogy min#l t<bb -9-egeret-15- egy#l meg. Ahogy az "
DATA "you eat mice, your body will become longer, making it harder"
DATA "egereket eszed, hosszabb lesz a tested, |gy nehezebb lesz a "
DATA "to survive. You lose a -9-life-15- if you hit the wall or yourself,"
DATA "folytat@s. Elveszted az -9-#let-15-ed, ha a falba vagy magadba m#sz"
DATA "or if you get killed by a -12-rat-15-. If you eat a rat, you have a "
DATA "vagy ha meg<l egy -12-patk@ny-15-. Ha elkapsz egy patk@nyt, van egy "
DATA "small chance of dying. Make sure to catch the mice from the "
DATA "es#ly arra, hogy meghalsz. Fontos az is, hogy az egereket "
DATA "-9-behind-15-, otherwise they'll just escape, move somewhere else. "
DATA "-9-h@tulr$l-15- t@madd meg, k>l<nben elugranak m@shova. A -5-Zs@km@ny "
DATA "-5-Prey caught-15- at the bottom shows how many mice you've eaten. "
DATA "alul mutatja, hogy mennyi egeret kapt@l el eddig. "
DATA "-5-Championship-15-: the championship is a set of levels that test "
DATA "-5-Bajnoks@g-15-: a bajnoks@g egy csoport p@lya, mely teszteli hogy"
DATA "your ability to play the game. The higher a level, the more "
DATA "milyen j$l tudsz j@tszani. A magasabb szinteket m@r nehezebb"
DATA "difficult it is to beat. The -5-Prey caught-15- label at the bottom"
DATA "megnyerni. A -5-Zs@km@ny-15- cimke alul mutatja, hogy m#g mennyi e="
DATA "tells you how many more mice you need to catch before you're"
DATA "geret kell elkapnod ahhoz, hogy eljuss a k<vetkez< szinthez."
DATA "able to advance to the next level. Make sure to write down "
DATA "Ne felejtsd el le|rni a szintek -9-k$d-15-jait. Ha meghalsz, |rd be"
DATA "the -9-password-15- for each level e.g. level 1's is START. If you "
DATA "a men>n#l ezt a k$dot, #s azon a p@ly@n kezded a bajnoks@got"
DATA "die, enter this code at the menu to start from that level. "
DATA "amelyikhez a k$d tartozik. "
DATA "After a game, you may reach the top ten in the -5-highscores-15-. "
DATA "Egy j@t#k ut@n lehet hogy beker>lsz az els$ t|z k<z# a -5-rang="
DATA "Enter your name at the prompt. You'll be -9-highlighted-15- in blue"
DATA "-5-list@-15-ban. Add meg a nevedet, amely vil@gosk#kk#nt lesz -9-kie= "
DATA "so you can check which place you have reached. Your -9-score "
DATA "-9-melve-15- a list@ban, hogy l@sd melyik helyet #rted el. A -9-pont-15-= "
DATA "depends on the game's speed, the number of mice you caught, "
DATA "jaid sz@ma t<bb t#nyez<t<l f>gg, pl. a j@t#k sebess#g#t<l, "
DATA "and the number of rats in the game. Later you will be able "
DATA "hogy mennyi egeret kapt@l el, #s a patk@nyok sz@m@t$l. Majd "
DATA "to change the amount of rats in the game, but for now, just "
DATA "k#s<bb m$dos|tani fogod tudni a patk@nyok sz@m@t, de most e="
DATA "know that only 3 rats can show up in the game. "
DATA "l#g annyit tudni, hogy csak 3 patk@ny lehet a j@t#kban. "
DATA "After you beat the championship, you'll be able to create an"
DATA "A bajnoks@g megnyer#se ut@n l#tre tudsz majd hozni -5-felhasz= "
DATA "-5-account-15-. At the start of the game, you'll also have the cho="
DATA "-5-n@l$-15-kat. A program elej#n lehet<s#ged lesz -5-vend#g-15-k#nt vagy "
DATA "ice to log in as a -5-user-15- or a -5-guest-15-. As you play games with "
DATA "-5-felhaszn@l$-15-k#nt bel#pned. Ahogy j@t#kokat j@tszol a profil= "
DATA "your account, your -9-average score-15- will be calculated. You can"
DATA "oddal, ki lesz sz@m|tva az -9-@tlagos pontsz@m-15-od. Megn#zheted a"
DATA "view your profile using the menu. The symbol at the bottom "
DATA "profilodat a menu seg|ts#g#vel. Az alul tal@lhat$ szimb$lum "
DATA "get's better as your average score becomes higher. Your ave="
DATA "egyre szebb lesz, ha magasabb rangfokozatokat #rsz el. Ez a "
DATA "rage score is used to determine your level. "
DATA "rang az @tlagos pontsz@mod seg|ts#g#vel lesz kisz@m|tva. "
DATA "As your account reaches higher levels, more and more options"
DATA "Ahogy el#rsz bizonyos rangokat, _jabb lehet<s#gek ny|lnak "
DATA "become available to you. You can view these options in the "
DATA "meg el<tted. Ezeket megtekintheted #s megv@ltoztathatod az "
DATA "-5-settings-15- menu, in which you can also change the language and"
DATA "-5-Opci$kban-15-, ahol a nyelvet is kiv@laszthatod, #s l#tre tudsz "
DATA "create or delete users, or change your password. After you "
DATA "hozni _jabb felhaszn@l$kat, vagy a jelszavadat m$dos|thatod."
DATA "reach level 3, you'll have access to the -5-Game settings-15-. Use "
DATA "A 3=as szint el#r#s#vel utat nyersz a -5-J@t#k be@ll|t@saihoz-15-. "
DATA "the -9-left-15- and-9- right arrow keys -15-to change a particular option,"
DATA "A -9-jobb -15-#s-9- bal nyilak-15-kal v@ltoztathatod meg egy bizonyos op= "
DATA "e.g. the amount of rats that may appear in the game. "
DATA "ci$ #rt#k#t, pl. a patk@nyok mennyis#g#t a j@t#kban. "
DATA "At this point you should be able to understand the most im= "
DATA "Enn#l a pontn@l a j@t#k l#nyeg#t #rtened kellene. Ha valami "
DATA "portant points of the game. If not, contanct me by e=mail: "
DATA "m#g mindig nem vil@gos, k>ldj egy e=mailt nekem: "
DATA "-9-varnaipeti hotmail.com-15-. Please report any -12-bugs-15- that you find"
DATA "-9-varnaipeti hotmail.com-15-. Ha valami -12-hib@t-15- tal@lsz, >zend meg "
DATA "and you are also welcome to offer suggestions. I especially "
DATA "tov@bbi javaslatokkal egy>tt. K>l<n<sen h@l@s vagyok a Qbasic"
DATA "thank the Qbasic Forum at -9-qbasic.com-15-, and everybody else who"
DATA "F$rumnak a -9-qbasic.com-15-=n@l, akik sokat seg|tettek a program "
DATA "has helped me in creating this game. This is a -9-freeware pro="
DATA "elk#sz|t#s#ben. Ez egy -9-ingyenes-15- j@t#k, mindenkit k#rek hogy"
DATA "-9-gram-15-, so please don't try to make money from it in any way. "
DATA "ne pr$b@ljon hasznot h_zni bel<le! "

movie:
DATA 5,1
DATA 5,2
DATA 5,3
DATA 5,4
DATA 5,5
DATA 5,6
DATA 5,7
DATA 5,8
DATA 5,9
DATA 5,10
DATA 5,11
DATA 5,12
DATA 5,13
DATA 5,14
DATA 5,15
DATA 5,16
DATA 5,17
DATA 6,17
DATA 7,17
DATA 8,17
DATA 9,17
DATA 10,17
DATA 11,17
DATA 12,17
DATA 13,17
DATA 14,17
DATA 15,17
DATA 16,17
DATA 17,17
DATA 18,17
DATA 19,17
DATA 20,17
DATA 21,17
DATA 22,17
DATA 23,17
DATA 23,16
DATA 23,15
DATA 23,14
DATA 23,13
DATA 23,12
DATA 23,11
DATA 23,10
DATA 23,9
DATA 23,8
DATA 22,8
DATA 21,8
DATA 20,8
DATA 19,8
DATA 18,8
DATA 17,8
DATA 16,8
DATA 15,8
DATA 14,8
DATA 13,8
DATA 12,8
DATA 11,8
DATA 10,8
DATA 9,8
DATA 8,8
DATA 7,8
DATA 6,8
DATA 5,8
DATA 4,8
DATA 3,8
DATA 2,8
DATA 1,8

imagedata:

DATA 49,7,7,10,11,7,2,10,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,10,8,7,1,10,1,12
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,10,7,7,1,10,1,8,1,4,1,12
DATA 2,2,2,6,1,8,1,2,1,8,1,2,1,8,1,10,5,7,1,10,1,8,1,2,1,4,1,12,1,8
DATA 1,2,2,6,1,2,1,8,1,2,1,8,1,2,1,8,2,10,2,7,1,10,1,8,1,2,1,8,1,12
DATA 1,8,1,2,4,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,7,2,8,1,2,1,8,1,2
DATA 1,8,1,2,6,6,1,2,1,8,1,2,1,8,1,2,1,8,1,7,1,10,1,2,1,8,1,2,1,8
DATA 11,6,1,2,2,6,1,7,1,10,1,8,1,2,1,8,1,2,11,6,1,2,2,6,1,7,1,8,1,2
DATA 1,8,1,2,2,8,1,2,6,6,1,2,1,8,1,2,1,8,1,2,1,8,2,7,1,10,1,2,1,8
DATA 1,2,1,12,1,8,1,2,4,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,3,7,1,10,1,2
DATA 1,8,1,4,1,12,1,8,1,2,2,6,1,2,1,8,1,2,1,8,1,2,1,8,2,10,4,7,1,10
DATA 1,2,1,4,1,12,2,2,2,6,1,8,1,2,1,8,1,2,1,8,1,10,7,7,1,10,1,12,1,8
DATA 1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,10,10,7,2,10,1,2,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,10,12,7,7,10,44,7
DATA 120,7,20,10,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,6,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,4,6,1,2
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,6,1,2,2,6,1,2,2,6,2,2,2,6
DATA 1,2,2,6,1,2,2,6,2,2,2,6,1,2,2,6,1,2,2,6,2,2,2,6,1,2,2,6,1,2
DATA 2,6,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,4,6,1,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,2,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,6,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,1,8,1,2,20,10,120,7
DATA 100,7,20,10,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,3,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,2,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,6,1,2
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8
DATA 4,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,6,1,2,2,6,1,2,2,6
DATA 2,2,2,6,1,2,2,6,1,2,2,6,2,2,2,6,1,2,2,6,1,2,2,6,2,2,2,6,1,2
DATA 2,6,1,2,2,6,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,4,6,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,2,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,6,1,2
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8
DATA 3,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,20,10,100,7
DATA 80,7,20,10,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,8,2,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8
DATA 1,2,1,8,1,2,1,8,1,2,1,8,4,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8
DATA 1,2,2,6,1,2,2,6,1,2,2,6,2,2,2,6,1,2,2,6,1,2,2,6,2,2,2,6,1,2
DATA 2,6,1,2,2,6,2,2,2,6,1,2,2,6,1,2,2,6,2,2,1,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,4,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,8,2,6,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8
DATA 1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,2,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,8,1,2,1,8,1,2,20,10,80,7
DATA 140,7,20,10,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,6,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,1,8,2,2,2,6,1,8,2,6,1,2,1,8,4,6,1,2,1,8,2,6
DATA 1,2,2,6,2,8,2,6,1,2,2,6,1,8,1,2,4,6,1,8,1,2,2,6,1,8,2,6,2,2
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,6,1,8,1,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,1,8,20,10,140,7
DATA 160,7,20,10,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,2,6,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,6
DATA 1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,20,10,160,7
DATA 125,7,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,7,7,1,8,1,6
DATA 1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,3,7,2,10,1,6
DATA 1,8,1,6,1,8,2,6,1,8,1,6,1,8,2,6,1,8,1,6,1,8,1,6,3,7,1,8,1,2
DATA 1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,10,2,7
DATA 1,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2,1,8,1,2,1,8,2,2,1,8,1,2
DATA 1,10,2,7,2,10,2,6,1,8,1,6,1,8,2,6,1,8,1,6,1,8,2,6,1,8,1,6,1,8
DATA 6,7,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8
DATA 8,7,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,1,8,1,6,124,7
DATA 135,7,5,10,13,7,2,10,1,8,1,2,1,8,1,2,1,8,11,7,2,10,1,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,10,7,1,10,1,8,1,2,1,8,1,2,1,8,1,2,2,6,1,8,9,7,1,10,6,6
DATA 1,8,2,6,1,2,8,7,1,10,1,2,6,6,1,2,1,8,1,2,1,8,8,7,1,10,1,8,2,6
DATA 1,8,1,2,2,6,1,8,1,2,1,8,1,2,7,7,1,10,1,8,1,2,2,6,1,2,1,8,2,6
DATA 1,2,1,8,2,10,7,7,1,10,1,2,1,8,6,6,2,10,8,7,1,10,1,2,1,8,1,2,5,6
DATA 1,10,10,7,1,10,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,10,11,7,1,10,1,2,1,8
DATA 2,6,1,2,1,8,1,2,1,10,11,7,1,10,1,8,1,2,2,6,1,8,1,2,1,10,12,7,1,10
DATA 1,2,1,8,1,2,1,8,1,2,1,8,1,10,6,7
DATA 115,7,5,10,13,7,2,10,1,2,1,8,1,2,1,8,1,2,11,7,2,10,1,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,10,7,1,10,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,9,7,1,10
DATA 1,2,1,8,1,2,1,8,1,2,1,8,1,2,2,6,1,8,8,7,1,10,1,8,6,6,1,8,2,6
DATA 1,2,7,7,1,10,1,8,1,2,6,6,1,2,1,8,1,2,1,8,7,7,1,10,1,2,1,8,2,6
DATA 1,8,1,2,2,6,1,8,1,2,1,8,1,2,6,7,1,10,1,2,1,8,1,2,2,6,1,2,1,8
DATA 2,6,1,2,1,8,1,2,1,8,6,7,1,10,1,8,1,2,1,8,6,6,1,8,1,2,2,10,5,7
DATA 1,10,1,8,1,2,1,8,1,2,6,6,2,10,7,7,1,10,1,2,1,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,10,9,7,1,10,1,8,1,2,1,8,2,6,1,2,1,8,1,2,1,8,1,10
DATA 9,7,1,10,1,2,1,8,1,2,2,6,1,8,1,2,1,8,1,10,10,7,1,10,1,8,1,2,1,8
DATA 1,2,1,8,1,2,1,8,1,2,1,10,5,7
DATA 94,7,6,10,12,7,2,10,1,2,1,8,1,2,1,8,1,2,1,8,10,7,2,10,1,8,1,2,1,8,1,2
DATA 1,8,1,2,1,8,1,2,9,7,1,10,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2
DATA 1,8,8,7,1,10,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,7,7
DATA 1,10,1,8,2,2,1,8,1,2,1,8,1,2,1,8,1,2,2,6,1,8,6,7,1,10,1,8,1,2
DATA 1,8,6,6,1,8,2,6,1,2,6,7,1,10,1,2,1,8,1,2,6,6,1,2,1,8,1,2,1,8
DATA 5,7,1,10,1,2,1,8,1,2,1,8,2,6,1,8,1,2,2,6,1,8,1,2,1,8,1,2,5,7
DATA 1,10,1,8,1,2,1,8,1,2,2,6,1,2,1,8,2,6,1,2,1,8,1,2,1,8,4,7,1,10
DATA 1,8,1,2,1,8,1,2,1,8,6,6,1,8,1,2,1,8,1,2,4,7,1,10,1,2,1,8,1,2
DATA 1,8,1,2,6,6,1,2,1,8,1,2,1,10,4,7,1,10,1,8,1,2,1,8,1,2,1,8,1,2
DATA 1,8,1,2,1,8,2,2,1,8,2,10,5,7,1,10,1,2,1,8,1,2,1,8,2,6,1,2,1,8
DATA 1,2,1,8,1,2,1,10,7,7,1,10,1,8,1,2,1,8,1,2,2,6,1,8,1,2,1,8,1,2
DATA 1,8,1,10,7,7,1,10,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,2,1,8,1,10
DATA 4,7
DATA 155,7,5,10,13,7,2,10,1,2,1,8,1,2,1,8,1,2,11,7,2,10,1,8,1,2,1,8,1,2,2,6
DATA 1,8,10,7,1,10,4,6,1,2,1,8,2,6,1,2,9,7,1,10,5,6,1,8,1,2,1,8,1,2
DATA 1,8,9,7,1,10,2,6,1,2,2,6,1,2,1,8,3,10,8,7,1,10,1,2,5,6,2,10,11,7
DATA 1,10,1,8,4,6,1,10,12,7,1,10,1,8,1,2,1,8,1,2,1,8,1,10,13,7,1,10,1,2
DATA 1,8,1,2,1,8,1,2,1,10,13,7,1,10,1,8,2,6,1,2,1,10,14,7,1,10,1,2,2,6
DATA 1,8,1,10,14,7,1,10,1,8,1,2,1,8,1,2,1,10,7,7
DATA 175,7,5,10,13,7,2,10,1,2,1,8,1,2,1,8,1,2,12,7,1,10,1,8,1,2,1,8,1,2,1,8
DATA 1,2,1,8,11,7,1,10,1,6,1,2,1,8,1,2,1,8,3,10,10,7,1,10,3,6,1,2,2,10
DATA 12,7,1,10,1,8,1,2,2,6,1,10,14,7,1,10,1,2,1,8,1,2,1,10,14,7,1,10,1,2
DATA 1,8,1,2,1,10,15,7,1,10,1,8,1,2,1,8,1,10,15,7,1,10,1,2,1,8,1,10,16,7
DATA 1,10,1,8,1,2,1,10,16,7,1,10,1,2,1,8,1,10,8,7

DATA 87,14,3,77,17,14,1,77,2,15,1,77,11,14,1,15,1,14,1,15,2,14,1,77,1,15,1,77,2,14,5,77
DATA 6,14,1,15,5,77,1,14,8,77,4,14,4,77,1,0,1,15,10,77,2,14,1,13,18,77,1,14,1,13
DATA 19,77,2,14,4,77,1,0,1,15,10,77,1,14,1,77,3,14,1,15,5,77,1,14,8,77,1,14,1,77
DATA 2,14,1,15,1,14,1,15,2,14,1,77,1,15,1,77,2,14,5,77,2,14,1,77,7,14,1,77,2,15
DATA 1,77,7,14,1,77,8,14,3,77,7,14,1,77,19,14,1,77,1,14,1,77,18,14,1,77,41,14

DATA 96,7,2,13,8,7,2,8,1,7,5,8,2,13,2,7,1,13,6,7,1,8,1,15,8,8,1,13,2,7,1,13
DATA 5,7,12,8,2,7,1,13,5,7,1,8,1,15,10,8,1,7,1,13,6,7,12,8,1,7,1,13,7,7
DATA 7,8,1,13,2,8,1,7,1,13,7,7,9,8,3,13,7,7,2,8,1,4,8,8,8,7,8,8,1,144
DATA 2,7,1,144,6,7,1,13,3,8,1,14,2,7,1,144,4,7,2,144,7,7,2,15,3,7,2,144,92,7

DATA 76,7,1,10,1,2,18,7,1,10,1,2,9,7,1,10,1,2,4,7,2,2,1,7,1,2,7,7,1,10,1,2
DATA 2,7,1,2,1,7,4,2,1,7,1,2,7,7,1,10,2,8,1,2,1,7,6,2,8,7,1,10,1,2
DATA 1,3,1,8,9,2,6,7,1,10,13,2,6,7,1,10,13,2,7,7,1,10,1,2,1,3,1,8,9,2
DATA 8,7,1,10,2,8,1,2,1,7,6,2,10,7,1,10,1,2,2,7,1,2,1,7,4,2,1,7,1,2
DATA 11,7,1,10,1,2,4,7,2,2,1,7,1,2,19,7,1,10,1,2,18,7,1,10,1,2,62,7

movie2: '1 2 3 4 5 6 7 8 9 10 11 12 13

DATA 1, 1, 6375
DATA 1, 2, 6500, 6375
DATA 2, 3, 6500, 6375
DATA 1, 4, 375, 6500, 6500, 6375
DATA 1, 5, 875, 375, 6500, 6500, 6375
DATA 1, 6, 1375, 875, 375, 6500, 6500, 6375
DATA 1, 7, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 1, 8, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 1, 9, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 1, 10, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 1, 11, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 1, 12, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 1, 13, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 2, 14, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 3, 15, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 4, 16, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 5, 17, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6375
DATA 6, 18, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6250
DATA 7, 19, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6250
DATA 8, 20, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 875, 375, 6500, 6500, 6250
DATA 9, 21, 6500, 3375, 2875, 2375, 875, 1375, 1875, 1375, 3875, 250, 6500, 6500, 6250
DATA 10, 22, 6500, 3375, 2875, 2375, 875, 1375, 1875, 4375, 750, 250, 6500, 6500, 6250
DATA 11, 23, 6500, 3375, 2875, 2375, 875, 1375, 4875, 1250, 750, 250, 6500, 6500, 6250
DATA 12, 24, 6500, 3375, 2875, 2375, 875, 4375, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 13, 25, 6500, 3375, 2875, 2375, 3875, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 14, 26, 6500, 3375, 2875, 5375, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 15, 27, 6500, 3375, 5875, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250

DATA 16, 28, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 17, 29, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 18, 30, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 19, 31, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 20, 32, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 21, 33, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 22, 34, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 23, 35, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6250
DATA 24, 36, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6125
DATA 25, 37, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6125
DATA 26, 38, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 750, 250, 6500, 6500, 6125
DATA 27, 39, 6500, 3250, 2750, 2250, 750, 1250, 1750, 1250, 3750, 125, 6500, 6500, 6125
DATA 28, 40, 6500, 3250, 2750, 2250, 750, 1250, 1750, 4250, 625, 125, 6500, 6500, 6125
DATA 29, 41, 6500, 3250, 2750, 2250, 750, 1250, 4750, 1125, 625, 125, 6500, 6500, 6125
DATA 30, 42, 6500, 3250, 2750, 2250, 750, 4250, 1625, 1125, 625, 125, 6500, 6500, 6125
DATA 31, 43, 6500, 3250, 2750, 2250, 3750, 1125, 1625, 1125, 625, 125, 6500, 6500, 6125
DATA 32, 44, 6500, 3250, 2750, 5250, 625, 1125, 1625, 1125, 625, 125, 6500, 6500, 6125
DATA 33, 45, 6500, 3250, 5750, 2125, 625, 1125, 1625, 1125, 625, 125, 6500, 6500, 6000

DATA 34, 46, 6500, 3125, 2625, 2125, 625, 1125, 1625, 1125, 625, 125, 6500, 6500, 6000
DATA 35, 47, 6500, 3125, 2625, 2125, 625, 1125, 1625, 1125, 625, 125, 6500, 6500, 6000
DATA 36, 48, 6500, 3125, 2625, 2125, 625, 1125, 1625, 1125, 3625, 000, 6500, 6500, 6000
DATA 37, 49, 6500, 3125, 2625, 2125, 625, 1125, 1625, 4125, 500, 000, 6500, 6500, 6000
DATA 38, 50, 6500, 3125, 2625, 2125, 625, 1125, 4625, 1000, 500, 000, 6500, 6500, 6000
DATA 39, 51, 6500, 3125, 2625, 2125, 625, 4125, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 40, 52, 6500, 3125, 2625, 2125, 3625, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 41, 53, 6500, 3125, 2625, 5125, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 42, 54, 6500, 3125, 5625, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 43, 55, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 44, 56, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 45, 57, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 46, 58, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 47, 59, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 48, 60, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 49, 61, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 50, 62, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 51, 63, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 52, 64, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 53, 65, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000
DATA 54, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500, 6000

DATA 55, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500, 6500
DATA 56, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000, 6500
DATA 57, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500, 000
DATA 58, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000, 500
DATA 59, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500, 1000
DATA 60, 66, 6500, 3000, 2500, 2000, 500, 1000, 1500
DATA 61, 66, 6500, 3000, 2500, 2000, 500, 1000
DATA 62, 66, 6500, 3000, 2500, 2000, 500
DATA 63, 66, 6500, 3000, 2500, 2000
DATA 64, 66, 6500, 3000, 2500
DATA 65, 66, 6500, 3000
DATA 66, 66, 6500
DATA -1, 0

JEP:

'lvl1
DATA 91,3,1,0,107,3,2,7,77,3,4,7,76,3
DATA 4,7,76,3,4,7,76,3,4,7,75,3
DATA 6,7,74,3,6,7,74,3,6,7,74,3
DATA 6,7,73,3,8,7,72,3,8,7,72,3
DATA 8,7,71,3,10,7,70,3,10,7,70,3
DATA 10,7,69,3,12,7,68,3,12,7,67,3
DATA 14,7,66,3,14,7,65,3,16,7,63,3
DATA 18,7,62,3,18,7,62,3,18,7,62,3
DATA 18,7,63,3,16,7,65,3,14,7,66,3
DATA 14,7,67,3,12,7,68,3,12,7,56,3
DATA 4,7,8,3,12,7,8,3,4,7,43,3
DATA 6,7,8,3,10,7,8,3,6,7,40,3
DATA 10,7,6,3,10,7,6,3,10,7,36,3
DATA 15,7,3,3,10,7,3,3,15,7,31,3
DATA 25,7,2,3,25,7,25,3,27,7,4,3
DATA 27,7,18,3,31,7,4,3,31,7,10,3
DATA 33,7,8,3,33,7,5,3,33,7,10,3
DATA 33,7,4,3,33,7,10,3,33,7,5,3
DATA 33,7,8,3,33,7,10,3,31,7,4,3
DATA 31,7,18,3,27,7,4,3,27,7,25,3
DATA 25,7,2,3,25,7,31,3,15,7,3,3
DATA 10,7,3,3,15,7,36,3,10,7,6,3
DATA 10,7,6,3,10,7,40,3,6,7,8,3
DATA 10,7,8,3,6,7,43,3,4,7,8,3
DATA 12,7,8,3,4,7,56,3,12,7,68,3
DATA 12,7,67,3,14,7,66,3,14,7,65,3
DATA 16,7,63,3,18,7,62,3,18,7,62,3
DATA 18,7,62,3,18,7,63,3,16,7,65,3
DATA 14,7,66,3,14,7,67,3,12,7,68,3
DATA 12,7,69,3,10,7,70,3,10,7,70,3
DATA 10,7,71,3,8,7,72,3,8,7,72,3
DATA 8,7,73,3,6,7,74,3,6,7,74,3
DATA 6,7,74,3,6,7,75,3,4,7,76,3
DATA 4,7,76,3,4,7,76,3,4,7,77,3
DATA 2,7,199,3
DATA -1, 5, -2, 4
'lvl2
DATA 91,3,1,0,107,3,2,7,77,3,4,7,76,3
DATA 4,7,76,3,4,7,76,3,4,7,75,3
DATA 6,7,74,3,6,7,74,3,6,7,74,3
DATA 6,7,73,3,8,7,72,3,8,7,72,3
DATA 3,7,2,8,3,7,71,3,4,7,2,8
DATA 4,7,70,3,4,7,2,8,4,7,70,3
DATA 3,7,1,8,2,7,1,8,3,7,69,3
DATA 4,7,1,8,2,7,1,8,4,7,68,3
DATA 4,7,1,8,2,7,1,8,4,7,67,3
DATA 4,7,1,8,4,7,1,8,4,7,66,3
DATA 4,7,1,8,4,7,1,8,4,7,65,3
DATA 4,7,1,8,6,7,1,8,4,7,63,3
DATA 5,7,1,8,6,7,1,8,5,7,62,3
DATA 4,7,1,8,8,7,1,8,4,7,62,3
DATA 4,7,1,8,8,7,1,8,4,7,62,3
DATA 5,7,1,8,6,7,1,8,5,7,63,3
DATA 4,7,1,8,6,7,1,8,4,7,65,3
DATA 4,7,1,8,4,7,1,8,4,7,66,3
DATA 4,7,1,8,4,7,1,8,4,7,67,3
DATA 4,7,1,8,2,7,1,8,4,7,68,3
DATA 4,7,1,8,2,7,1,8,4,7,56,3
DATA 4,7,8,3,4,7,1,8,2,7,1,8
DATA 4,7,8,3,4,7,43,3,6,7,8,3
DATA 3,7,4,8,3,7,8,3,6,7,40,3
DATA 10,7,6,3,4,7,2,8,4,7,6,3
DATA 10,7,36,3,15,7,3,3,4,7,2,8
DATA 4,7,3,3,15,7,31,3,9,7,2,8
DATA 10,7,1,8,3,7,2,3,3,7,1,8
DATA 10,7,2,8,9,7,25,3,10,7,2,8
DATA 2,7,2,8,9,7,1,8,1,7,4,3
DATA 1,7,1,8,9,7,2,8,2,7,2,8
DATA 10,7,18,3,12,7,2,8,6,7,2,8
DATA 8,7,1,8,4,3,1,8,8,7,2,8
DATA 6,7,2,8,12,7,10,3,13,7,3,8
DATA 10,7,4,8,3,7,8,3,3,7,4,8
DATA 10,7,3,8,13,7,5,3,11,7,3,8
DATA 16,7,3,8,10,3,3,8,16,7,3,8
DATA 11,7,4,3,11,7,3,8,16,7,3,8
DATA 10,3,3,8,16,7,3,8,11,7,5,3
DATA 13,7,3,8,10,7,4,8,3,7,8,3
DATA 3,7,4,8,10,7,3,8,13,7,10,3
DATA 12,7,2,8,6,7,2,8,8,7,1,8
DATA 4,3,1,8,8,7,2,8,6,7,2,8
DATA 12,7,18,3,10,7,2,8,2,7,2,8
DATA 9,7,1,8,1,7,4,3,1,7,1,8
DATA 9,7,2,8,2,7,2,8,10,7,25,3
DATA 9,7,2,8,10,7,1,8,3,7,2,3
DATA 3,7,1,8,10,7,2,8,9,7,31,3
DATA 15,7,3,3,4,7,2,8,4,7,3,3
DATA 15,7,36,3,10,7,6,3,4,7,2,8
DATA 4,7,6,3,10,7,40,3,6,7,8,3
DATA 3,7,4,8,3,7,8,3,6,7,43,3
DATA 4,7,8,3,4,7,1,8,2,7,1,8
DATA 4,7,8,3,4,7,56,3,4,7,1,8
DATA 2,7,1,8,4,7,68,3,4,7,1,8
DATA 2,7,1,8,4,7,67,3,4,7,1,8
DATA 4,7,1,8,4,7,66,3,4,7,1,8
DATA 4,7,1,8,4,7,65,3,4,7,1,8
DATA 6,7,1,8,4,7,63,3,5,7,1,8
DATA 6,7,1,8,5,7,62,3,4,7,1,8
DATA 8,7,1,8,4,7,62,3,4,7,1,8
DATA 8,7,1,8,4,7,62,3,5,7,1,8
DATA 6,7,1,8,5,7,63,3,4,7,1,8
DATA 6,7,1,8,4,7,65,3,4,7,1,8
DATA 4,7,1,8,4,7,66,3,4,7,1,8
DATA 4,7,1,8,4,7,67,3,4,7,1,8
DATA 2,7,1,8,4,7,68,3,4,7,1,8
DATA 2,7,1,8,4,7,69,3,3,7,1,8
DATA 2,7,1,8,3,7,70,3,4,7,2,8
DATA 4,7,70,3,4,7,2,8,4,7,71,3
DATA 3,7,2,8,3,7,72,3,8,7,72,3
DATA 8,7,73,3,6,7,74,3,6,7,74,3
DATA 6,7,74,3,6,7,75,3,4,7,76,3
DATA 4,7,76,3,4,7,76,3,4,7,77,3
DATA 2,7,199,3
DATA -1, 5, -2, 4
'lvl3
DATA 91,3,1,0,107,3,2,7,77,3,4,7,76,3
DATA 4,7,76,3,4,7,76,3,4,7,75,3
DATA 6,7,74,3,6,7,74,3,6,7,74,3
DATA 6,7,73,3,8,7,72,3,8,7,72,3
DATA 3,7,2,8,3,7,71,3,4,7,2,8
DATA 4,7,70,3,4,7,2,8,4,7,70,3
DATA 3,7,1,8,2,7,1,8,3,7,69,3
DATA 4,7,1,8,2,7,1,8,4,7,68,3
DATA 4,7,1,8,2,7,1,8,4,7,67,3
DATA 4,7,1,8,4,7,1,8,4,7,66,3
DATA 4,7,1,8,4,7,1,8,4,7,65,3
DATA 4,7,1,8,6,7,1,8,4,7,63,3
DATA 5,7,1,8,6,7,1,8,5,7,62,3
DATA 4,7,1,8,8,7,1,8,4,7,62,3
DATA 4,7,1,8,8,7,1,8,4,7,62,3
DATA 5,7,1,8,6,7,1,8,5,7,63,3
DATA 4,7,1,8,6,7,1,8,4,7,65,3
DATA 4,7,1,8,4,7,1,8,4,7,66,3
DATA 4,7,1,8,4,7,1,8,4,7,67,3
DATA 4,7,1,8,2,7,1,8,4,7,68,3
DATA 4,7,1,8,2,7,1,8,4,7,56,3
DATA 4,7,8,3,4,7,1,8,2,7,1,8
DATA 4,7,8,3,4,7,43,3,6,7,8,3
DATA 3,7,4,8,3,7,8,3,6,7,40,3
DATA 10,7,6,3,4,7,2,8,4,7,6,3
DATA 10,7,36,3,15,7,3,3,4,7,2,8
DATA 4,7,3,3,15,7,31,3,9,7,2,8
DATA 10,7,1,8,3,7,2,6,3,7,1,8
DATA 10,7,2,8,9,7,25,3,10,7,2,8
DATA 2,7,2,8,9,7,1,8,1,7,4,6
DATA 1,7,1,8,9,7,2,8,2,7,2,8
DATA 10,7,18,3,12,7,2,8,6,7,2,8
DATA 8,7,1,8,4,6,1,8,8,7,2,8
DATA 6,7,2,8,12,7,10,3,13,7,3,8
DATA 10,7,4,8,3,7,8,6,3,7,4,8
DATA 10,7,3,8,13,7,5,3,11,7,3,8
DATA 16,7,3,8,10,6,3,8,16,7,3,8
DATA 11,7,4,3,11,7,3,8,16,7,3,8
DATA 10,6,3,8,16,7,3,8,11,7,5,3
DATA 13,7,3,8,10,7,4,8,3,7,8,6
DATA 3,7,4,8,10,7,3,8,13,7,10,3
DATA 12,7,2,8,6,7,2,8,8,7,1,8
DATA 4,6,1,8,8,7,2,8,6,7,2,8
DATA 12,7,18,3,10,7,2,8,2,7,2,8
DATA 9,7,1,8,1,7,4,6,1,7,1,8
DATA 9,7,2,8,2,7,2,8,10,7,25,3
DATA 9,7,2,8,10,7,1,8,3,7,2,6
DATA 3,7,1,8,10,7,2,8,9,7,31,3
DATA 15,7,3,3,4,7,2,8,4,7,3,3
DATA 15,7,36,3,10,7,6,3,4,7,2,8
DATA 4,7,6,3,10,7,40,3,6,7,8,3
DATA 3,7,4,8,3,7,8,3,6,7,43,3
DATA 4,7,8,3,4,7,1,8,2,7,1,8
DATA 4,7,8,3,4,7,56,3,4,7,1,8
DATA 2,7,1,8,4,7,68,3,4,7,1,8
DATA 2,7,1,8,4,7,67,3,4,7,1,8
DATA 4,7,1,8,4,7,66,3,4,7,1,8
DATA 4,7,1,8,4,7,65,3,4,7,1,8
DATA 6,7,1,8,4,7,63,3,5,7,1,8
DATA 6,7,1,8,5,7,62,3,4,7,1,8
DATA 8,7,1,8,4,7,62,3,4,7,1,8
DATA 8,7,1,8,4,7,62,3,5,7,1,8
DATA 6,7,1,8,5,7,63,3,4,7,1,8
DATA 6,7,1,8,4,7,65,3,4,7,1,8
DATA 4,7,1,8,4,7,66,3,4,7,1,8
DATA 4,7,1,8,4,7,67,3,4,7,1,8
DATA 2,7,1,8,4,7,68,3,4,7,1,8
DATA 2,7,1,8,4,7,69,3,3,7,1,8
DATA 2,7,1,8,3,7,70,3,4,7,2,8
DATA 4,7,70,3,4,7,2,8,4,7,71,3
DATA 3,7,2,8,3,7,72,3,8,7,72,3
DATA 8,7,73,3,6,7,74,3,6,7,74,3
DATA 6,7,74,3,6,7,75,3,4,7,76,3
DATA 4,7,76,3,4,7,76,3,4,7,77,3
DATA 2,7,199,3
DATA -1, 5, -2, 4
'lvl4
DATA 91,3,1,0,27,3,2,8,77,3,4,8,75,3
DATA 6,8,74,3,6,8,75,3,4,8,76,3
DATA 1,7,2,8,1,7,75,3,6,7,74,3
DATA 6,7,74,3,6,7,74,3,6,7,73,3
DATA 8,7,72,3,8,7,72,3,3,7,2,8
DATA 3,7,71,3,4,7,2,8,4,7,70,3
DATA 4,7,2,8,4,7,70,3,3,7,1,8
DATA 2,7,1,8,3,7,69,3,4,7,1,8
DATA 2,7,1,8,4,7,68,3,4,7,1,8
DATA 2,7,1,8,4,7,67,3,4,7,1,8
DATA 4,7,1,8,4,7,66,3,4,7,1,8
DATA 4,7,1,8,4,7,65,3,4,7,1,8
DATA 6,7,1,8,4,7,63,3,5,7,1,8
DATA 6,7,1,8,5,7,62,3,4,7,1,8
DATA 8,7,1,8,4,7,62,3,4,7,1,8
DATA 8,7,1,8,4,7,62,3,5,7,1,8
DATA 6,7,1,8,5,7,63,3,4,7,1,8
DATA 6,7,1,8,4,7,65,3,4,7,1,8
DATA 4,7,1,8,4,7,66,3,4,7,1,8
DATA 4,7,1,8,4,7,67,3,4,7,1,8
DATA 2,7,1,8,4,7,68,3,4,7,1,8
DATA 2,7,1,8,4,7,56,3,4,7,8,3
DATA 4,7,1,8,2,7,1,8,4,7,8,3
DATA 4,7,43,3,6,7,8,3,3,7,4,8
DATA 3,7,8,3,6,7,40,3,10,7,6,3
DATA 4,7,2,8,4,7,6,3,10,7,36,3
DATA 15,7,3,3,4,7,2,8,4,7,3,3
DATA 15,7,31,3,9,7,2,8,10,7,1,8
DATA 3,7,2,1,3,7,1,8,10,7,2,8
DATA 9,7,25,3,10,7,2,8,2,7,2,8
DATA 9,7,1,8,1,7,4,1,1,7,1,8
DATA 9,7,2,8,2,7,2,8,10,7,14,3
DATA 2,8,2,3,12,7,2,8,6,7,2,8
DATA 8,7,1,8,4,1,1,8,8,7,2,8
DATA 6,7,2,8,12,7,2,3,2,8,5,3
DATA 4,8,10,7,3,8,10,7,4,8,3,7
DATA 8,1,3,7,4,8,10,7,3,8,10,7
DATA 4,8,3,3,6,8,6,7,3,8,16,7
DATA 3,8,10,1,3,8,16,7,3,8,6,7
DATA 6,8,2,3,6,8,6,7,3,8,16,7
DATA 3,8,10,1,3,8,16,7,3,8,6,7
DATA 6,8,3,3,4,8,10,7,3,8,10,7
DATA 4,8,3,7,8,1,3,7,4,8,10,7
DATA 3,8,10,7,4,8,5,3,2,8,2,3
DATA 12,7,2,8,6,7,2,8,8,7,1,8
DATA 4,1,1,8,8,7,2,8,6,7,2,8
DATA 12,7,2,3,2,8,14,3,10,7,2,8
DATA 2,7,2,8,9,7,1,8,1,7,4,1
DATA 1,7,1,8,9,7,2,8,2,7,2,8
DATA 10,7,25,3,9,7,2,8,10,7,1,8
DATA 3,7,2,1,3,7,1,8,10,7,2,8
DATA 9,7,31,3,15,7,3,3,4,7,2,8
DATA 4,7,3,3,15,7,36,3,10,7,6,3
DATA 4,7,2,8,4,7,6,3,10,7,40,3
DATA 6,7,8,3,3,7,4,8,3,7,8,3
DATA 6,7,43,3,4,7,8,3,4,7,1,8
DATA 2,7,1,8,4,7,8,3,4,7,56,3
DATA 4,7,1,8,2,7,1,8,4,7,68,3
DATA 4,7,1,8,2,7,1,8,4,7,67,3
DATA 4,7,1,8,4,7,1,8,4,7,66,3
DATA 4,7,1,8,4,7,1,8,4,7,65,3
DATA 4,7,1,8,6,7,1,8,4,7,63,3
DATA 5,7,1,8,6,7,1,8,5,7,62,3
DATA 4,7,1,8,8,7,1,8,4,7,62,3
DATA 4,7,1,8,8,7,1,8,4,7,62,3
DATA 5,7,1,8,6,7,1,8,5,7,63,3
DATA 4,7,1,8,6,7,1,8,4,7,65,3
DATA 4,7,1,8,4,7,1,8,4,7,66,3
DATA 4,7,1,8,4,7,1,8,4,7,67,3
DATA 4,7,1,8,2,7,1,8,4,7,68,3
DATA 4,7,1,8,2,7,1,8,4,7,69,3
DATA 3,7,1,8,2,7,1,8,3,7,70,3
DATA 4,7,2,8,4,7,70,3,4,7,2,8
DATA 4,7,71,3,3,7,2,8,3,7,72,3
DATA 8,7,72,3,8,7,73,3,6,7,74,3
DATA 6,7,74,3,6,7,74,3,6,7,75,3
DATA 1,7,2,8,1,7,76,3,4,8,75,3
DATA 6,8,74,3,6,8,75,3,4,8,77,3
DATA 2,8,119,3
DATA -1, 5, -2, 4
'lvl5
DATA 91,3,1,0,27,3,2,6,77,3,4,6,75,3
DATA 6,6,74,3,6,6,75,3,4,6,76,3
DATA 1,7,2,6,1,7,75,3,6,7,74,3
DATA 6,7,74,3,6,7,74,3,6,7,73,3
DATA 8,7,72,3,8,7,72,3,3,7,2,8
DATA 3,7,71,3,4,7,2,8,4,7,70,3
DATA 4,7,2,8,4,7,70,3,3,7,1,8
DATA 2,7,1,8,3,7,69,3,4,7,1,8
DATA 2,7,1,8,4,7,68,3,4,7,1,8
DATA 2,7,1,8,4,7,67,3,4,7,1,8
DATA 4,7,1,8,4,7,66,3,4,7,1,8
DATA 4,7,1,8,4,7,65,3,4,7,1,8
DATA 6,7,1,8,4,7,63,3,5,7,1,8
DATA 6,7,1,8,5,7,62,3,4,7,1,8
DATA 8,7,1,8,4,7,62,3,4,7,1,8
DATA 8,7,1,8,4,7,62,3,5,7,1,8
DATA 6,7,1,8,5,7,63,3,4,7,1,8
DATA 6,7,1,8,4,7,65,3,4,7,1,8
DATA 4,7,1,8,4,7,66,3,4,7,1,8
DATA 4,7,1,8,4,7,67,3,4,7,1,8
DATA 2,7,1,8,4,7,68,3,4,7,1,8
DATA 2,7,1,8,4,7,56,3,4,7,8,3
DATA 4,7,1,8,2,7,1,8,4,7,8,3
DATA 4,7,43,3,6,7,8,3,3,7,4,8
DATA 3,7,8,3,6,7,40,3,10,7,6,3
DATA 4,7,2,8,4,7,6,3,10,7,36,3
DATA 15,7,3,3,4,7,2,8,4,7,3,3
DATA 15,7,31,3,9,7,2,8,10,7,1,8
DATA 3,7,2,1,3,7,1,8,10,7,2,8
DATA 9,7,25,3,10,7,2,8,2,7,2,8
DATA 9,7,1,8,1,7,4,1,1,7,1,8
DATA 9,7,2,8,2,7,2,8,10,7,14,3
DATA 2,6,2,3,12,7,2,8,6,7,2,8
DATA 8,7,1,8,4,1,1,8,8,7,2,8
DATA 6,7,2,8,12,7,2,3,2,6,5,3
DATA 4,6,10,7,3,8,10,7,4,8,3,7
DATA 8,1,3,7,4,8,10,7,3,8,10,7
DATA 4,6,3,3,6,6,6,7,3,8,16,7
DATA 3,8,10,1,3,8,16,7,3,8,6,7
DATA 6,6,2,3,6,6,6,7,3,8,16,7
DATA 3,8,10,1,3,8,16,7,3,8,6,7
DATA 6,6,3,3,4,6,10,7,3,8,10,7
DATA 4,8,3,7,8,1,3,7,4,8,10,7
DATA 3,8,10,7,4,6,5,3,2,6,2,3
DATA 12,7,2,8,6,7,2,8,8,7,1,8
DATA 4,1,1,8,8,7,2,8,6,7,2,8
DATA 12,7,2,3,2,6,14,3,10,7,2,8
DATA 2,7,2,8,9,7,1,8,1,7,4,1
DATA 1,7,1,8,9,7,2,8,2,7,2,8
DATA 10,7,25,3,9,7,2,8,10,7,1,8
DATA 3,7,2,1,3,7,1,8,10,7,2,8
DATA 9,7,31,3,15,7,3,3,4,7,2,8
DATA 4,7,3,3,15,7,36,3,10,7,6,3
DATA 4,7,2,8,4,7,6,3,10,7,40,3
DATA 6,7,8,3,3,7,4,8,3,7,8,3
DATA 6,7,43,3,4,7,8,3,4,7,1,8
DATA 2,7,1,8,4,7,8,3,4,7,56,3
DATA 4,7,1,8,2,7,1,8,4,7,68,3
DATA 4,7,1,8,2,7,1,8,4,7,67,3
DATA 4,7,1,8,4,7,1,8,4,7,66,3
DATA 4,7,1,8,4,7,1,8,4,7,65,3
DATA 4,7,1,8,6,7,1,8,4,7,63,3
DATA 5,7,1,8,6,7,1,8,5,7,62,3
DATA 4,7,1,8,8,7,1,8,4,7,62,3
DATA 4,7,1,8,8,7,1,8,4,7,62,3
DATA 5,7,1,8,6,7,1,8,5,7,63,3
DATA 4,7,1,8,6,7,1,8,4,7,65,3
DATA 4,7,1,8,4,7,1,8,4,7,66,3
DATA 4,7,1,8,4,7,1,8,4,7,67,3
DATA 4,7,1,8,2,7,1,8,4,7,68,3
DATA 4,7,1,8,2,7,1,8,4,7,69,3
DATA 3,7,1,8,2,7,1,8,3,7,70,3
DATA 4,7,2,8,4,7,70,3,4,7,2,8
DATA 4,7,71,3,3,7,2,8,3,7,72,3
DATA 8,7,72,3,8,7,73,3,6,7,74,3
DATA 6,7,74,3,6,7,74,3,6,7,75,3
DATA 1,7,2,6,1,7,76,3,4,6,75,3
DATA 6,6,74,3,6,6,75,3,4,6,77,3
DATA 2,6,119,3
DATA -1, 5, -2, 4
'lvl6
DATA 91,3,1,0,27,3,2,6,77,3,4,6,75,3
DATA 6,6,74,3,6,6,75,3,4,6,76,3
DATA 1,7,2,6,1,7,75,3,6,7,74,3
DATA 6,7,74,3,6,7,74,3,6,7,73,3
DATA 8,7,72,3,8,7,72,3,3,7,2,8
DATA 3,7,71,3,4,7,2,8,4,7,70,3
DATA 4,7,2,8,4,7,70,3,3,7,1,8
DATA 2,7,1,8,3,7,69,3,4,7,1,8
DATA 2,7,1,8,4,7,68,3,4,7,1,8
DATA 2,7,1,8,4,7,67,3,4,7,1,8
DATA 4,7,1,8,4,7,66,3,4,7,1,8
DATA 4,7,1,8,4,7,54,3,3,8,8,3
DATA 4,7,1,8,6,7,1,8,4,7,8,3
DATA 3,8,42,3,1,8,2,7,3,8,4,3
DATA 5,7,1,8,6,7,1,8,5,7,4,3
DATA 3,8,2,7,1,8,42,3,1,8,5,7
DATA 2,8,2,3,4,7,1,8,8,7,1,8
DATA 4,7,2,3,2,8,5,7,1,8,43,3
DATA 1,8,6,7,1,8,1,3,4,7,1,8
DATA 8,7,1,8,4,7,1,3,1,8,6,7
DATA 1,8,44,3,1,8,7,7,1,8,5,7
DATA 1,8,6,7,1,8,5,7,1,8,7,7
DATA 1,8,44,3,1,8,8,7,1,8,4,7
DATA 1,8,6,7,1,8,4,7,1,8,8,7
DATA 1,8,45,3,1,8,8,7,1,8,4,7
DATA 1,8,4,7,1,8,4,7,1,8,8,7
DATA 1,8,46,3,1,8,8,7,1,8,4,7
DATA 1,8,4,7,1,8,4,7,1,8,8,7
DATA 1,8,47,3,1,8,8,7,1,8,4,7
DATA 1,8,2,7,1,8,4,7,1,8,8,7
DATA 1,8,49,3,1,8,7,7,1,8,4,7
DATA 1,8,2,7,1,8,4,7,1,8,7,7
DATA 1,8,47,3,4,7,1,8,6,7,1,8
DATA 4,7,1,8,2,7,1,8,4,7,1,8
DATA 6,7,1,8,4,7,43,3,6,7,2,8
DATA 5,7,1,8,3,7,4,8,3,7,1,8
DATA 5,7,2,8,6,7,40,3,10,7,3,8
DATA 2,7,1,8,4,7,2,8,4,7,1,8
DATA 2,7,3,8,10,7,36,3,15,7,3,8
DATA 4,7,2,8,4,7,3,8,15,7,31,3
DATA 9,7,2,8,10,7,1,8,3,7,2,1
DATA 3,7,1,8,10,7,2,8,9,7,25,3
DATA 10,7,2,8,2,7,2,8,9,7,1,8
DATA 1,7,4,1,1,7,1,8,9,7,2,8
DATA 2,7,2,8,10,7,14,3,2,6,2,3
DATA 12,7,2,8,6,7,2,8,8,7,1,8
DATA 4,1,1,8,8,7,2,8,6,7,2,8
DATA 12,7,2,3,2,6,5,3,4,6,10,7
DATA 3,8,10,7,4,8,3,7,8,1,3,7
DATA 4,8,10,7,3,8,10,7,4,6,3,3
DATA 6,6,6,7,3,8,16,7,3,8,10,1
DATA 3,8,16,7,3,8,6,7,6,6,2,3
DATA 6,6,6,7,3,8,16,7,3,8,10,1
DATA 3,8,16,7,3,8,6,7,6,6,3,3
DATA 4,6,10,7,3,8,10,7,4,8,3,7
DATA 8,1,3,7,4,8,10,7,3,8,10,7
DATA 4,6,5,3,2,6,2,3,12,7,2,8
DATA 6,7,2,8,8,7,1,8,4,1,1,8
DATA 8,7,2,8,6,7,2,8,12,7,2,3
DATA 2,6,14,3,10,7,2,8,2,7,2,8
DATA 9,7,1,8,1,7,4,1,1,7,1,8
DATA 9,7,2,8,2,7,2,8,10,7,25,3
DATA 9,7,2,8,10,7,1,8,3,7,2,1
DATA 3,7,1,8,10,7,2,8,9,7,31,3
DATA 15,7,3,8,4,7,2,8,4,7,3,8
DATA 15,7,36,3,10,7,3,8,2,7,1,8
DATA 4,7,2,8,4,7,1,8,2,7,3,8
DATA 10,7,40,3,6,7,2,8,5,7,1,8
DATA 3,7,4,8,3,7,1,8,5,7,2,8
DATA 6,7,43,3,4,7,1,8,6,7,1,8
DATA 4,7,1,8,2,7,1,8,4,7,1,8
DATA 6,7,1,8,4,7,47,3,1,8,7,7
DATA 1,8,4,7,1,8,2,7,1,8,4,7
DATA 1,8,7,7,1,8,49,3,1,8,8,7
DATA 1,8,4,7,1,8,2,7,1,8,4,7
DATA 1,8,8,7,1,8,47,3,1,8,8,7
DATA 1,8,4,7,1,8,4,7,1,8,4,7
DATA 1,8,8,7,1,8,46,3,1,8,8,7
DATA 1,8,4,7,1,8,4,7,1,8,4,7
DATA 1,8,8,7,1,8,45,3,1,8,8,7
DATA 1,8,4,7,1,8,6,7,1,8,4,7
DATA 1,8,8,7,1,8,44,3,1,8,7,7
DATA 1,8,5,7,1,8,6,7,1,8,5,7
DATA 1,8,7,7,1,8,44,3,1,8,6,7
DATA 1,8,1,3,4,7,1,8,8,7,1,8
DATA 4,7,1,3,1,8,6,7,1,8,43,3
DATA 1,8,5,7,2,8,2,3,4,7,1,8
DATA 8,7,1,8,4,7,2,3,2,8,5,7
DATA 1,8,42,3,1,8,2,7,3,8,4,3
DATA 5,7,1,8,6,7,1,8,5,7,4,3
DATA 3,8,2,7,1,8,42,3,3,8,8,3
DATA 4,7,1,8,6,7,1,8,4,7,8,3
DATA 3,8,54,3,4,7,1,8,4,7,1,8
DATA 4,7,66,3,4,7,1,8,4,7,1,8
DATA 4,7,67,3,4,7,1,8,2,7,1,8
DATA 4,7,68,3,4,7,1,8,2,7,1,8
DATA 4,7,69,3,3,7,1,8,2,7,1,8
DATA 3,7,70,3,4,7,2,8,4,7,70,3
DATA 4,7,2,8,4,7,71,3,3,7,2,8
DATA 3,7,72,3,8,7,72,3,8,7,73,3
DATA 6,7,74,3,6,7,74,3,6,7,74,3
DATA 6,7,75,3,1,7,2,6,1,7,76,3
DATA 4,6,75,3,6,6,74,3,6,6,75,3
DATA 4,6,77,3,2,6,119,3
DATA -1, 5, -2, 4
'lvl7
DATA 91,3,1,0,27,3,2,1,77,3,4,1,75,3
DATA 6,1,74,3,6,1,75,3,4,1,76,3
DATA 1,7,2,1,1,7,75,3,6,7,74,3
DATA 6,7,74,3,6,7,74,3,6,7,73,3
DATA 8,7,72,3,8,7,72,3,3,7,2,5
DATA 3,7,71,3,4,7,2,5,4,7,70,3
DATA 4,7,2,5,4,7,70,3,3,7,1,5
DATA 2,7,1,5,3,7,69,3,4,7,1,5
DATA 2,7,1,5,4,7,68,3,4,7,1,5
DATA 2,7,1,5,4,7,67,3,4,7,1,5
DATA 4,7,1,5,4,7,66,3,4,7,1,5
DATA 4,7,1,5,4,7,54,3,3,8,8,3
DATA 4,7,1,5,6,7,1,5,4,7,8,3
DATA 3,8,42,3,1,8,2,7,3,8,4,3
DATA 5,7,1,5,6,7,1,5,5,7,4,3
DATA 3,8,2,7,1,8,42,3,1,8,5,7
DATA 2,8,2,3,4,7,1,5,8,7,1,5
DATA 4,7,2,3,2,8,5,7,1,8,43,3
DATA 1,8,6,7,1,8,1,3,4,7,1,5
DATA 8,7,1,5,4,7,1,3,1,8,6,7
DATA 1,8,44,3,1,8,7,7,1,8,5,7
DATA 1,5,6,7,1,5,5,7,1,8,7,7
DATA 1,8,44,3,1,8,8,7,1,8,4,7
DATA 1,5,6,7,1,5,4,7,1,8,8,7
DATA 1,8,45,3,1,8,8,7,1,8,4,7
DATA 1,5,4,7,1,5,4,7,1,8,8,7
DATA 1,8,46,3,1,8,8,7,1,8,4,7
DATA 1,5,4,7,1,5,4,7,1,8,8,7
DATA 1,8,47,3,1,8,8,7,1,8,4,7
DATA 1,5,2,7,1,5,4,7,1,8,8,7
DATA 1,8,49,3,1,8,7,7,1,8,4,7
DATA 1,5,2,7,1,5,4,7,1,8,7,7
DATA 1,8,47,3,4,7,1,8,6,7,1,8
DATA 4,7,1,5,2,7,1,5,4,7,1,8
DATA 6,7,1,8,4,7,43,3,6,7,2,8
DATA 5,7,1,8,4,7,2,5,4,7,1,8
DATA 5,7,2,8,6,7,40,3,10,7,3,8
DATA 2,7,1,8,4,7,2,5,4,7,1,8
DATA 2,7,3,8,10,7,36,3,15,7,3,8
DATA 4,7,2,5,4,7,3,8,15,7,31,3
DATA 9,7,2,5,10,7,1,8,3,7,2,1
DATA 3,7,1,8,10,7,2,5,9,7,25,3
DATA 10,7,2,5,2,7,2,5,9,7,1,8
DATA 1,7,4,1,1,7,1,8,9,7,2,5
DATA 2,7,2,5,10,7,14,3,2,1,2,3
DATA 12,7,2,5,6,7,2,5,8,7,1,8
DATA 4,1,1,8,8,7,2,5,6,7,2,5
DATA 12,7,2,3,2,1,5,3,4,1,10,7
DATA 3,5,10,7,3,5,4,7,8,1,4,7
DATA 3,5,10,7,3,5,10,7,4,1,3,3
DATA 6,1,6,7,3,5,16,7,3,5,10,1
DATA 3,5,16,7,3,5,6,7,6,1,2,3
DATA 6,1,6,7,3,5,16,7,3,5,10,1
DATA 3,5,16,7,3,5,6,7,6,1,3,3
DATA 4,1,10,7,3,5,10,7,3,5,4,7
DATA 8,1,4,7,3,5,10,7,3,5,10,7
DATA 4,1,5,3,2,1,2,3,12,7,2,5
DATA 6,7,2,5,8,7,1,8,4,1,1,8
DATA 8,7,2,5,6,7,2,5,12,7,2,3
DATA 2,1,14,3,10,7,2,5,2,7,2,5
DATA 9,7,1,8,1,7,4,1,1,7,1,8
DATA 9,7,2,5,2,7,2,5,10,7,25,3
DATA 9,7,2,5,10,7,1,8,3,7,2,1
DATA 3,7,1,8,10,7,2,5,9,7,31,3
DATA 15,7,3,8,4,7,2,5,4,7,3,8
DATA 15,7,36,3,10,7,3,8,2,7,1,8
DATA 4,7,2,5,4,7,1,8,2,7,3,8
DATA 10,7,40,3,6,7,2,8,5,7,1,8
DATA 4,7,2,5,4,7,1,8,5,7,2,8
DATA 6,7,43,3,4,7,1,8,6,7,1,8
DATA 4,7,1,5,2,7,1,5,4,7,1,8
DATA 6,7,1,8,4,7,47,3,1,8,7,7
DATA 1,8,4,7,1,5,2,7,1,5,4,7
DATA 1,8,7,7,1,8,49,3,1,8,8,7
DATA 1,8,4,7,1,5,2,7,1,5,4,7
DATA 1,8,8,7,1,8,47,3,1,8,8,7
DATA 1,8,4,7,1,5,4,7,1,5,4,7
DATA 1,8,8,7,1,8,46,3,1,8,8,7
DATA 1,8,4,7,1,5,4,7,1,5,4,7
DATA 1,8,8,7,1,8,45,3,1,8,8,7
DATA 1,8,4,7,1,5,6,7,1,5,4,7
DATA 1,8,8,7,1,8,44,3,1,8,7,7
DATA 1,8,5,7,1,5,6,7,1,5,5,7
DATA 1,8,7,7,1,8,44,3,1,8,6,7
DATA 1,8,1,3,4,7,1,5,8,7,1,5
DATA 4,7,1,3,1,8,6,7,1,8,43,3
DATA 1,8,5,7,2,8,2,3,4,7,1,5
DATA 8,7,1,5,4,7,2,3,2,8,5,7
DATA 1,8,42,3,1,8,2,7,3,8,4,3
DATA 5,7,1,5,6,7,1,5,5,7,4,3
DATA 3,8,2,7,1,8,42,3,3,8,8,3
DATA 4,7,1,5,6,7,1,5,4,7,8,3
DATA 3,8,54,3,4,7,1,5,4,7,1,5
DATA 4,7,66,3,4,7,1,5,4,7,1,5
DATA 4,7,67,3,4,7,1,5,2,7,1,5
DATA 4,7,68,3,4,7,1,5,2,7,1,5
DATA 4,7,69,3,3,7,1,5,2,7,1,5
DATA 3,7,70,3,4,7,2,5,4,7,70,3
DATA 4,7,2,5,4,7,71,3,3,7,2,5
DATA 3,7,72,3,8,7,72,3,8,7,73,3
DATA 6,7,74,3,6,7,74,3,6,7,74,3
DATA 6,7,75,3,1,7,2,1,1,7,76,3
DATA 4,1,75,3,6,1,74,3,6,1,75,3
DATA 4,1,77,3,2,1,119,3
DATA -1, 5, -2, 4
'lvl8
DATA 91,3,1,0,27,3,2,1,77,3,4,1,75,3
DATA 6,1,74,3,6,1,75,3,4,1,76,3
DATA 1,7,2,1,1,7,75,3,6,7,74,3
DATA 6,7,74,3,6,7,74,3,6,7,73,3
DATA 8,7,72,3,8,7,72,3,3,7,2,5
DATA 3,7,71,3,4,7,2,5,4,7,70,3
DATA 4,7,2,5,4,7,70,3,3,7,1,5
DATA 2,7,1,5,3,7,69,3,4,7,1,5
DATA 2,7,1,5,4,7,68,3,4,7,1,5
DATA 2,7,1,5,4,7,67,3,4,7,1,5
DATA 4,7,1,5,4,7,66,3,4,7,1,5
DATA 4,7,1,5,4,7,54,3,3,5,8,3
DATA 4,7,1,5,6,7,1,5,4,7,8,3
DATA 3,5,42,3,1,5,2,7,3,5,4,3
DATA 5,7,1,5,6,7,1,5,5,7,4,3
DATA 3,5,2,7,1,5,42,3,1,5,5,7
DATA 2,5,2,3,4,7,1,5,8,7,1,5
DATA 4,7,2,3,2,5,5,7,1,5,43,3
DATA 1,5,6,7,1,5,1,3,4,7,1,5
DATA 8,7,1,5,4,7,1,3,1,5,6,7
DATA 1,5,44,3,1,5,7,7,1,5,5,7
DATA 1,5,6,7,1,5,5,7,1,5,7,7
DATA 1,5,44,3,1,5,8,7,1,5,4,7
DATA 1,5,6,7,1,5,4,7,1,5,8,7
DATA 1,5,45,3,1,5,8,7,1,5,4,7
DATA 1,5,4,7,1,5,4,7,1,5,8,7
DATA 1,5,46,3,1,5,8,7,1,5,4,7
DATA 1,5,4,7,1,5,4,7,1,5,8,7
DATA 1,5,47,3,1,5,8,7,1,5,4,7
DATA 1,5,2,7,1,5,4,7,1,5,8,7
DATA 1,5,49,3,1,5,7,7,1,5,4,7
DATA 1,5,2,7,1,5,4,7,1,5,7,7
DATA 1,5,47,3,4,7,1,5,6,7,1,5
DATA 4,7,1,5,2,7,1,5,4,7,1,5
DATA 6,7,1,5,4,7,43,3,6,7,2,5
DATA 5,7,1,5,4,7,2,5,4,7,1,5
DATA 5,7,2,5,6,7,40,3,10,7,3,5
DATA 2,7,1,5,4,7,2,5,4,7,1,5
DATA 2,7,3,5,10,7,36,3,15,7,3,5
DATA 4,7,2,5,4,7,3,5,15,7,31,3
DATA 9,7,2,5,10,7,1,5,3,7,2,4
DATA 3,7,1,5,10,7,2,5,9,7,25,3
DATA 10,7,2,5,2,7,2,5,9,7,1,5
DATA 1,7,4,4,1,7,1,5,9,7,2,5
DATA 2,7,2,5,10,7,14,3,2,1,2,3
DATA 12,7,2,5,6,7,2,5,8,7,1,5
DATA 4,4,1,5,8,7,2,5,6,7,2,5
DATA 12,7,2,3,2,1,5,3,4,1,10,7
DATA 3,5,10,7,3,5,4,7,8,4,4,7
DATA 3,5,10,7,3,5,10,7,4,1,3,3
DATA 6,1,6,7,3,5,16,7,3,5,10,4
DATA 3,5,16,7,3,5,6,7,6,1,2,3
DATA 6,1,6,7,3,5,16,7,3,5,10,4
DATA 3,5,16,7,3,5,6,7,6,1,3,3
DATA 4,1,10,7,3,5,10,7,3,5,4,7
DATA 8,4,4,7,3,5,10,7,3,5,10,7
DATA 4,1,5,3,2,1,2,3,12,7,2,5
DATA 6,7,2,5,8,7,1,5,4,4,1,5
DATA 8,7,2,5,6,7,2,5,12,7,2,3
DATA 2,1,14,3,10,7,2,5,2,7,2,5
DATA 9,7,1,5,1,7,4,4,1,7,1,5
DATA 9,7,2,5,2,7,2,5,10,7,25,3
DATA 9,7,2,5,10,7,1,5,3,7,2,4
DATA 3,7,1,5,10,7,2,5,9,7,31,3
DATA 15,7,3,5,4,7,2,5,4,7,3,5
DATA 15,7,36,3,10,7,3,5,2,7,1,5
DATA 4,7,2,5,4,7,1,5,2,7,3,5
DATA 10,7,40,3,6,7,2,5,5,7,1,5
DATA 4,7,2,5,4,7,1,5,5,7,2,5
DATA 6,7,43,3,4,7,1,5,6,7,1,5
DATA 4,7,1,5,2,7,1,5,4,7,1,5
DATA 6,7,1,5,4,7,47,3,1,5,7,7
DATA 1,5,4,7,1,5,2,7,1,5,4,7
DATA 1,5,7,7,1,5,49,3,1,5,8,7
DATA 1,5,4,7,1,5,2,7,1,5,4,7
DATA 1,5,8,7,1,5,47,3,1,5,8,7
DATA 1,5,4,7,1,5,4,7,1,5,4,7
DATA 1,5,8,7,1,5,46,3,1,5,8,7
DATA 1,5,4,7,1,5,4,7,1,5,4,7
DATA 1,5,8,7,1,5,45,3,1,5,8,7
DATA 1,5,4,7,1,5,6,7,1,5,4,7
DATA 1,5,8,7,1,5,44,3,1,5,7,7
DATA 1,5,5,7,1,5,6,7,1,5,5,7
DATA 1,5,7,7,1,5,44,3,1,5,6,7
DATA 1,5,1,3,4,7,1,5,8,7,1,5
DATA 4,7,1,3,1,5,6,7,1,5,43,3
DATA 1,5,5,7,2,5,2,3,4,7,1,5
DATA 8,7,1,5,4,7,2,3,2,5,5,7
DATA 1,5,42,3,1,5,2,7,3,5,4,3
DATA 5,7,1,5,6,7,1,5,5,7,4,3
DATA 3,5,2,7,1,5,42,3,3,5,8,3
DATA 4,7,1,5,6,7,1,5,4,7,8,3
DATA 3,5,54,3,4,7,1,5,4,7,1,5
DATA 4,7,66,3,4,7,1,5,4,7,1,5
DATA 4,7,67,3,4,7,1,5,2,7,1,5
DATA 4,7,68,3,4,7,1,5,2,7,1,5
DATA 4,7,69,3,3,7,1,5,2,7,1,5
DATA 3,7,70,3,4,7,2,5,4,7,70,3
DATA 4,7,2,5,4,7,71,3,3,7,2,5
DATA 3,7,72,3,8,7,72,3,8,7,73,3
DATA 6,7,74,3,6,7,74,3,6,7,74,3
DATA 6,7,75,3,1,7,2,1,1,7,76,3
DATA 4,1,75,3,6,1,74,3,6,1,75,3
DATA 4,1,77,3,2,1,119,3
DATA -1, 5, -2, 4
'lvl9
DATA 91,3,1,0,27,3,2,5,77,3,4,5,75,3
DATA 6,5,74,3,6,5,75,3,4,5,76,3
DATA 1,7,2,5,1,7,75,3,6,7,74,3
DATA 6,7,74,3,6,7,74,3,6,7,73,3
DATA 8,7,72,3,8,7,72,3,3,7,2,5
DATA 3,7,71,3,4,7,2,5,4,7,70,3
DATA 4,7,2,5,4,7,70,3,3,7,1,5
DATA 2,7,1,5,3,7,69,3,4,7,1,5
DATA 2,7,1,5,4,7,68,3,4,7,1,5
DATA 2,7,1,5,4,7,67,3,4,7,1,5
DATA 4,7,1,5,4,7,66,3,4,7,1,5
DATA 4,7,1,5,4,7,54,3,3,5,8,3
DATA 4,7,1,5,6,7,1,5,4,7,8,3
DATA 3,5,42,3,1,5,2,1,3,5,4,3
DATA 5,7,1,5,6,7,1,5,5,7,4,3
DATA 3,5,2,1,1,5,42,3,1,5,5,1
DATA 2,5,2,3,4,7,1,5,8,7,1,5
DATA 4,7,2,3,2,5,5,1,1,5,43,3
DATA 1,5,6,1,1,5,1,3,4,7,1,5
DATA 8,7,1,5,4,7,1,3,1,5,6,1
DATA 1,5,44,3,1,5,7,1,1,5,5,7
DATA 1,5,6,7,1,5,5,7,1,5,7,1
DATA 1,5,44,3,1,5,8,1,1,5,4,7
DATA 1,5,6,7,1,5,4,7,1,5,8,1
DATA 1,5,45,3,1,5,8,1,1,5,4,7
DATA 1,5,4,7,1,5,4,7,1,5,8,1
DATA 1,5,46,3,1,5,8,1,1,5,4,7
DATA 1,5,4,7,1,5,4,7,1,5,8,1
DATA 1,5,47,3,1,5,8,1,1,5,4,7
DATA 1,5,2,7,1,5,4,7,1,5,8,1
DATA 1,5,49,3,1,5,7,1,1,5,4,7
DATA 1,5,2,7,1,5,4,7,1,5,7,1
DATA 1,5,47,3,4,7,1,5,6,1,1,5
DATA 4,7,1,5,2,7,1,5,4,7,1,5
DATA 6,1,1,5,4,7,43,3,6,7,2,5
DATA 4,1,1,7,1,5,4,7,2,5,4,7
DATA 1,5,5,1,2,5,6,7,40,3,10,7
DATA 3,5,2,1,1,5,4,7,2,5,4,7
DATA 1,5,2,1,3,5,10,7,36,3,15,7
DATA 3,5,4,7,2,5,4,7,3,5,15,7
DATA 31,3,9,7,2,5,10,7,1,5,3,7
DATA 2,4,3,7,1,5,10,7,2,5,9,7
DATA 25,3,10,7,2,5,2,7,2,5,9,7
DATA 1,5,1,7,4,4,1,7,1,5,9,7
DATA 2,5,2,7,2,5,10,7,14,3,2,5
DATA 2,3,12,7,2,5,6,7,2,5,8,7
DATA 1,5,4,4,1,5,8,7,2,5,6,7
DATA 2,5,12,7,2,3,2,5,5,3,4,5
DATA 10,7,3,5,10,7,3,5,4,7,8,4
DATA 4,7,3,5,10,7,3,5,10,7,4,5
DATA 3,3,6,5,6,7,3,5,16,7,3,5
DATA 10,4,3,5,16,7,3,5,6,7,6,5
DATA 2,3,6,5,6,7,3,5,16,7,3,5
DATA 10,4,3,5,16,7,3,5,6,7,6,5
DATA 3,3,4,5,10,7,3,5,10,7,3,5
DATA 4,7,8,4,4,7,3,5,10,7,3,5
DATA 10,7,4,5,5,3,2,5,2,3,12,7
DATA 2,5,6,7,2,5,8,7,1,5,4,4
DATA 1,5,8,7,2,5,6,7,2,5,12,7
DATA 2,3,2,5,14,3,10,7,2,5,2,7
DATA 2,5,9,7,1,5,1,7,4,4,1,7
DATA 1,5,9,7,2,5,2,7,2,5,10,7
DATA 25,3,9,7,2,5,10,7,1,5,3,7
DATA 2,4,3,7,1,5,10,7,2,5,9,7
DATA 31,3,15,7,3,5,4,7,2,5,4,7
DATA 3,5,15,7,36,3,10,7,3,5,2,1
DATA 1,5,4,7,2,5,4,7,1,5,2,1
DATA 3,5,10,7,40,3,6,7,2,5,5,1
DATA 1,5,4,7,2,5,4,7,1,5,5,1
DATA 2,5,6,7,43,3,4,7,1,5,6,1
DATA 1,5,4,7,1,5,2,7,1,5,4,7
DATA 1,5,6,1,1,5,4,7,47,3,1,5
DATA 7,1,1,5,4,7,1,5,2,7,1,5
DATA 4,7,1,5,7,1,1,5,49,3,1,5
DATA 8,1,1,5,4,7,1,5,2,7,1,5
DATA 4,7,1,5,8,1,1,5,47,3,1,5
DATA 8,1,1,5,4,7,1,5,4,7,1,5
DATA 4,7,1,5,8,1,1,5,46,3,1,5
DATA 8,1,1,5,4,7,1,5,4,7,1,5
DATA 4,7,1,5,8,1,1,5,45,3,1,5
DATA 8,1,1,5,4,7,1,5,6,7,1,5
DATA 4,7,1,5,8,1,1,5,44,3,1,5
DATA 7,1,1,5,5,7,1,5,6,7,1,5
DATA 5,7,1,5,7,1,1,5,44,3,1,5
DATA 6,1,1,5,1,3,4,7,1,5,8,7
DATA 1,5,4,7,1,3,1,5,6,1,1,5
DATA 43,3,1,5,5,1,2,5,2,3,4,7
DATA 1,5,8,7,1,5,4,7,2,3,2,5
DATA 5,1,1,5,42,3,1,5,2,1,3,5
DATA 4,3,5,7,1,5,6,7,1,5,5,7
DATA 4,3,3,5,2,1,1,5,42,3,3,5
DATA 8,3,4,7,1,5,6,7,1,5,4,7
DATA 8,3,3,5,54,3,4,7,1,5,4,7
DATA 1,5,4,7,66,3,4,7,1,5,4,7
DATA 1,5,4,7,67,3,4,7,1,5,2,7
DATA 1,5,4,7,68,3,4,7,1,5,2,7
DATA 1,5,4,7,69,3,3,7,1,5,2,7
DATA 1,5,3,7,70,3,4,7,2,5,4,7
DATA 70,3,4,7,2,5,4,7,71,3,3,7
DATA 2,5,3,7,72,3,8,7,72,3,8,7
DATA 73,3,6,7,74,3,6,7,74,3,6,7
DATA 74,3,6,7,75,3,1,7,2,5,1,7
DATA 76,3,4,5,75,3,6,5,74,3,6,5
DATA 75,3,4,5,77,3,2,5,119,3
DATA -1, 5, -2, 4
'lvl10
DATA 38,3,4,5,49,3,1,0,25,3,2,5,2,4
DATA 2,5,73,3,2,5,4,4,2,5,71,3
DATA 2,5,6,4,2,5,70,3,2,5,6,4
DATA 2,5,71,3,2,5,4,4,2,5,72,3
DATA 3,5,2,4,3,5,72,3,8,5,72,3
DATA 2,5,1,7,2,5,1,7,2,5,72,3
DATA 2,5,4,7,2,5,72,3,2,5,4,7
DATA 2,5,71,3,2,5,6,7,2,5,70,3
DATA 2,5,6,7,2,5,70,3,2,5,6,7
DATA 2,5,69,3,2,5,3,7,2,5,3,7
DATA 2,5,68,3,2,5,2,7,4,5,2,7
DATA 2,5,68,3,2,5,1,7,2,5,2,4
DATA 2,5,1,7,2,5,67,3,2,5,2,7
DATA 2,5,2,4,2,5,2,7,2,5,66,3
DATA 2,5,2,7,2,5,2,4,2,5,2,7
DATA 2,5,65,3,2,5,2,7,2,5,4,4
DATA 2,5,2,7,2,5,53,3,3,5,8,3
DATA 2,5,2,7,2,5,4,4,2,5,2,7
DATA 2,5,8,3,3,5,41,3,7,5,4,3
DATA 2,5,2,7,2,5,6,4,2,5,2,7
DATA 2,5,4,3,7,5,40,3,2,5,2,1
DATA 5,5,1,3,2,5,3,7,2,5,6,4
DATA 2,5,3,7,2,5,1,3,5,5,2,1
DATA 2,5,40,3,2,5,5,1,5,5,2,7
DATA 2,5,8,4,2,5,2,7,5,5,5,1
DATA 2,5,41,3,2,5,6,1,3,5,2,7
DATA 2,5,8,4,2,5,2,7,3,5,6,1
DATA 2,5,42,3,2,5,7,1,2,5,3,7
DATA 2,5,6,4,2,5,3,7,2,5,7,1
DATA 2,5,42,3,2,5,8,1,2,5,2,7
DATA 2,5,6,4,2,5,2,7,2,5,8,1
DATA 2,5,43,3,2,5,8,1,2,5,2,7
DATA 2,5,4,4,2,5,2,7,2,5,8,1
DATA 2,5,44,3,2,5,8,1,2,5,2,7
DATA 2,5,4,4,2,5,2,7,2,5,8,1
DATA 2,5,45,3,2,5,8,1,2,5,2,7
DATA 2,5,2,4,2,5,2,7,2,5,8,1
DATA 2,5,45,3,4,5,7,1,2,5,2,7
DATA 2,5,2,4,2,5,2,7,2,5,7,1
DATA 4,5,43,3,6,5,6,1,2,5,2,7
DATA 2,5,2,4,2,5,2,7,2,5,6,1
DATA 6,5,40,3,3,5,4,7,3,5,5,1
DATA 2,5,2,7,4,5,2,7,2,5,5,1
DATA 3,5,4,7,3,5,36,3,4,5,6,7
DATA 5,5,2,1,2,5,2,7,4,5,2,7
DATA 2,5,2,1,5,5,6,7,2,5,2,6
DATA 31,3,5,5,4,7,2,5,4,7,5,5
DATA 1,1,1,5,2,7,1,5,2,1,1,5
DATA 2,7,1,5,1,1,5,5,4,7,2,5
DATA 4,7,2,5,3,6,17,3,2,5,6,3
DATA 6,5,4,7,6,5,5,7,3,5,1,1
DATA 2,5,1,1,2,6,1,1,2,5,1,1
DATA 3,5,5,7,6,5,4,7,3,5,3,6
DATA 6,3,2,6,5,3,12,5,5,7,4,5
DATA 2,4,4,5,6,7,1,5,2,1,4,6
DATA 2,1,1,5,6,7,4,5,2,4,4,5
DATA 5,7,3,5,6,6,2,5,1,6,3,3
DATA 2,5,2,4,6,5,5,7,5,5,6,4
DATA 5,5,3,7,1,5,1,1,6,6,1,1
DATA 1,5,3,7,5,5,6,4,5,5,5,7
DATA 6,5,2,4,1,5,1,6,1,3,2,5
DATA 4,4,2,5,7,7,4,5,10,4,6,5
DATA 1,1,8,6,1,1,6,5,10,4,4,5
DATA 7,7,2,5,4,4,1,5,1,6,1,5
DATA 6,4,2,5,5,7,2,5,16,4,2,6
DATA 2,1,8,6,2,1,2,6,16,4,2,5
DATA 5,7,2,5,6,4,2,5,6,4,2,5
DATA 5,7,2,5,16,4,2,6,2,1,8,6
DATA 2,1,2,6,16,4,2,5,5,7,2,5
DATA 6,4,3,5,4,4,2,5,7,7,4,5
DATA 10,4,6,5,1,1,8,6,1,1,6,5
DATA 10,4,4,5,7,7,2,5,4,4,1,5
DATA 1,6,1,3,2,5,2,4,6,5,5,7
DATA 5,5,6,4,5,5,3,7,1,5,1,1
DATA 6,6,1,1,1,5,3,7,5,5,6,4
DATA 5,5,5,7,6,5,2,4,1,5,1,6
DATA 3,3,12,5,5,7,4,5,2,4,4,5
DATA 6,7,1,5,2,1,4,6,2,1,1,5
DATA 6,7,4,5,2,4,4,5,5,7,3,5
DATA 6,6,2,5,1,6,5,3,2,5,6,3
DATA 6,5,4,7,6,5,5,7,3,5,1,1
DATA 2,5,1,1,2,6,1,1,2,5,1,1
DATA 3,5,5,7,6,5,4,7,3,5,3,6
DATA 6,3,2,6,17,3,5,5,4,7,2,5
DATA 4,7,5,5,1,1,1,5,2,7,1,5
DATA 2,1,1,5,2,7,1,5,1,1,5,5
DATA 4,7,2,5,4,7,2,5,3,6,31,3
DATA 4,5,6,7,5,5,2,1,2,5,2,7
DATA 1,5,2,6,1,5,2,7,2,5,2,1
DATA 5,5,6,7,2,5,2,6,36,3,3,5
DATA 4,7,3,5,5,1,2,5,2,7,1,5
DATA 2,6,1,5,2,7,2,5,5,1,3,5
DATA 4,7,1,5,2,6,40,3,6,5,6,1
DATA 2,5,2,7,2,5,2,4,2,5,2,7
DATA 2,5,6,1,5,5,1,6,43,3,4,5
DATA 7,1,2,5,2,7,2,5,2,4,2,5
DATA 2,7,2,5,7,1,1,5,3,6,45,3
DATA 2,5,8,1,2,5,2,7,2,5,2,4
DATA 2,5,2,7,2,5,8,1,2,5,45,3
DATA 2,5,8,1,2,5,2,7,2,5,4,4
DATA 2,5,2,7,2,5,8,1,2,5,44,3
DATA 2,5,8,1,2,5,2,7,2,5,4,4
DATA 2,5,2,7,2,5,8,1,2,5,43,3
DATA 2,5,8,1,2,5,2,7,2,5,6,4
DATA 2,5,2,7,2,5,8,1,2,5,42,3
DATA 2,5,7,1,2,5,3,7,2,5,6,4
DATA 2,5,3,7,2,5,7,1,2,5,42,3
DATA 2,5,6,1,3,5,2,7,2,5,8,4
DATA 2,5,2,7,3,5,6,1,2,5,41,3
DATA 2,5,5,1,5,5,2,7,2,5,8,4
DATA 2,5,2,7,5,5,5,1,2,5,40,3
DATA 2,5,2,1,5,5,1,3,2,5,3,7
DATA 2,5,6,4,2,5,3,7,2,5,1,3
DATA 5,5,2,1,2,5,40,3,7,5,4,3
DATA 2,5,2,7,2,5,6,4,2,5,2,7
DATA 2,5,4,3,7,5,41,3,3,5,8,3
DATA 2,5,2,7,2,5,4,4,2,5,2,7
DATA 2,5,8,3,3,5,53,3,2,5,2,7
DATA 2,5,4,4,2,5,2,7,2,5,65,3
DATA 2,5,2,7,2,5,2,4,2,5,2,7
DATA 2,5,66,3,2,5,2,7,2,5,2,4
DATA 2,5,2,7,2,5,67,3,2,5,1,7
DATA 2,5,2,4,2,5,1,7,2,5,68,3
DATA 2,5,2,7,4,5,2,7,2,5,68,3
DATA 2,5,3,7,2,5,3,7,2,5,69,3
DATA 2,5,6,7,2,5,70,3,2,5,6,7
DATA 2,5,70,3,2,5,6,7,2,5,71,3
DATA 2,5,4,7,2,5,72,3,2,5,4,7
DATA 2,5,72,3,2,5,1,7,2,5,1,7
DATA 2,5,72,3,8,5,72,3,3,5,2,4
DATA 3,5,72,3,2,5,4,4,2,5,71,3
DATA 2,5,6,4,2,5,70,3,2,5,6,4
DATA 2,5,71,3,2,5,4,4,2,5,73,3
DATA 2,5,2,4,2,5,75,3,4,5,38,3
DATA -1, 5, -2, 4




    
This message has been edited by Tusike on Dec 22, 2007 11:08 AM
This message has been edited by Tusike on Dec 16, 2007 5:50 AM
This message has been edited by Tusike on Dec 15, 2007 9:38 AM


 
 Respond to this message   

(Login Tusike)

profile.bas - used in Snake

December 15 2007, 9:40 AM 

DEFINT A-Z
DECLARE SUB center (text$, y!)
DECLARE FUNCTION eng$ (number, language)
DIM image(10000)

DIM SHARED global$
OPEN "profile.txt" FOR INPUT AS #1
INPUT #1, nickname$
INPUT #1, avscore
INPUT #1, gplayed
INPUT #1, lvl
INPUT #1, lang%
INPUT #1, nextlvl$
INPUT #1, cpu#
CLOSE #1
IF lang% = 1 THEN
a$ = "Player name:"
b$ = "Games played:"
c$ = "Average score:"
d$ = "Current level:"
e1$ = "Next level at:"
e2$ = "You have reached the highest level!"
END IF
IF lang% = 2 THEN
a$ = "J@t#kos neve:"
b$ = "J@t#kok sz@ma:"
c$ = "^@tlagos pontsz@m:"
d$ = "Mostani szint:"
e1$ = "K<vetkez< szint:"
e2$ = "El#rted a legmagasabb szintet!"
END IF
center SPACE$(65), 1
center eng$(70, lang%) + " " + MID$(RTRIM$(nickname$), 1, 1) + LCASE$(MID$(RTRIM$(nickname$), 2, LEN(RTRIM$(nickname$)) - 1)), 1
center "-9-" + a$ + "-5- " + UCASE$(MID$(nickname$, 1, 1)) + LCASE$(MID$(nickname$, 2, LEN(nickname$) - 1)), 12
center "-9-" + b$ + "-15- " + LTRIM$(RTRIM$(STR$(gplayed))), 15
center "-9-" + c$ + "-15- " + LTRIM$(RTRIM$(STR$(avscore))), 19
center "-9-" + d$ + "-15- " + LTRIM$(RTRIM$(STR$(lvl))), 21
IF nextlvl$ <> "0" THEN center "-9-" + e1$ + "-15- " + nextlvl$, 17
IF nextlvl$ = "0" THEN center e2$, 17
KILL "profile.txt"
OPEN "profile.txt" FOR OUTPUT AS #1
PRINT #1, nickname$
PRINT #1, cpu#
CLOSE #1
center "-15-[ -5-" + eng$(22, lang%) + "-15- ]", 28
DO
a$ = INKEY$
IF a$ = CHR$(27) THEN SYSTEM
LOOP UNTIL a$ = CHR$(32) OR a$ = CHR$(13)

CHAIN "snake.bas"
handler:
PRINT global$
SYSTEM
RESUME

DEFSNG A-Z
SUB center (text$, y)
DIM letter(0 TO 199)
textlen = LEN(text$)
FOR i = 1 TO LEN(text$)
a$ = MID$(text$, i, 1)
IF a$ = "^" THEN textlen = textlen - 1
IF a$ = "-" THEN
textlen = textlen - 2
IF MID$(text$, i + 2, 1) = "-" THEN
textlen = textlen - 1: i = i + 3: GOTO 20
ELSE
textlen = textlen - 2: i = i + 4: GOTO 20
END IF
END IF
20
NEXT
s = 0
textlen = textlen * 8
startx = 320 - (textlen / 2)
y = (y - 1) * 2 + y * 14 - 14
c = 15
ii = 0
FOR i = 1 TO LEN(text$)
a$ = MID$(text$, i, 1)
IF a$ = "-" THEN
IF MID$(text$, i + 2, 1) = "-" THEN c = VAL(MID$(text$, i + 1, 1)): i = i + 2 ELSE c = VAL(MID$(text$, i + 1, 2)): i = i + 3
GOTO 21
END IF
IF a$ = "^" THEN s = 1: GOTO 21
ii = ii + 1
IF a$ = " " THEN
LINE (startx + (ii - 1) * 8, y)-(startx + (ii) * 8, y + 14), 3, BF
GOTO 21
END IF
z = ASC(a$)
SELECT CASE a$
CASE "=": z = 45
CASE "#": IF s = 1 THEN s = 0: z = 144 ELSE z = 130
CASE "@": IF s = 1 THEN s = 0: z = 143 ELSE z = 160
CASE "|": IF s = 1 THEN s = 0: z = 161 ELSE z = 161
CASE "$": IF s = 1 THEN s = 0: z = 162 ELSE z = 162
CASE "_": IF s = 1 THEN s = 0: z = 163 ELSE z = 163
CASE "<": IF s = 1 THEN s = 0: z = 153 ELSE z = 148
CASE ">": IF s = 1 THEN s = 0: z = 154 ELSE z = 129
END SELECT
DEF SEG = VARSEG(letter(0))
global$ = "letters\chr" + LTRIM$(RTRIM$(STR$(z))) + ".chr"
ON ERROR GOTO handler
BLOAD "letters\chr" + LTRIM$(RTRIM$(STR$(z))) + ".chr", VARPTR(letter(0))
DEF SEG
ON ERROR GOTO 0
x = startx + (ii - 1) * 8
SELECT CASE c
CASE 5: index = 160
CASE 8: index = 0
CASE 9: index = 120
CASE 12: index = 40
CASE 15: index = 80
END SELECT
global$ = STR$(x) + STR$(y) + STR$(index)
ON ERROR GOTO handler
IF y > 0 AND (z = 144 OR z = 143 OR z = 154 OR z = 153) THEN PUT (x, y - 2), letter(index), PSET ELSE PUT (x, y), letter(index), PSET
ON ERROR GOTO 0
21
NEXT

END SUB

DEFINT A-Z
FUNCTION eng$ (number, language)
SELECT CASE language
CASE 1
OPEN "files\english.txt" FOR RANDOM AS #10 LEN = 35
CASE 2
OPEN "files\magyar.txt" FOR RANDOM AS #10 LEN = 35
END SELECT
GET #10, number, t$
CLOSE #10
eng$ = LTRIM$(RTRIM$((t$)))

END FUNCTION



    
This message has been edited by Tusike on Dec 22, 2007 11:08 AM


 
 Respond to this message   

(Login Tusike)

Custom.bas - allows USERS to create levels

December 22 2007, 11:09 AM 

DECLARE SUB adios ()
DECLARE SUB openmap ()
DECLARE FUNCTION ask$ (text$, x%, y%, max%, mode%)
DECLARE SUB savemap ()
DECLARE FUNCTION MenuChoice% (selections%, start%, xstart%)
DECLARE SUB center (text$, y!)
DEFINT A-Z
DECLARE SUB editor ()
DECLARE SUB drawdef ()
DECLARE SUB PUTimage (col, row, index)
DECLARE SUB restorecolors ()
DECLARE FUNCTION eng$ (number, language)
DECLARE SUB mouse (cx, dx, bx)
DECLARE SUB MousePointer (SW)
DIM SHARED a(9), a$
SCREEN 12
DIM SHARED global$, imageSET(999), ground(1 TO 32, 1 TO 24), background(7820) AS SINGLE
DIM SHARED mch(1 TO 8) AS INTEGER, lang%, hasname, map$, block(125), cpu#, nickname$
DIM SHARED mx, my, mclick, oldx, oldy
GOSUB Getsprites
ON ERROR GOTO ignore
MKDIR "maps"
ON ERROR GOTO 0
OPEN "profile.txt" FOR INPUT AS #1
INPUT #1, nickname$
INPUT #1, lang%
INPUT #1, cpu#
CLOSE #1
map$ = ""
DEF SEG = VARSEG(a(0))

FOR i = 0 TO 17
READ r
POKE VARPTR(a(0)) + i, r
NEXT i
CALL MousePointer(0)
CALL MousePointer(3)

DATA &HB8,&H00,&H00
DATA &H55
DATA &H8B,&HEC
DATA &HCD,&H33
DATA &H92
DATA &H8B,&H5E,&H06
DATA &H89,&H07
DATA &H5D
DATA &HCA,&H02,&H00


hasname = 0

drawdef
restorecolors
editor
adios

Getsprites:
FOR n = 0 TO 15
OUT &H3C8, n
OUT &H3C9, 0
OUT &H3C9, 0
OUT &H3C9, 0
NEXT n
maxx = 19: maxy = 139: x = -1: y = 0
OPEN "files\images.dat" FOR INPUT AS #1
DO

INPUT #1, counter, colr
IF colr = 7 THEN colr = 3: GOTO 17
IF colr = 14 THEN colr = 3
IF colr = 77 THEN colr = 7
IF colr = 2 AND y > 279 THEN colr = 11
17
FOR i = 1 TO counter
x = x + 1
IF x > maxx THEN x = 0: y = y + 1
PSET (x, y), colr
NEXT
LOOP UNTIL x = maxx AND y = maxy
CLOSE #1
index = 0
placey = 0
DO
GET (0, placey)-(19, placey + 19), imageSET(index)
index = index + 125
placey = placey + 20
LOOP UNTIL placey = 140
LINE (0, 0)-(19, 19), 7, BF
FOR i = 1 TO 500
x = INT(RND * 20)
y = INT(RND * 20)
PSET (x, y), 8
PSET (x + 1, y + 1), 15
NEXT
LINE (0, 0)-(19, 19), 7, B
GET (0, 0)-(19, 19), imageSET(875)
LINE (0, 0)-(8, 8), 7, B
GET (0, 0)-(8, 8), block
PUTimage 1, 1, 750
FOR x = 0 TO 19
FOR y = 0 TO 19
PSET (19 - x, y + 20), POINT(x, y)
NEXT
NEXT
GET (0, 20)-(19, 39), imageSET(750)
PUTimage 1, 1, 0
FOR x = 0 TO 19
FOR y = 0 TO 19
PSET (19 - x, y + 20), POINT(x, y)
NEXT
NEXT
GET (0, 20)-(19, 39), imageSET(0)
RETURN

handler:
PRINT global$
SYSTEM
RETURN

ignore: RESUME NEXT






Paletteinfo:
DATA 0,14,3, 0,0,42, 0,42,0, 0,14,3, 42,0,0, 60,52,0
DATA 60,52,0, 42,42,42, 21,21,21, 21,21,63, 21,63,21, 0,42,0
DATA 63,21,21, 63,21,63, 0,0,0, 63,63,63

SUB adios
KILL "profile.txt"
OPEN "profile.txt" FOR OUTPUT AS #1
PRINT #1, nickname$
PRINT #1, cpu#
CLOSE #1
CHAIN "snake.bas"

END SUB

FUNCTION ask$ (text$, x, y, max, mode)
COLOR 15
startx = x + LEN(text$): x = (x + LEN(text$)) * 8
txtlen = 0
LINE (x, (y - 1) * 2 + y * 14 - 14)-(x, (y - 1) * 2 + y * 14), 7
txt$ = ""
DO
DO: LOOP UNTIL INKEY$ = ""
DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
COLOR 5
SELECT CASE a$
CASE CHR$(13): IF txt$ <> "" THEN EXIT DO
CASE CHR$(27)

ask$ = "exit": EXIT FUNCTION
CASE CHR$(8)
IF txtlen > 0 THEN
LOCATE y, startx + txtlen: PRINT SPACE$(max - txtlen + 2)
txtlen = txtlen - 1: IF txtlen = 0 THEN txt$ = "" ELSE txt$ = MID$(txt$, 1, txtlen)
COLOR 5
IF mode = 1 THEN LOCATE y, startx + 1: PRINT txt$ ELSE LOCATE y, startx + 1: PRINT STRING$(txtlen, "*")
LINE (x + (txtlen * 8), (y - 1) * 2 + y * 14 - 14)-(x + (txtlen * 8), (y - 1) * 2 + y * 14), 7
END IF
CASE ELSE
IF mode = 2 THEN minimum = 33: maximum = 126 ELSE minimum = 48: maximum = 90
a1 = ASC(UCASE$(a$))
IF (a1 >= minimum AND a1 <= maximum) OR (a1 = 32) AND txtlen <= max THEN
IF a1 < 58 OR a1 > 64 THEN
txtlen = txtlen + 1
IF txtlen <= max THEN
IF mode = 1 THEN LOCATE y, startx + txtlen: PRINT UCASE$(a$) ELSE LOCATE y, startx + txtlen: PRINT "*"
txt$ = txt$ + UCASE$(a$)
LINE (x + txtlen * 8, (y - 1) * 2 + y * 14 - 14)-(x + txtlen * 8, (y - 1) * 2 + y * 14), 7
ELSE
txtlen = max
END IF
END IF
END IF
END SELECT
LOOP
LINE (x + LEN(txt$) * 8, (y - 1) * 2 + y * 14 - 14)-(x + LEN(txt$) * 8, (y - 1) * 2 + y * 14), 3
ask$ = txt$
END FUNCTION

DEFSNG A-Z
SUB center (text$, y)
DIM letter(0 TO 199)
textlen = LEN(text$)
FOR i = 1 TO LEN(text$)
a$ = MID$(text$, i, 1)
IF a$ = "^" THEN textlen = textlen - 1
IF a$ = "-" THEN
textlen = textlen - 2
IF MID$(text$, i + 2, 1) = "-" THEN
textlen = textlen - 1: i = i + 3: GOTO 20
ELSE
textlen = textlen - 2: i = i + 4: GOTO 20
END IF
END IF
20
NEXT
s = 0

textlen = textlen * 8
startx = 320 - (textlen / 2)
y = (y - 1) * 2 + y * 14 - 14
C = 15
ii = 0
FOR i = 1 TO LEN(text$)
a$ = MID$(text$, i, 1)
IF a$ = "-" THEN
IF MID$(text$, i + 2, 1) = "-" THEN C = VAL(MID$(text$, i + 1, 1)): i = i + 2 ELSE C = VAL(MID$(text$, i + 1, 2)): i = i + 3
GOTO 21
END IF
IF a$ = "^" THEN s = 1: GOTO 21
ii = ii + 1
IF a$ = " " THEN
LINE (startx + (ii - 1) * 8, y)-(startx + (ii) * 8, y + 14), 3, BF
GOTO 21
END IF
z = ASC(a$)
SELECT CASE a$
CASE "=": z = 45
CASE "#": IF s = 1 THEN s = 0: z = 144 ELSE z = 130
CASE "@": IF s = 1 THEN s = 0: z = 143 ELSE z = 160
CASE "|": IF s = 1 THEN s = 0: z = 161 ELSE z = 161
CASE "$": IF s = 1 THEN s = 0: z = 162 ELSE z = 162
CASE "_": IF s = 1 THEN s = 0: z = 163 ELSE z = 163
CASE "<": IF s = 1 THEN s = 0: z = 153 ELSE z = 148
CASE ">": IF s = 1 THEN s = 0: z = 154 ELSE z = 129
END SELECT
DEF SEG = VARSEG(letter(0))
global$ = "letters\chr" + LTRIM$(RTRIM$(STR$(z))) + ".chr"
ON ERROR GOTO handler
BLOAD "letters\chr" + LTRIM$(RTRIM$(STR$(z))) + ".chr", VARPTR(letter(0))
ON ERROR GOTO 0
x = startx + (ii - 1) * 8
SELECT CASE C
CASE 5: index = 160
CASE 8: index = 0
CASE 9: index = 120
CASE 12: index = 40
CASE 15: index = 80
END SELECT
global$ = STR$(x) + STR$(y) + STR$(index)
ON ERROR GOTO handler
IF y > 0 AND (z = 144 OR z = 143 OR z = 154 OR z = 153) THEN PUT (x, y - 2), letter(index), PSET ELSE PUT (x, y), letter(index), PSET
ON ERROR GOTO 0
21
NEXT

END SUB

DEFINT A-Z
SUB drawdef
LINE (0, 0)-(639, 479), 3, BF
FOR x = 1 TO 32
FOR y = 1 TO 24
ground(x, y) = 0
NEXT
NEXT

FOR x = 1 TO 32
PUTimage x, 1, 875
PUTimage x, 24, 875
ground(x, 1) = 1
ground(x, 24) = 1
NEXT
FOR y = 2 TO 23
PUTimage 1, y, 875
PUTimage 32, y, 875
ground(1, y) = 1
ground(32, y) = 1
NEXT

center "-9-" + LTRIM$(RTRIM$(eng$(78, lang%))) + "-15- = " + LTRIM$(RTRIM$(eng$(79, lang%))) + SPACE$(12) + "-9-[ENTER]-15- = " + RTRIM$(LTRIM$(eng$(80, lang%))) + SPACE$(12) + "-9-[ESC] -15-= " + RTRIM$(LTRIM$(eng$(81, lang%))), 27
LINE (29, 461)-(610, 478), 15, BF
FOR x = 23 TO 616
FOR y = 414 TO 432
IF POINT(x, y) = 9 THEN PSET (x, y), 3: PSET (x, y + 49), 4
IF POINT(x, y) = 15 THEN PSET (x, y), 3: PSET (x, y + 49), 3
NEXT
NEXT
center "-9-[CTRL] = S-15- = " + RTRIM$(LTRIM$(eng$(82, lang%))) + SPACE$(10) + "-9-" + RTRIM$(LTRIM$(eng$(89, lang%))) + "-15-" + SPACE$(10) + "-9-[CTRL] = O -15-= " + RTRIM$(LTRIM$(eng$(83, lang%))), 3
IF lang% = 1 THEN
LINE (88, 37)-(94, 37), 15
LINE (91, 34)-(91, 40), 15
LINE (534, 37)-(528, 37), 15
LINE (531, 34)-(531, 40), 15
END IF
IF lang% = 2 THEN
LINE (92, 37)-(98, 37), 15
LINE (95, 34)-(95, 40), 15
LINE (508, 37)-(514, 37), 15
LINE (511, 34)-(511, 40), 15
END IF
LINE (25, 1)-(614, 18), 15, BF
FOR x = 25 TO 614
FOR y = 23 TO 50
IF POINT(x, y) = 9 THEN PSET (x, y), 3: PSET (x, y - 28), 4
IF POINT(x, y) = 15 THEN PSET (x, y), 3: PSET (x, y + -28), 3
NEXT
NEXT

x = 24
FOR i = 1 TO 15
x = x - 1
SELECT CASE i
CASE 1: index = 0
CASE 2: index = 125
CASE 3: index = 250
CASE 4: index = 375
CASE 5: index = 375
CASE 6: index = 375
CASE 7: index = 375
CASE 8: index = 375
CASE 9: index = 375
CASE 10: index = 375
CASE 11: index = 250
CASE 12: index = 125
CASE 13: index = 500
CASE 14: index = 625
CASE 15: index = 750
END SELECT
PUTimage x, 23, index
NEXT i

END SUB

SUB editor
LINE (180, 109)-(460, 304), 3, BF
LINE (180, 109)-(460, 304), 7, B
LINE (182, 111)-(458, 302), 7, B
center eng$(73, lang%), 9
center eng$(84, lang%), 11
center eng$(85, lang%), 13
center eng$(86, lang%), 14
center eng$(87, lang%), 15
center eng$(88, lang%), 16
center "[ -5-" + eng$(89, lang%) + "-15- ]", 18
DO
DO: LOOP UNTIL INKEY$ = ""
DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
SELECT CASE a$
CASE CHR$(27): adios
CASE CHR$(13), CHR$(32): SOUND 150, 1: EXIT DO
END SELECT
LOOP
2
map$ = ""
LINE (190, 119)-(450, 294), 3, BF
mx = 16: my = 12
LINE ((mx - 1) * 20, (my - 1) * 20)-((mx - 1) * 20 + 19, (my - 1) * 20 + 19), 5, B
LINE ((mx - 1) * 20 + 1, (my - 1) * 20 + 1)-((mx - 1) * 20 + 18, (my - 1) * 20 + 18), 5, B

editstart:
MousePointer 1
MousePointer 2

DO
DO: LOOP UNTIL INKEY$ = ""
a$ = INKEY$
MousePointer 3
oldx = mx: oldy = my
CALL mouse(cx, dx, bx)
a$ = INKEY$
SELECT CASE a$
CASE CHR$(27): EXIT SUB
CASE CHR$(19): savemap
LINE ((mx - 1) * 20, (my - 1) * 20)-((mx - 1) * 20 + 19, (my - 1) * 20 + 19), 5, B
LINE ((mx - 1) * 20 + 1, (my - 1) * 20 + 1)-((mx - 1) * 20 + 18, (my - 1) * 20 + 18), 5, B
CASE CHR$(15): openmap
LINE ((mx - 1) * 20, (my - 1) * 20)-((mx - 1) * 20 + 19, (my - 1) * 20 + 19), 5, B
LINE ((mx - 1) * 20 + 1, (my - 1) * 20 + 1)-((mx - 1) * 20 + 18, (my - 1) * 20 + 18), 5, B
CASE CHR$(13)
EXIT DO
1
END SELECT
IF oldx <> mx OR oldy <> my THEN
LINE ((oldx - 1) * 20, (oldy - 1) * 20)-((oldx - 1) * 20 + 19, (oldy - 1) * 20 + 19), 3, BF
IF ground(oldx, oldy) = 1 THEN PUTimage oldx, oldy, 875
LINE ((mx - 1) * 20, (my - 1) * 20)-((mx - 1) * 20 + 19, (my - 1) * 20 + 19), 5, B
LINE ((mx - 1) * 20 + 1, (my - 1) * 20 + 1)-((mx - 1) * 20 + 18, (my - 1) * 20 + 18), 5, B
END IF
IF mclick = 1 THEN
IF ground(mx, my) = 0 THEN
ground(mx, my) = 1: PUTimage mx, my, 875
LINE ((mx - 1) * 20, (my - 1) * 20)-((mx - 1) * 20 + 19, (my - 1) * 20 + 19), 5, B
LINE ((mx - 1) * 20 + 1, (my - 1) * 20 + 1)-((mx - 1) * 20 + 18, (my - 1) * 20 + 18), 5, B
END IF
END IF
IF mclick = 2 THEN
IF ground(mx, my) = 1 THEN
ground(mx, my) = 2: PUTimage mx, my, 1000
LINE ((mx - 1) * 20, (my - 1) * 20)-((mx - 1) * 20 + 19, (my - 1) * 20 + 19), 5, B
LINE ((mx - 1) * 20 + 1, (my - 1) * 20 + 1)-((mx - 1) * 20 + 18, (my - 1) * 20 + 18), 5, B
END IF
END IF



LOOP

menupause:
GET (190, 119)-(450, 294), background
LINE (190, 119)-(450, 294), 3, BF
LINE (190, 119)-(450, 294), 7, B
LINE (192, 121)-(448, 292), 7, B
center eng$(73, lang%), 10
mch(1) = 46
mch(2) = 75
mch(3) = 22
PALETTE 5, 60 + 52 * 256
SELECT CASE MenuChoice(3, 1, 13)
CASE 1: PUT (190, 119), background, PSET: GOTO 1
CASE 2
FOR x = 2 TO 31
FOR y = 2 TO 22
PUTimage x, y, 1000
ground(x, y) = 0
NEXT
NEXT
FOR x = 2 TO 8
PUTimage x, 23, 1000
ground(x, 23) = 0
PUTimage x + 22, 23, 1000
ground(x + 22, 23) = 0
NEXT
PUTimage 31, 23, 1000
ground(31, 23) = 0
hasname = 0
GOTO 2
CASE 3
adios
END SELECT
END SUB

FUNCTION eng$ (number, language)
SELECT CASE language
CASE 1
OPEN "files\english.txt" FOR RANDOM AS #7 LEN = 35
CASE 2
OPEN "files\magyar.txt" FOR RANDOM AS #7 LEN = 35
END SELECT
GET #7, number, t$
CLOSE #7
eng$ = LTRIM$(RTRIM$((t$)))

END FUNCTION

FUNCTION MenuChoice% (selections, start, xstart)
sel = start
CONST MenuBright = "-15-"
CONST MenuDull = "-8-"
DO
FOR i = 1 TO selections
IF mch(i) > 0 THEN
w$ = eng$(mch(i), lang%)
IF i = sel THEN w$ = MenuBright + "[ " + "-5-" + w$ + MenuBright + " ]" ELSE w$ = MenuDull + " " + w$ + " "
center w$, xstart + ((i - 1) * 2)
END IF
NEXT i
DO: LOOP UNTIL INKEY$ = "": DO: a$ = UCASE$(INKEY$): LOOP WHILE a$ = ""

SOUND 150, 1
SELECT CASE a$
CASE CHR$(27): adios
CASE CHR$(0) + "P":
DO
sel = sel + 1: IF sel > selections THEN sel = 1
LOOP WHILE mch(sel) = 0
CASE CHR$(0) + "H":
DO
sel = sel - 1: IF sel < 1 THEN sel = selections
LOOP WHILE mch(sel) = 0
CASE CHR$(13), CHR$(32): side$ = "": EXIT DO
CASE CHR$(0) + "K": IF side$ = "?" THEN side$ = "-": EXIT DO
CASE CHR$(0) + "M": IF side$ = "?" THEN side$ = "+": EXIT DO
END SELECT
t# = TIMER + .05: DO: LOOP UNTIL TIMER >= t#
LOOP

MenuChoice% = sel

END FUNCTION

SUB mouse (cx, dx, bx)
DEF SEG = VARSEG(a(0))
POKE VARPTR(a(4)), &H92
CALL absolute(cx, VARPTR(a(0)))
cx = cx
POKE VARPTR(a(4)), &H91
CALL absolute(dx, VARPTR(a(0)))
dx = dx
POKE VARPTR(a(4)), &H93
CALL absolute(bx, VARPTR(a(0)))
DEF SEG
mclick = bx
mx = INT(dx / 20) + 1
my = INT(cx / 20) + 1
IF my < 2 THEN my = 2
IF my > 23 THEN my = 23
IF mx < 2 THEN mx = 2
IF mx > 31 THEN mx = 31
IF my = 23 AND mx > 8 AND mx < 24 THEN my = 22
IF my = 23 AND mx = 9 THEN mx = 8
IF my = 23 AND mx = 23 THEN mx = 24
END SUB

SUB MousePointer (SW)
DEF SEG = VARSEG(a(0))
POKE VARPTR(a(0)) + 1, SW 'Swap code,Set AX = (SW)
CALL absolute(C, VARPTR(a(0))) 'Run Code

'Note:
'SW = 0-reset
'SW = 1-on
'SW = 2-off
'SW = 3-coordinates
a$ = INKEY$
DEF SEG
END SUB

SUB openmap
GET (190, 119)-(450, 334), background
LINE (190, 119)-(450, 334), 3, BF
LINE (190, 119)-(450, 334), 7, B
LINE (192, 121)-(448, 332), 7, B
PALETTE 5, 60 + 52 * 256
IF lang% = 1 THEN center "-12-O P E N M A P", 9 ELSE center "-12-P ^@ L Y A N Y I T ^@ S A", 9
SHELL "dir /b maps\*.lvl > temp"
OPEN "temp" FOR INPUT AS #1
OPEN "maps.dat" FOR RANDOM AS #2 LEN = 14
counter = 0
DO WHILE NOT EOF(1)
counter = counter + 1
LINE INPUT #1, map$
PUT #2, counter, map$
LOOP
CLOSE #1
CLOSE #2
KILL "TEMP"
mark = 1
max = counter
OPEN "maps.dat" FOR RANDOM AS #1 LEN = 14
GET #1, mark, map$
center UCASE$(MID$(map$, 1, 1)) + LCASE$(MID$(map$, 2, LEN(map$) - 5)), 10
OPEN "maps\" + map$ FOR INPUT AS #2
FOR x = 1 TO 32
FOR y = 1 TO 24
INPUT #2, g
IF g = 1 THEN PUT (208 + (x - 1) * 7, 158 + (y - 1) * 7), block, PSET
NEXT
NEXT
CLOSE #2
DO
DO: a$ = INKEY$: LOOP UNTIL a$ = ""
DO: a$ = INKEY$: LOOP UNTIL a$ <> ""
SELECT CASE a$
CASE CHR$(0) + "M": mark = mark + 1: center SPACE$(8), 10: IF mark > counter THEN mark = 1
CASE CHR$(0) + "K": mark = mark - 1: center SPACE$(8), 10: IF mark < 1 THEN mark = counter
CASE CHR$(13), CHR$(32): EXIT DO
CASE CHR$(27): CLOSE #1: KILL "maps.dat": PUT (190, 119), background, PSET: EXIT SUB
END SELECT
GET #1, mark, map$
center UCASE$(MID$(map$, 1, 1)) + LCASE$(MID$(map$, 2, LEN(map$) - 5)), 10
OPEN "maps\" + map$ FOR INPUT AS #2
FOR x = 1 TO 32
FOR y = 1 TO 24
INPUT #2, g
IF g = 1 THEN PUT (208 + (x - 1) * 7, 158 + (y - 1) * 7), block, PSET
IF g = 0 THEN LINE (208 + (x - 1) * 7, 158 + (y - 1) * 7)-(208 + (x - 1) * 7 + 6, 158 + (y - 1) * 7 + 6), 3, BF
NEXT
NEXT
CLOSE #2
LOOP
PUT (190, 119), background, PSET
OPEN "maps\" + map$ FOR INPUT AS #2
FOR x = 1 TO 32
FOR y = 1 TO 24
INPUT #2, ground(x, y)
IF x > 1 AND x < 32 AND y > 1 AND y < 24 THEN
IF ground(x, y) = 1 THEN PUTimage x, y, 875 ELSE PUTimage x, y, 1000
END IF
NEXT
NEXT
hasname = 1
CLOSE #2
CLOSE #1
KILL "maps.dat"

END SUB

SUB PUTimage (col, row, index)
x = (col - 1) * 20
y = (row - 1) * 20
IF index < 1000 THEN PUT (x, y), imageSET(index), PSET
IF index = 875 THEN ground(col, row) = 1 ELSE ground(col, row) = 0
IF row = 23 AND (col > 8 OR col < 24) THEN EXIT SUB
IF index = 1000 THEN LINE (x, y)-(x + 19, y + 19), 3, BF
END SUB

DEFSNG A-Z
SUB restorecolors
RESTORE Paletteinfo
FOR n = 0 TO 15
READ red, green, blue
OUT &H3C8, n
OUT &H3C9, red
OUT &H3C9, green
OUT &H3C9, blue
NEXT

END SUB

DEFINT A-Z
SUB savemap
GET (190, 119)-(450, 294), background
3
LINE (190, 119)-(450, 294), 3, BF
LINE (190, 119)-(450, 294), 7, B
LINE (192, 121)-(448, 292), 7, B
PALETTE 5, 60 + 52 * 256
center "-12-S A V E M A P", 11
IF hasname = 0 THEN
center "Enter map name:", 14
map$ = ask$("", 37, 16, 8, 1)
IF map$ = "exit" THEN CLOSE #2: PUT (190, 119), background, PSET: EXIT SUB
map$ = map$ + ".lvl"
END IF
OPEN "maps\" + map$ FOR APPEND AS #2
IF LOF(2) > 0 AND hasname = 0 THEN
center "-12-File already exists!!!", 16
SOUND 150, 1
t# = TIMER + 1
DO: LOOP UNTIL TIMER >= t#
center SPACE$(25), 16
CLOSE #2
GOTO 3
END IF
CLOSE #2
OPEN "maps\" + map$ FOR OUTPUT AS #2
hasname = 1
FOR x = 1 TO 32
FOR y = 1 TO 24
PRINT #2, ground(x, y)
NEXT
NEXT
CLOSE #2
PUT (190, 119), background, PSET
END SUB


 
 Respond to this message   
Current Topic - ProgramList Tusike
  << Previous Topic | Next Topic >>Return to Index