'=========================================================================== ' Subject: GAME KUBIK Date: 12-17-97 (01:04) ' Author: Andrey Berezansky Code: QB, QBasic, PDS ' Origin: nikolai@nsi.co.il Packet: GAMES.ABC '=========================================================================== ' Controls - arrow keys. ' The game contains only 8 levels i did'nt created more. ' If intro is to slow in your computer just put ' before "CALL start"command. ' Programmer BEREZANSKY ANDREY email - nikol@cs.bgu.ac.il ' email me for cheat (2 cheats available in the game). ' ' If you dont like speed of your game change the delay number below ' as smaler it is as faster you game speed will be !!! ' \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\\\\\|//////\/\/\/\/\/\/\/\/\/\/ 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 () '| '| RANDOMIZE TIMER '| SCREEN 9 '| CALL start '| '| ' here you can change the speed ->\\\\\\/////<- DIM SHARED loss(629, 2): life = 3: dellay = 3300 1 x = 30: y = 100: 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 < 9 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 IF y > 329 THEN CALL lose: exitt = 1: press = 0: GOTO 20 END IF IF x > 570 AND y > 307 THEN CALL win: exitt = 1: press = 9: GOTO 20 END IF '****************************************************** FOR m = 0 TO 9 IF loss(x + m, 1) <> 0 THEN IF y >= loss(x + m, 2) THEN CALL lose: exitt = 1: press = 0: GOTO 20 END IF END IF 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 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 '****************************************************** IF loss(x, 1) <> 0 THEN IF y <= loss(x, 1) OR (y + 6) >= loss(x, 2) THEN CALL lose: exitt = 1: press = 0: GOTO 30 END IF END IF '****************************************************** 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 IF lev = 9 THEN 1009 1001 LINE (1, 1)-(630, 330), 4, B: LINE (570, 300)-(629, 329), 3, B LOCATE 23, 74: PRINT "EXIT" FOR ii = 1 TO 629 loss(ii, 1) = 0: loss(ii, 2) = 0 NEXT FOR ii = 200 TO 560 STEP 60 yy = yy + 30: LINE (ii, 330)-(ii, yy), 4: LINE (ii, 1)-(ii, yy - 15), 4 loss(ii, 1) = yy - 15: loss(ii, 2) = yy NEXT ii GOTO 10000 1002 LINE (1, 1)-(630, 330), 4, B: LINE (570, 300)-(629, 329), 3, B LOCATE 23, 74: PRINT "EXIT" FOR ii = 1 TO 629 loss(ii, 1) = 0: loss(ii, 2) = 0 NEXT FOR ii = 200 TO 470 STEP 30 yy = yy + 30: LINE (ii, 330)-(ii, yy), 4: LINE (ii, 1)-(ii, yy - 15), 4 loss(ii, 1) = yy - 15: loss(ii, 2) = yy NEXT ii GOTO 10000 1003 LINE (1, 1)-(630, 330), 4, B: LINE (570, 300)-(629, 329), 3, B LOCATE 23, 74: PRINT "EXIT" FOR ii = 1 TO 629 loss(ii, 1) = 0: loss(ii, 2) = 0 NEXT FOR ii = 100 TO 560 STEP 30 yy = INT(RND * 313) + 16 LINE (ii, 330)-(ii, yy), 4: LINE (ii, 1)-(ii, yy - 15), 4 loss(ii, 1) = yy - 15: loss(ii, 2) = yy NEXT ii GOTO 10000 1004 LINE (1, 1)-(630, 330), 4, B: PAINT (2, 2), 1, 4 LINE (570, 300)-(629, 329), 3, B: LOCATE 23, 74: PRINT "EXIT" FOR ii = 1 TO 629 loss(ii, 1) = 0: loss(ii, 2) = 0 NEXT LINE (300, 1)-(300, 330), 4: LINE (300, 162)-(300, 170), 1 loss(300, 1) = 161: loss(300, 2) = 171 GOTO 10000 1005 LINE (1, 1)-(630, 330), 4, B LINE (570, 300)-(629, 329), 3, B: LOCATE 23, 74: PRINT "EXIT" FOR ii = 1 TO 629 loss(ii, 1) = 0: loss(ii, 2) = 0 NEXT LINE (300, 1)-(300, 330), 4: LINE (300, 321)-(300, 329), 14 loss(300, 1) = 320: loss(300, 2) = 330 LINE (320, 1)-(320, 330), 4: LINE (320, 2)-(320, 10), 14 loss(320, 1) = 1: loss(320, 2) = 11 LINE (340, 1)-(340, 330), 4: LINE (340, 162)-(340, 170), 14 loss(340, 1) = 161: loss(340, 2) = 171 GOTO 10000 1006 LINE (1, 1)-(630, 330), 4, B: LINE (570, 300)-(629, 329), 3, B LOCATE 23, 74: PRINT "EXIT" FOR ii = 1 TO 629 loss(ii, 1) = 0: loss(ii, 2) = 0 NEXT FOR ii = 160 TO 240 STEP 20 yy = INT(RND * 313) + 16 LINE (ii, 330)-(ii, yy), 4: LINE (ii, 1)-(ii, yy - 15), 4 loss(ii, 1) = yy - 15: loss(ii, 2) = yy NEXT ii FOR ii = 480 TO 560 STEP 20 yy = INT(RND * 313) + 16 LINE (ii, 330)-(ii, yy), 4: LINE (ii, 1)-(ii, yy - 15), 4 loss(ii, 1) = yy - 15: loss(ii, 2) = yy NEXT ii LINE (360, 1)-(360, 330), 4: LINE (360, 162)-(360, 170), 1 loss(360, 1) = 161: loss(360, 2) = 171 GOTO 10000 1007 LINE (1, 1)-(630, 330), 4, B: LINE (570, 300)-(629, 329), 3, B LOCATE 23, 74: PRINT "EXIT" FOR ii = 1 TO 629 loss(ii, 1) = 0: loss(ii, 2) = 0 NEXT FOR ii = 280 TO 480 STEP 20 yy = INT(RND * 313) + 16 LINE (ii, 330)-(ii, yy), 4: LINE (ii, 1)-(ii, yy - 15), 4 loss(ii, 1) = yy - 15: loss(ii, 2) = yy NEXT ii LINE (200, 1)-(200, 330), 4: LINE (200, 162)-(200, 170), 14 loss(200, 1) = 161: loss(200, 2) = 171 LINE (560, 1)-(560, 330), 4: LINE (560, 162)-(560, 170), 14 loss(560, 1) = 161: loss(560, 2) = 171 GOTO 10000 1008 LINE (1, 1)-(630, 330), 4, B: LINE (570, 300)-(629, 329), 3, B LOCATE 23, 74: PRINT "EXIT" FOR ii = 1 TO 629 loss(ii, 1) = 0: loss(ii, 2) = 0 NEXT FOR ii = 100 TO 560 STEP 20 yy = INT(RND * 313) + 16 LINE (ii, 330)-(ii, yy), 4: LINE (ii, 1)-(ii, yy - 15), 4 loss(ii, 1) = yy - 15: loss(ii, 2) = yy NEXT ii GOTO 10000 1009 LINE (1, 1)-(630, 330), 4, B: LINE (570, 300)-(629, 329), 3, B LOCATE 23, 74: PRINT "EXIT" FOR ii = 1 TO 629 loss(ii, 1) = 0: loss(ii, 2) = 0 NEXT LOCATE 10, 12: PRINT "THIS IS A SHAREWARE VERSION AND ONLY 8 LEVELS INCLUDED !" GOTO 10000 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 > 629 THEN CALL lose: exitt = 1: press = 0: GOTO 40 END IF IF x > 580 AND y > 300 THEN CALL win: exitt = 1: press = 9: GOTO 40 END IF '****************************************************** IF loss(x, 1) <> 0 THEN IF y <= loss(x, 1) OR (y + 6) >= loss(x, 2) THEN CALL lose: exitt = 1: press = 0: GOTO 40 END IF END IF '****************************************************** 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 " GAME KUBIK !" 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 " GAME KUBIK !" 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 IF loss(x + m, 1) <> 0 THEN IF y <= loss(x + m, 1) THEN CALL lose: exitt = 1: press = 0: GOTO 60 END IF END IF 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 + 2 IF lev = 7 THEN life = life + 1 IF lev = 9 THEN CALL winwin DO WHILE INKEY$ = "": LOOP END SUB SUB winwin SHARED endd endd = 1 END SUB