'===========================================================================
' Subject: GAME KUBIK UPDATE                  Date: 01-05-98 (03:03)       
'  Author: Andrey Berezansky                  Code: QB, QBasic, PDS        
'  Origin: nikolai@nsi.co.il                Packet: GAMES.ABC
'===========================================================================
' Well not much a improvement but it looks nicer and has an ending scene
' elso it is much harder (level 3  KICKS ASS) .
' In ending scene i used program "FIREPRN.BAS" programed by Andrew L. Ayers
'                                    that i found in one of the ABC packets .

' Controls - arrow keys.
' The game contains 7 cool levels and 2 "secret" codes .
' If intro is to slow in your computer just put ' before "CALL start" command.

' Programmer BEREZANSKY ANDREY  email - nikol@cs.bgu.ac.il
' If you have ANYTHING to say to me (like "the game is suck") - email me !

' If you dont like speed of your game change the delay number below
' as smaler it is as faster you game speed will be ! (defalt is for 486/66mhz)
' \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\\\\\|//////\/\/\/\/\/\/\/\/\/\/\/\/
DEFINT A-Z                                   '|
DECLARE SUB delay ()                         '|
DECLARE SUB start ()                         '|
DECLARE SUB win ()                           '|
DECLARE SUB winwin ()                        '|
DECLARE SUB level ()                         '|
DECLARE SUB lose ()                          '|
DECLARE SUB up ()                            '|
DECLARE SUB right ()                         '|
DECLARE SUB left ()                          '|
DECLARE SUB down ()                          '|
DECLARE SUB FirePrint (h%, v%, a$, tilt%)    '|
                                             '|
RANDOMIZE TIMER                              '|
SCREEN 9                                     '|
CALL start                                   '|
                                             '|
' here you can change the speed        ->\\\\\\/////<-
DIM SHARED loss(640, 13): life = 3: dellay = 3300

1 x = 20: y = 160: dlina = 7: shirina = 10: press = 6
 
CLS
lev = lev + 1
LOCATE 25, 1: PRINT "LEVEL_"; lev
LOCATE 25, 15: PRINT "LIVES_"; life
CALL level

CALL right
10 IF press = 2 THEN CALL down
   IF press = 4 THEN CALL left
   IF press = 8 THEN CALL up
   IF press = 6 THEN CALL right
   IF press = 0 THEN 100
   IF endd = 1 THEN 110
   IF press = 9 THEN 1
GOTO 10

100 IF life <> 0 THEN
      lev = lev - 1
      GOTO 1
    END IF
 
110 LOCATE 11, 21: PRINT " DO YOU WANT TO PLAY ANOTHER GAME ? (y/n) "
aa = 0: andr = 0
DO WHILE aa = 0
  SELECT CASE INKEY$
    CASE "y"
      life = 3: lev = 0: aa = 1: endd = 0: GOTO 1
    CASE "n"
      aa = 1
    CASE CHR$(36)
      DO WHILE andr = 0
        SELECT CASE INKEY$
          CASE "a"
            DO WHILE andr = 0
              SELECT CASE INKEY$
                CASE "n"
                  DO WHILE andr = 0
                    SELECT CASE INKEY$
                      CASE "d"
                        DO WHILE andr = 0
                          SELECT CASE INKEY$
                            CASE "r"
                              DO WHILE andr = 0
                                SELECT CASE INKEY$
                                  CASE "e"
                                    DO WHILE andr = 0
                                      SELECT CASE INKEY$
                                        CASE "y"
                                          life = 100: lev = lev - 1: aa = 1
                                          endd = 0: andr = 1: GOTO 1
                                        CASE ""
                                        CASE ELSE
                                          andr = 1
                                      END SELECT
                                    LOOP
                                  CASE ""
                                  CASE ELSE
                                    andr = 1
                                END SELECT
                              LOOP
                            CASE ""
                            CASE ELSE
                              andr = 1
                          END SELECT
                        LOOP
                      CASE ""
                      CASE ELSE
                        andr = 1
                    END SELECT
                  LOOP
                CASE ""
                CASE ELSE
                  andr = 1
              END SELECT
            LOOP
          CASE ""
          CASE ELSE
            andr = 1
        END SELECT
      LOOP
      andr = 0
    CASE "+"
      DO WHILE andr = 0
        SELECT CASE INKEY$
          CASE "l"
            DO WHILE andr = 0
              SELECT CASE INKEY$
                CASE "v"
                  IF lev < 8 THEN
                    life = 3: aa = 1: endd = 0: GOTO 1
                  END IF
                  aa = 1: endd = 0: andr = 1
                CASE ""
                CASE ELSE
                  andr = 1
              END SELECT
            LOOP
          CASE ""
          CASE ELSE
            andr = 1
        END SELECT
      LOOP
      andr = 0
  END SELECT
LOOP

SUB delay
SHARED press, dellay
IF press = 4 OR press = 6 THEN
  FOR mm = 1 TO dellay: NEXT
END IF
IF press = 2 OR press = 8 THEN
  FOR mm = 1 TO dellay + dellay / 4: NEXT
END IF

END SUB

SUB down
SHARED dlina, x, y, press
DO WHILE exitt = 0
  y = y + 1
'********** border ************************************
  IF y > 329 THEN
    CALL lose: exitt = 1: press = 0: GOTO 20
  END IF
'******************************************************
'******************************************************
  FOR m = 0 TO 9
    FOR mm = 1 TO 11 STEP 2
      IF y >= loss(x + m, mm) AND y <= loss(x + m, mm + 1) THEN
        CALL lose: exitt = 1: press = 0: GOTO 20
      END IF
    NEXT mm
  NEXT m
'******************************************************
  LINE (x, y)-(x + 9, y), 11: LINE (x, y - dlina)-(x + 9, y - dlina), 0
  CALL delay
  SELECT CASE INKEY$
    CASE CHR$(0) + CHR$(77)
      x = x + 9: y = y - 6: press = 6: exitt = 1
    CASE CHR$(0) + CHR$(75)
      y = y - 6: press = 4: exitt = 1
  END SELECT
20 LOOP

END SUB

SUB FirePrint (h%, v%, a$, tilt%)
  '
  ' Print the string in bright "red"
  '
  COLOR 63: LOCATE v%, h%: PRINT a$
  '
  ' Set up start and end locations for the burn
  '
  sx% = (h% * 8) - 8: ex% = ((h% + LEN(a$)) * 8) - 8
  sy% = (v% * 8) - 16: ey% = (v% * 8) - 8
  '
  FOR y% = sy% TO ey%
    FOR x% = sx% TO ex%
      '
      ' Take the current color, subtract a random amount for
      ' red flame "fade", and plot the new point
      '
      col% = POINT(x%, y%) - RND * 25: IF col% < 0 THEN col% = 0
      '
      PSET (x% + tilt%, y% - 1), col%
      '
    NEXT x%
  NEXT y%
  '
END SUB

SUB left
SHARED shirina, x, y, press
DO WHILE exitt = 0
  x = x - 1
  IF x < 2 THEN
    CALL lose: exitt = 1: press = 0: GOTO 30
  END IF
'******************************************************
  FOR mm = 1 TO 11 STEP 2
    FOR yy = 0 TO 6
      IF y + yy >= loss(x, mm) AND y + yy <= loss(x, mm + 1) THEN
        CALL lose: exitt = 1: press = 0: GOTO 30
      END IF
    NEXT yy
  NEXT mm
'******************************************************
  LINE (x, y)-(x, y + 6), 11: LINE (x + shirina, y)-(x + shirina, y + 6), 0
  CALL delay
  SELECT CASE INKEY$
    CASE CHR$(0) + CHR$(72)
      press = 8: exitt = 1
    CASE CHR$(0) + CHR$(80)
      y = y + 6: press = 2: exitt = 1
  END SELECT
30 LOOP

END SUB

SUB level
SHARED lev

IF lev = 1 THEN 1001
IF lev = 2 THEN 1002
IF lev = 3 THEN 1003
IF lev = 4 THEN 1004
IF lev = 5 THEN 1005
IF lev = 6 THEN 1006
IF lev = 7 THEN 1007
IF lev = 8 THEN 1008


1001
'-------- preparing --------
LINE (1, 1)-(630, 330), 4, B
FOR ii = 1 TO 630
  FOR m = 1 TO 13
    loss(ii, m) = 0
  NEXT m
NEXT
'---------------------------
loss(200, 1) = 1: loss(200, 2) = 60: loss(200, 3) = 75: loss(200, 4) = 255
loss(200, 5) = 270: loss(200, 6) = 330
FOR m = 201 TO 300
  loss(m, 1) = 60: loss(m, 2) = 60: loss(m, 3) = 75: loss(m, 4) = 75
  loss(m, 5) = 255: loss(m, 6) = 255: loss(m, 7) = 270: loss(m, 8) = 270
NEXT
loss(301, 1) = 20: loss(301, 2) = 60: loss(301, 3) = 75: loss(301, 4) = 75
loss(301, 5) = 255: loss(301, 6) = 255: loss(301, 7) = 270: loss(301, 8) = 310
FOR m = 302 TO 314
  loss(m, 1) = 20: loss(m, 2) = 20: loss(m, 3) = 75: loss(m, 4) = 75
  loss(m, 5) = 255: loss(m, 6) = 255: loss(m, 7) = 310: loss(m, 8) = 310
NEXT
loss(315, 1) = 20: loss(315, 2) = 20: loss(315, 3) = 35: loss(315, 4) = 75
loss(315, 5) = 255: loss(315, 6) = 295: loss(315, 7) = 310: loss(315, 8) = 310
FOR m = 316 TO 500
  loss(m, 1) = 20: loss(m, 2) = 20: loss(m, 3) = 35: loss(m, 4) = 35
  loss(m, 5) = 295: loss(m, 6) = 295: loss(m, 7) = 310: loss(m, 8) = 310
NEXT
loss(501, 1) = 20: loss(501, 2) = 20: loss(501, 3) = 35: loss(501, 4) = 295
loss(501, 5) = 310: loss(501, 6) = 310
FOR m = 502 TO 514
  loss(m, 1) = 20: loss(m, 2) = 20: loss(m, 3) = 310: loss(m, 4) = 310
NEXT
loss(515, 1) = 20: loss(515, 2) = 158: loss(515, 3) = 172: loss(515, 4) = 310
FOR m = 516 TO 629
  loss(m, 1) = 158: loss(m, 2) = 158: loss(m, 3) = 172: loss(m, 4) = 172
NEXT
loss(630, 1) = 1: loss(630, 2) = 158: loss(630, 3) = 172: loss(630, 4) = 330

'--------- WHAT A MESS !!! --------------------------------
LINE (200, 1)-(200, 60), 4: LINE (200, 75)-(200, 255), 4
LINE (200, 270)-(200, 330), 4: LINE (200, 60)-(300, 60), 4
LINE (200, 75)-(315, 75), 4: LINE (301, 20)-(301, 60), 4
LINE (315, 35)-(315, 75), 4: LINE (315, 255)-(315, 295), 4
LINE (301, 270)-(301, 310), 4: LINE (200, 255)-(315, 255), 4
LINE (200, 270)-(300, 270), 4: LINE (300, 20)-(515, 20), 4
LINE (300, 310)-(515, 310), 4: LINE (315, 35)-(500, 35), 4
LINE (315, 295)-(500, 295), 4: LINE (501, 35)-(501, 295), 4
LINE (515, 20)-(515, 158), 4: LINE (515, 172)-(515, 310), 4
LINE (515, 158)-(630, 158), 4: LINE (515, 172)-(630, 172), 4
LINE (630, 159)-(630, 171), 14
PAINT (300, 200), 9, 4: PAINT (300, 2), 1, 4: PAINT (300, 329), 1, 4
'----------------------------------------------------------
GOTO 10000

1002
'-------- preparing --------
LINE (1, 1)-(630, 330), 4, B
FOR ii = 1 TO 630
  FOR m = 1 TO 13
    loss(ii, m) = 0
  NEXT m
NEXT
'---------------------------
loss(200, 1) = 13: loss(200, 2) = 13: loss(200, 3) = 160: loss(200, 4) = 330
loss(215, 1) = 13: loss(215, 2) = 13: loss(215, 3) = 160: loss(215, 4) = 160
loss(215, 5) = 173: loss(215, 6) = 317
loss(615, 1) = 13: loss(615, 2) = 160: loss(615, 3) = 173: loss(615, 4) = 173
loss(615, 5) = 200: loss(615, 6) = 317
loss(630, 1) = 1: loss(630, 2) = 200: loss(630, 3) = 213: loss(630, 4) = 330
FOR m = 201 TO 214
  loss(m, 1) = 13: loss(m, 2) = 13: loss(m, 3) = 160: loss(m, 4) = 160
NEXT
FOR m = 216 TO 614
  loss(m, 1) = 13: loss(m, 2) = 13: loss(m, 3) = 160: loss(m, 4) = 160
  loss(m, 5) = 173: loss(m, 6) = 173: loss(m, 7) = 317: loss(m, 8) = 317
NEXT
FOR m = 616 TO 629
  loss(m, 1) = 173: loss(m, 2) = 173: loss(m, 3) = 200: loss(m, 4) = 200
NEXT

'------- That's better ------------------------------------
LINE (200, 13)-(615, 13), 4: LINE (200, 160)-(615, 160), 4
LINE (215, 173)-(630, 173), 4: LINE (215, 317)-(615, 317), 4
LINE (615, 200)-(630, 200), 4: LINE (200, 160)-(200, 330), 4
LINE (215, 173)-(215, 317), 4: LINE (615, 13)-(615, 160), 4
LINE (615, 200)-(615, 317), 4: LINE (630, 201)-(630, 212), 14

LINE (200, 7)-(210, 7), 7: LINE (210, 7)-(205, 4), 7: LINE (210, 7)-(205, 10), 7
'----------------------------------------------------------
GOTO 10000

1003
'-------- preparing --------
LINE (1, 1)-(630, 330), 4, B
FOR ii = 1 TO 630
  FOR m = 1 TO 13
    loss(ii, m) = 0
  NEXT m
NEXT
'---------------------------
FOR m = 320 TO 599
  loss(m, 1) = 280 - mm: loss(m, 2) = 280 - mm
  mm = mm + 1
NEXT
mm = 0
FOR m = 320 TO 600
  loss(m, 3) = 330 - mm: loss(m, 4) = 330 - mm
  mm = mm + 1
NEXT
loss(320, 1) = 1: loss(320, 2) = 280: loss(630, 1) = 1: loss(630, 2) = 318
loss(600, 3) = 50: loss(600, 4) = 330

'-------------- Exelent -----------------------------------
LINE (320, 1)-(320, 280), 4: LINE (320, 330)-(600, 50), 4
LINE (600, 50)-(600, 330), 4: LINE (320, 280)-(599, 1), 4
PAINT (340, 10), 5, 4: PAINT (340, 328), 5, 4
LINE (630, 319)-(630, 329), 14
'----------------------------------------------------------
GOTO 10000

1004
'-------- preparing --------
LINE (1, 1)-(630, 330), 4, B
FOR ii = 1 TO 630
  FOR m = 1 TO 13
    loss(ii, m) = 0
  NEXT m
NEXT
'---------------------------
loss(20, 1) = 20: loss(20, 2) = 159: loss(20, 3) = 167: loss(20, 4) = 310
loss(300, 1) = 20: loss(300, 2) = 20: loss(300, 3) = 100: loss(300, 4) = 159
loss(300, 5) = 167: loss(300, 6) = 230: loss(300, 7) = 310: loss(300, 8) = 310
loss(315, 1) = 20: loss(315, 2) = 20: loss(315, 3) = 100: loss(315, 4) = 100
loss(315, 5) = 111: loss(315, 6) = 219: loss(315, 7) = 230: loss(315, 8) = 230
loss(315, 9) = 310: loss(315, 10) = 310
loss(400, 1) = 20: loss(400, 2) = 20: loss(400, 3) = 100: loss(400, 4) = 100
loss(400, 5) = 111: loss(400, 6) = 219: loss(400, 7) = 230: loss(400, 8) = 230
loss(400, 9) = 310: loss(400, 10) = 310
loss(415, 1) = 20: loss(415, 2) = 20: loss(415, 3) = 100: loss(415, 4) = 230
loss(415, 5) = 310: loss(415, 6) = 310
loss(615, 1) = 20: loss(615, 2) = 310
loss(630, 1) = 1: loss(630, 2) = 20: loss(630, 3) = 310: loss(630, 4) = 330
FOR m = 21 TO 299
  loss(m, 1) = 20: loss(m, 2) = 20: loss(m, 7) = 310: loss(m, 8) = 310
  loss(m, 3) = 159: loss(m, 4) = 159: loss(m, 5) = 167: loss(m, 6) = 167
NEXT
FOR m = 301 TO 314
  loss(m, 3) = 100: loss(m, 4) = 100: loss(m, 5) = 230: loss(m, 6) = 230
  loss(m, 1) = 20: loss(m, 2) = 20: loss(m, 7) = 310: loss(m, 8) = 310
NEXT
FOR m = 316 TO 399
  loss(m, 5) = 111: loss(m, 6) = 111: loss(m, 7) = 219: loss(m, 8) = 219
  loss(m, 3) = 100: loss(m, 4) = 100: loss(m, 9) = 230: loss(m, 10) = 230
  loss(m, 1) = 20: loss(m, 2) = 20: loss(m, 11) = 310: loss(m, 12) = 310
NEXT
FOR m = 401 TO 414
  loss(m, 3) = 100: loss(m, 4) = 100: loss(m, 5) = 230: loss(m, 6) = 230
  loss(m, 1) = 20: loss(m, 2) = 20: loss(m, 7) = 310: loss(m, 8) = 310
NEXT
FOR m = 416 TO 614
  loss(m, 1) = 20: loss(m, 2) = 20: loss(m, 3) = 310: loss(m, 4) = 310
NEXT
'-------------- That's looks easy ------------------------------
LINE (20, 20)-(615, 310), 4, B: LINE (300, 100)-(415, 230), 4, B
LINE (315, 111)-(400, 219), 4, B: LINE (20, 160)-(20, 166), 0
LINE (300, 160)-(300, 166), 0: LINE (630, 21)-(630, 309), 14
LINE (20, 159)-(300, 159), 4: LINE (20, 167)-(300, 167), 4

PAINT (21, 21), 1, 4: PAINT (350, 150), 9, 4
CIRCLE (357, 165), 27, 12: PAINT (357, 165), 12, 12
LINE (335, 160)-(379, 170), 15, BF
'---------------------------------------------------------------
GOTO 10000

1005
'-------- preparing --------
LINE (1, 1)-(630, 330), 4, B
FOR ii = 1 TO 630
  FOR m = 1 TO 13
    loss(ii, m) = 0
  NEXT m
NEXT
'---------------------------
FOR m = 320 TO 599
  loss(m, 1) = 280 - mm: loss(m, 2) = 280 - mm
  mm = mm + 1
NEXT
mm = 0
FOR m = 320 TO 600
  loss(m, 3) = 330 - mm: loss(m, 4) = 330 - mm
  mm = mm + 1
NEXT
loss(630, 1) = 1: loss(630, 2) = 318: loss(600, 3) = 50: loss(600, 4) = 330
loss(40, 1) = 50: loss(40, 2) = 330
mm = 0
FOR m = 41 TO 319
  mm = mm + 1
  loss(m, 1) = mm: loss(m, 2) = mm
NEXT
mm = 0
FOR m = 41 TO 319
  mm = mm + 1
  loss(m, 3) = mm + 50: loss(m, 4) = mm + 50
NEXT

'------------- I seen this somewhere --------------------
LINE (40, 50)-(40, 330), 4: LINE (320, 330)-(600, 50), 4
LINE (600, 50)-(600, 330), 4: LINE (320, 280)-(599, 1), 4
LINE (41, 1)-(320, 280), 4: LINE (40, 50)-(320, 330), 4
LINE (630, 319)-(630, 329), 14
PAINT (340, 10), 5, 4: PAINT (340, 328), 1, 4: PAINT (50, 328), 1, 4
COLOR 5: LOCATE 2, 20: PRINT " Y O U   W I L L   N E V E R   W I N   ! ! ! ": COLOR 15
'--------------------------------------------------------
GOTO 10000

1006
'-------- preparing --------
LINE (1, 1)-(630, 330), 4, B
FOR ii = 1 TO 630
  FOR m = 1 TO 13
    loss(ii, m) = 0
  NEXT m
NEXT
'---------------------------
loss(240, 1) = 150: loss(240, 2) = 150: loss(240, 3) = 165: loss(240, 4) = 195
loss(255, 1) = 150: loss(255, 2) = 180: loss(255, 3) = 195: loss(255, 4) = 195
loss(630, 1) = 1: loss(630, 2) = 180: loss(630, 3) = 195: loss(630, 4) = 330
loss(100, 1) = 1: loss(100, 2) = 30: loss(530, 1) = 1: loss(530, 2) = 30
FOR i = 200 TO 239
  loss(i, 1) = 150: loss(i, 2) = 150: loss(i, 3) = 165: loss(i, 4) = 165
NEXT
FOR i = 241 TO 254
  loss(i, 1) = 150: loss(i, 2) = 150: loss(i, 3) = 195: loss(i, 4) = 195
NEXT
FOR i = 256 TO 295
  loss(i, 1) = 180: loss(i, 2) = 180: loss(i, 3) = 195: loss(i, 4) = 195
NEXT
FOR i = 101 TO 529
  loss(i, 5) = 30: loss(i, 6) = 30
NEXT

'------------- Peace of cake ---------------------------
LINE (200, 150)-(255, 150), 4: LINE (200, 165)-(240, 165), 4
LINE (240, 195)-(295, 195), 4: LINE (255, 180)-(295, 180), 4
LINE (240, 165)-(240, 195), 4: LINE (255, 150)-(255, 180), 4
LINE (100, 1)-(530, 30), 4, B
COLOR 14: LOCATE 2, 15: PRINT "WHATS GOING ON ? IS IT A BUG ? WHERE IS THE EXIT ?!": COLOR 15
'--------------------------------------------------------
GOTO 10000

1007
'-------- preparing --------
LINE (1, 1)-(630, 330), 4, B
FOR ii = 1 TO 630
  FOR m = 1 TO 13
    loss(ii, m) = 0
  NEXT m
NEXT
'---------------------------
loss(220, 1) = 1: loss(220, 2) = 160: loss(220, 3) = 170: loss(220, 4) = 330
loss(410, 1) = 1: loss(410, 2) = 160: loss(410, 3) = 170: loss(410, 4) = 330
loss(630, 1) = 15: loss(630, 2) = 330
FOR i = 221 TO 409
  loss(i, 1) = 160: loss(i, 2) = 160: loss(i, 3) = 170: loss(i, 4) = 170
NEXT

'--------------- No comments ----------------------------
LINE (220, 1)-(410, 160), 4, B: LINE (220, 170)-(410, 330), 4, B
PAINT (240, 2), 9, 4: PAINT (240, 329), 5, 4
COLOR 5: LOCATE 6, 30: PRINT " CAN BE ONLY ONE !!! "
COLOR 9: LOCATE 17, 30: PRINT " DO YOU FEEL LUCKY ? "
LINE (630, 2)-(630, 14), 14: LINE (630, 102)-(630, 114), 14
LINE (630, 202)-(630, 214), 14: LINE (630, 317)-(630, 329), 14
LINE (609, 8)-(619, 8), 13: LINE (619, 8)-(614, 5), 13: LINE (619, 8)-(614, 11), 13
LINE (609, 108)-(619, 108), 13: LINE (619, 108)-(614, 105), 13: LINE (619, 108)-(614, 111), 13
LINE (609, 208)-(619, 208), 13: LINE (619, 208)-(614, 205), 13: LINE (619, 208)-(614, 211), 13
LINE (609, 323)-(619, 323), 13: LINE (619, 323)-(614, 320), 13: LINE (619, 323)-(614, 326), 13
COLOR 15
'--------------------------------------------------------
GOTO 10000

1008
'-------- preparing --------
LINE (1, 1)-(630, 330), 4, B
FOR ii = 1 TO 630
  FOR m = 1 TO 13
    loss(ii, m) = 0
  NEXT m
NEXT
'---------------------------
LINE (630, 2)-(630, 329), 14

LOCATE 3, 12: PRINT "THIS IS A SHAREWARE VERSION AND ONLY 7 LEVELS INCLUDED !"
LOCATE 5, 20: PRINT "feel free to email (nikol@cs.bgu.ac.il) me "

10000
END SUB

'
SUB lose
SHARED life
life = life - 1
LOCATE 11, 22: PRINT " YOU LOSE !!! YOU HAVE "; life; "LIVES LEFT ! "
DO WHILE INKEY$ = "": LOOP
END SUB

SUB right
SHARED shirina, x, y, press
DO WHILE exitt = 0
  x = x + 1
  IF x > 639 THEN
    CALL win: exitt = 1: press = 9: GOTO 40
  END IF
'******************************************************
  FOR mm = 1 TO 11 STEP 2
    FOR yy = 0 TO 6
      IF y + yy >= loss(x, mm) AND y + yy <= loss(x, mm + 1) THEN
        CALL lose: exitt = 1: press = 0: GOTO 40
      END IF
    NEXT yy
  NEXT mm
'******************************************************
  LINE (x, y)-(x, y + 6), 11: LINE (x - shirina, y)-(x - shirina, y + 6), 0
  CALL delay
  SELECT CASE INKEY$
    CASE CHR$(0) + CHR$(72)
      x = x - 9: press = 8: exitt = 1
    CASE CHR$(0) + CHR$(80)
      press = 2: x = x - 9: y = y + 6: exitt = 1
  END SELECT
40 LOOP

END SUB

SUB start
COLOR 8, 8

COLOR 3
FOR i = 1 TO 630
  LOCATE 9, 12: PRINT " KUBIK II  ! "
  IF i < 193 THEN LINE (i, 111)-(i, 124), 11
  LOCATE 10, 25: PRINT " writen in qbasic "
  IF i < 337 THEN LINE (i, 125)-(i, 139), 12
  LOCATE 11, 43: PRINT " BY BEREZANSKY ANDREY "
  IF i < 513 THEN LINE (i, 139)-(i, 154), 13
  LOCATE 15, 25: PRINT " email nikol@cs.bgu.ac.il"
  LINE (i, 195)-(i, 214), 15: LINE (i, 69)-(i, 70), 15
NEXT

FOR m = 1 TO 5
FOR iiii = 1 TO 30000: NEXT iiii
NEXT

FOR i = 71 TO 193
  LOCATE 9, 12: PRINT " KUBIK II  ! "
  LOCATE 10, 25: PRINT " writen in qbasic "
  LOCATE 11, 43: PRINT " BY BEREZANSKY ANDREY "
  LOCATE 15, 25: PRINT " email nikol@cs.bgu.ac.il"
  LINE (1, i)-(630, i + 1), 15, BF: LINE (1, i - 1)-(630, i - 2), 0, BF
NEXT

DO WHILE INKEY$ = "": LOOP
COLOR 15, 0

END SUB

SUB up
SHARED dlina, x, y, press
DO WHILE exitt = 0
  y = y - 1
  IF y < 2 THEN
    CALL lose: exitt = 1: press = 0: GOTO 60
  END IF
'******************************************************
  FOR m = 0 TO 9
    FOR mm = 1 TO 11 STEP 2
      IF y >= loss(x + m, mm) AND y <= loss(x + m, mm + 1) THEN
        CALL lose: exitt = 1: press = 0: GOTO 60
      END IF
    NEXT mm
  NEXT m
'******************************************************
  LINE (x, y)-(x + 9, y), 11: LINE (x, y + dlina)-(x + 9, y + dlina), 0
  CALL delay
  SELECT CASE INKEY$
    CASE CHR$(0) + CHR$(77)
      x = x + 9: press = 6: exitt = 1
    CASE CHR$(0) + CHR$(75)
      press = 4: exitt = 1
  END SELECT
60 LOOP
END SUB

SUB win
SHARED lev, life
LOCATE 10, 15: PRINT " YOU COMPLITED LEVEL "; lev; " GOOD LUCK ON THE NEXT ONE !  "
IF lev = 3 THEN life = life + 1
IF lev = 5 THEN life = life + 1
IF lev = 8 THEN CALL winwin

DO WHILE INKEY$ = "": LOOP
END SUB

SUB winwin
SHARED endd
CLS
FOR i = 1 TO 300
  LINE (i, 150)-(i + 10, 157), 11, BF
  LINE (605 - i, 150)-(595 - i, 157), 4, BF
  FOR ii = 1 TO 3400: NEXT ii
  LINE (i, 150)-(i + 10, 157), 0, BF
  LINE (605 - i, 150)-(595 - i, 157), 0, BF
NEXT
FOR i = 1 TO 200
  col = col + 1: IF col = 16 THEN col = 1
  CIRCLE (305, 153), i, col
  FOR ii = 1 TO 4000: NEXT ii
NEXT
SLEEP 1&

SCREEN 13
FOR t = 0 TO 63: PALETTE t, t: NEXT t
DO
  CALL FirePrint(16, 12, "YOU WIN !!!", 0)
LOOP UNTIL INKEY$ <> ""

SCREEN 9: COLOR 15: CLS : endd = 1
END SUB
