' Super Mario style game ' by Svjatoslav Agejenko 1999 DECLARE SUB CL () DECLARE SUB esc () DECLARE SUB aargh () DECLARE SUB die () DECLARE SUB dead () DEFINT A-Z DECLARE SUB level1 () DECLARE SUB nait (zaz%) DECLARE SUB wiew1 (a1%, b1%, c1%, d1%, a$) DECLARE SUB level () DECLARE SUB save (a$) DECLARE SUB picedit () DECLARE SUB wiew (a1%, b1%, c1%, d1%, a$) DECLARE SUB intro () DECLARE SUB inpur () DECLARE SUB mousedriver (AX%, bx%, cx%, dx%, lb%, rb%, EX%) DECLARE SUB tahed () DIM SHARED sj$ DIM SHARED ekraan DIM SHARED text$(1 TO 500) DIM SHARED pikkus DIM SHARED ruum(-5 TO 20, -5 TO 20) AS STRING DIM SHARED ruum1(-5 TO 20, -5 TO 20) AS STRING DIM SHARED maa(1 TO 11, 1 TO 10) AS STRING * 15 DIM SHARED maa1(1 TO 10) AS INTEGER DIM SHARED maailm AS INTEGER DIM SHARED maailm1 AS INTEGER DIM SHARED text5(1 TO 15) AS STRING * 15 DIM SHARED pilv(2100) DIM SHARED kast(202) DIM SHARED tellis(202) DIM SHARED poosas(1000) DIM SHARED puu(2000) DIM SHARED tuhi(202) DIM SHARED munt(202) DIM SHARED munt1(400) DIM SHARED munt2(200) DIM SHARED mari0(402) DIM SHARED mari(202, 1 TO 5) DIM SHARED koll(1 TO 230, 1 TO 10) DIM SHARED koll1(1 TO 202, 1 TO 5) DIM SHARED kolla(1 TO 10) DIM SHARED kollb(1 TO 10) DIM SHARED kollal(1 TO 10) DIM SHARED kolled(1 TO 10) DIM SHARED rahaz(1 TO 5) DIM SHARED number(100, 0 TO 11) DIM SHARED elud DIM SHARED raha DIM SHARED clra, clrb DIM SHARED a1, b1 DIM SHARED prog prog = 1 SCREEN 13 maailm = 1 maailm1 = 1 level1 1 ekraan = 13: zpqf = 4 FOR a = 0 TO 254 OUT &H3C8, a OUT &H3C9, 0 OUT &H3C9, 0 OUT &H3C9, 0 NEXT a OUT &H3C8, 255 OUT &H3C9, 60 OUT &H3C9, 60 OUT &H3C9, 60 LOCATE 20, 3 COLOR 255 PRINT "LOADING " CL wiew 0, 0, 1, 1, "pilv" GET (1, 1)-(109, 35), pilv CL wiew 0, 0, 1, 1, "kast" GET (1, 2)-(20, 21), kast CL wiew 0, 0, 1, 1, "tellis" GET (1, 2)-(20, 21), tellis CL GET (1, 2)-(20, 21), tuhi wiew 0, 0, 1, 1, "mario1" GET (1, 2)-(20, 21), mari(202, 1) CL wiew1 0, 0, 1, 1, "mario1" GET (3, 2)-(22, 21), mari(202, 2) CL wiew 0, 0, 1, 1, "mario2" GET (1, 2)-(20, 21), mari(202, 3) CL wiew1 0, 0, 1, 1, "mario2" GET (3, 2)-(22, 21), mari(202, 4) CL wiew 0, 0, 1, 1, "poosas" GET (1, 1)-(60, 21), poosas CL wiew 0, 0, 1, 1, "puu" GET (1, 1)-(40, 60), puu CL wiew 0, 0, 1, 1, "munt" GET (1, 1)-(10, 11), munt CL wiew 0, 0, 1, 1, "munt1" GET (0, 2)-(20, 11), munt1 CL wiew 0, 0, 1, 1, "munt2" GET (0, 2)-(20, 11), munt2 CL wiew 0, 0, 1, 1, "0" GET (0, 2)-(10, 11), number(100, 0) CL wiew 0, 0, 1, 1, "1" GET (0, 2)-(10, 11), number(100, 1) CL wiew 0, 0, 1, 1, "2" GET (0, 2)-(10, 11), number(100, 2) CL wiew 0, 0, 1, 1, "3" GET (0, 2)-(10, 11), number(100, 3) CL wiew 0, 0, 1, 1, "4" GET (0, 2)-(10, 11), number(100, 4) CL wiew 0, 0, 1, 1, "5" GET (0, 2)-(10, 11), number(100, 5) CL wiew 0, 0, 1, 1, "6" GET (0, 2)-(10, 11), number(100, 6) CL wiew 0, 0, 1, 1, "7" GET (0, 2)-(10, 11), number(100, 7) CL wiew 0, 0, 1, 1, "8" GET (0, 2)-(10, 11), number(100, 8) CL GET (0, 2)-(10, 11), number(100, 10) wiew 0, 0, 1, 1, "9" GET (0, 2)-(10, 11), number(100, 9) CL wiew 0, 0, 1, 1, "tigu" GET (1, 2)-(20, 21), koll1(202, 1) CL wiew 0, 0, 1, 1, "tigu1" GET (3, 2)-(22, 21), koll1(202, 2) CL wiew1 0, 0, 1, 1, "tigu" GET (1, 2)-(20, 21), koll1(202, 3) CL wiew1 0, 0, 1, 1, "tigu1" GET (3, 2)-(22, 21), koll1(202, 4) SCREEN 0 SCREEN 13 level a1 = 50 b1 = 50 edasi = 0 liig = 1 ov1 = 1 ov2 = 2 raha = 0 elud = 3 z = 1 nait 0 12 IF b1 > 0 THEN GET (a1, b1)-(a1 + 20, b1 + 20), mari0: PUT (a1, b1), mari(202, liig), OR FOR ox = 1 TO 10 IF kollb(ox) < 170 AND z = 1 THEN kollb(ox) = kollb(ox) + kollal(ox) kolla(ox) = kolla(ox) + kolled(ox) GET (kolla(ox), kollb(ox))-(kolla(ox) + 20, kollb(ox) + 20), koll(202, ox) IF kolled(ox) <= 0 THEN kolll = 1 ELSE kolll = 3 IF zz > 2 THEN kolll = kolll + 1: IF zz = 3 THEN kollal(ox) = kollal(ox) + 1 PUT (kolla(ox), kollb(ox)), koll1(202, kolll) END IF NEXT ox SOUND 0, .5 z = z + 1 IF z > 3 THEN z = 1 IF z = 1 THEN zz = zz + 1 IF zz > 5 THEN zz = 0 alla = alla + 1 IF edasi > 0 THEN edasi = edasi - 1: zy = zy + 1 IF edasi < 0 THEN edasi = edasi + 1: zy = zy + 1 IF zy > 2 THEN zy = 1 IF zy = 2 THEN ov1 = 1: ov2 = 2 IF zy = 1 THEN ov1 = 3: ov2 = 4 FOR ox = 1 TO 10 IF kollb(ox) < 170 THEN IF ruum((kolla(ox) + 20) / 20, (kollb(ox) + 9) / 20) = "m" THEN kollal(ox) = -1 IF kolla(ox) > 270 THEN kolled(ox) = -1 IF kolla(ox) < 2 THEN kolled(ox) = 1 IF ruum((kolla(ox) + 28) / 20, kollb(ox) / 20) = "m" THEN kolled(ox) = -1 IF ruum((kolla(ox) + 10) / 20, kollb(ox) / 20) = "m" THEN kolled(ox) = 1 IF kolla(ox) - 20 < a1 AND kolla(ox) + 20 > a1 AND kollb(ox) - 5 < b1 AND kollb(ox) + 20 > b1 THEN aargh: dead: GOTO 12 END IF NEXT ox END IF IF ruum((a1 + 15) / 20, (b1 + 9) / 20) = "m" THEN alla = -1: ao = 0 IF ruum((a1 + 25) / 20, (b1 + 9) / 20) = "m" THEN alla = -1: ao = 0 IF ruum((a1 + 20) / 20, (b1 - 8) / 20) = "m" THEN alla = 1: ao = 20 IF ruum((a1 + 28) / 20, (b1) / 20) = "m" THEN edasi = -1: qa = 1 IF ruum((a1 + 10) / 20, (b1) / 20) = "m" THEN edasi = 1: qa = 1 IF ruum1((a1 + 20) / 20, (b1 - 8) / 20) = "o" THEN alla = 1: ruum1((a1 + 20) / 20, (b1 - 8) / 20) = "": ruum((a1 + 20) / 20, (b1 - 8) / 20) = "2": clra = ((a1 + 20) / 20) - 1: clrb = (b1 - 8) / 20: clr = 1: SOUND 50, .5 IF ruum((a1 + 20) / 20, (b1) / 20) = "1" THEN ruum((a1 + 20) / 20, (b1) / 20) = "2": clra = ((a1 + 21) / 20) - 1: clrb = (b1) / 20: clr = 1: raha = raha + 1: nait 1: SOUND 1000, 1: SOUND 2000, 1 ao = ao + 1 a$ = INKEY$ IF a$ = CHR$(0) + "H" AND ao < 10 THEN alla = -6 IF a$ = CHR$(0) + "M" AND qa = 0 THEN edasi = edasi + 3: liig = ov1 IF a$ = CHR$(0) + "K" AND qa = 0 THEN edasi = edasi - 3: liig = ov2 IF a$ = CHR$(27) THEN esc IF a$ = "+" AND qa = 0 THEN maailm = maailm + 1: level: GOTO 12 IF qa <> 0 THEN qa = 0 IF edasi > 5 THEN edasi = 3 IF edasi < -5 THEN edasi = -3 IF alla > 3 THEN alla = 3 IF b1 > 0 THEN PUT (a1, b1), mari0, PSET IF z = 1 THEN FOR ox = 10 TO 1 STEP -1 IF kollb(ox) < 170 THEN PUT (kolla(ox), kollb(ox)), koll(202, ox), PSET NEXT ox END IF b1 = b1 + alla a1 = a1 + edasi IF clr > 0 THEN clr = 0: PUT (clra * 20, clrb * 20), tuhi, PSET IF a1 > 280 THEN maailm = maailm + 1: level: a1 = 3 IF a1 < 2 THEN maailm = maailm - 1: level: a1 = 279 IF b1 > 170 THEN FOR a = 3000 TO 500 STEP -100: SOUND a, .3: NEXT a: dead GOTO 12 SUB aargh a = 1700 b = 1900 FOR c = 1 TO 50 a = a + 3 b = b - 5 SOUND a, .2 SOUND b, .2 NEXT c END SUB SUB CL LINE (0, 0)-(319, 150), 0, BF LOCATE 20, 10 + prog prog = prog + 1 PRINT "." END SUB SUB dead IF maailm > 1 THEN maailm = maailm - 1 level a1 = 20 b1 = 100 elud = elud - 1 nait 0 END SUB SUB die DIM diep(1 TO 2000) GET (0, 0)-(150, 20), diep LOCATE 1, 1 PRINT "You are " LOCATE 2, 1 PRINT " killed! " FOR x = 0 TO 80 FOR y = 0 TO 16 IF POINT(x, y) > 0 THEN LINE (x * 5, y * 5 + 50)-(x * 5 + 4, y * 5 + 54), 4, BF NEXT y NEXT x PUT (0, 0), diep, PSET FOR a = 1 TO 100 x = RND * 290 + 4 y = RND * 170 + 4 GET (x, y)-(x + 20, y + 20), diep x = x + RND * 4 - 2 y = y + RND * 4 - 1 PUT (x, y), diep, PSET NEXT a FOR a = 1 TO 50 a$ = INKEY$ NEXT a a$ = INPUT$(1) FOR a = 0 TO 100 SOUND 0, .05 LINE (0, a)-(320, a), 4 LINE (0, 200 - a)-(320, 200 - a), 4 NEXT a FOR a = 32 TO 0 STEP -1 SOUND 0, .5 OUT &H3C8, 4 OUT &H3C9, a OUT &H3C9, 0 OUT &H3C9, 0 NEXT a END END SUB SUB esc FOR b = 0 TO 20 FOR a = b TO 200 STEP 20 LINE (0, a)-(320, a), 0 NEXT a SOUND 0, .5 NEXT b SYSTEM END SUB SUB inpur sj$ = "" WHILE sj$ = "" sj$ = INKEY$ WEND END SUB SUB intro CLS wiew 2, 2, 10, 1, "win.i01" END SUB SUB level IF maailm > 10 THEN CLS PRINT "Mission complete!" PRINT "Game over" END END IF FOR a = 1 TO 10 text5(a + 1) = maa(a, maailm) NEXT a FOR a = 1 TO 10 FOR b = 1 TO 15 IF ruum(b, a - 2) = "2" THEN MID$(maa(a, maailm1), b) = " " NEXT b NEXT a maailm1 = maailm FOR a = -3 TO 20 FOR b = -3 TO 20 ruum(a, b) = "" ruum1(a, b) = "" NEXT b NEXT a FOR a = 1 TO 10 kollb(a) = 1000 kolled(a) = 1 kollal(a) = 0 NEXT a CLS PAINT (1, 1), maa1(maailm) GET (1, 2)-(20, 21), tuhi FOR a = 2 TO 10 FOR b = 1 TO 15 c$ = RIGHT$(LEFT$(text5(a), b), 1) IF c$ = "-" THEN PUT ((b - 1) * 20, (a - 2) * 20), pilv, OR IF c$ = "." THEN PUT ((b - 1) * 20, (a - 2) * 20), poosas, OR IF c$ = "+" THEN PUT ((b - 1) * 20, (a - 2) * 20), puu, OR IF c$ = "$" THEN PUT ((b - 1) * 20, (a - 2) * 20), munt, OR: ruum(b, a - 2) = "1" IF c$ = "m" THEN PUT ((b - 1) * 20, (a - 2) * 20), kast, PSET: ruum(b, a - 2) = "m" IF c$ = "o" THEN PUT ((b - 1) * 20, (a - 2) * 20), tellis, PSET: ruum(b, a - 2) = "m": ruum1(b, a - 2) = "o" IF c$ = " " THEN ruum(b, a) = " " IF c$ = "1" THEN kolla(1) = (b - 1) * 20: kollb(1) = (a - 2) * 20: GET (kolla(1), kollb(1))-(kolla(1) + 20, kollb(1) + 20), koll(202, 1) IF c$ = "2" THEN kolla(2) = (b - 1) * 20: kollb(2) = (a - 2) * 20: GET (kolla(2), kollb(2))-(kolla(2) + 20, kollb(2) + 20), koll(202, 2) IF c$ = "3" THEN kolla(3) = (b - 1) * 20: kollb(3) = (a - 2) * 20: GET (kolla(3), kollb(3))-(kolla(3) + 20, kollb(3) + 20), koll(202, 3) IF c$ = "4" THEN kolla(4) = (b - 1) * 20: kollb(4) = (a - 2) * 20: GET (kolla(4), kollb(4))-(kolla(4) + 20, kollb(4) + 20), koll(202, 4) IF c$ = "5" THEN kolla(5) = (b - 1) * 20: kollb(5) = (a - 2) * 20: GET (kolla(5), kollb(5))-(kolla(5) + 20, kollb(5) + 20), koll(202, 5) IF c$ = "6" THEN kolla(6) = (b - 1) * 20: kollb(6) = (a - 2) * 20: GET (kolla(6), kollb(6))-(kolla(6) + 20, kollb(6) + 20), koll(202, 6) IF c$ = "7" THEN kolla(7) = (b - 1) * 20: kollb(7) = (a - 2) * 20: GET (kolla(7), kollb(7))-(kolla(7) + 20, kollb(7) + 20), koll(202, 7) IF c$ = "8" THEN kolla(8) = (b - 1) * 20: kollb(8) = (a - 2) * 20: GET (kolla(8), kollb(8))-(kolla(8) + 20, kollb(8) + 20), koll(202, 8) IF c$ = "9" THEN kolla(9) = (b - 1) * 20: kollb(9) = (a - 2) * 20: GET (kolla(9), kollb(9))-(kolla(9) + 20, kollb(9) + 20), koll(202, 9) IF c$ = "0" THEN kolla(10) = (b - 1) * 20: kollb(10) = (a - 2) * 20: GET (kolla(10), kollb(10))-(kolla(10) + 20, kollb(10) + 20), koll(202, 10) NEXT b NEXT a nait 0 END SUB SUB level1 maa1(1) = 1 maa(1, 1) = "m " maa(2, 1) = "m - - " maa(3, 1) = "m " maa(4, 1) = "m $ $ $ $ " maa(5, 1) = "m $ $ $ $ " maa(6, 1) = "m + momom " maa(7, 1) = "m " maa(8, 1) = "m . . " maa(9, 1) = "mmmmmmmmmmmmmmm" maa1(2) = 1 maa(1, 2) = " $2- " maa(2, 2) = " o$ " maa(3, 2) = " o$ - " maa(4, 2) = " o$ 3 " maa(5, 2) = " o o1 " maa(6, 2) = " + mmom" maa(7, 2) = " omom m " maa(8, 2) = " $ $ $ $ m " maa(9, 2) = "mmmm mm" maa1(3) = 1 maa(1, 3) = " mmmmm" maa(2, 3) = "- $ $ mmmmm" maa(3, 3) = " $ $ $ mmmmm" maa(4, 3) = " $ $ mmmmm" maa(5, 3) = " . mmmmm" maa(6, 3) = "mmmm 1 mmmm" maa(7, 3) = " mm m" maa(8, 3) = " mmm " maa(9, 3) = "mmm mmmmm" maa1(4) = 0 maa(1, 4) = "mmmmmmmmmmmmmmm" maa(2, 4) = "m$ $ $ $ $ " maa(3, 4) = "mm $m $4$ $ $ " maa(4, 4) = "m$m mmmmmommmm" maa(5, 4) = "m$ 3 2 m" maa(6, 4) = "m1 ooooooomo m" maa(7, 4) = "mooo$$$$$$$m m" maa(8, 4) = " m" maa(9, 4) = "mmmmmmmmmmmmmmm" maa1(5) = 0 maa(1, 5) = "mmmmmmmmmmmmmmm" maa(2, 5) = " m " maa(3, 5) = "m m 1 3 mmmm" maa(4, 5) = "m m mmm o m" maa(5, 5) = "m m4567892o m" maa(6, 5) = "m mooooommo m" maa(7, 5) = "m mm" maa(8, 5) = "m mmm" maa(9, 5) = "mmmm mmm mmmm" maa1(6) = 1 maa(1, 6) = "m " maa(2, 6) = " - $ - " maa(3, 6) = "m $ $ " maa(4, 6) = "m o o $ " maa(5, 6) = "m o o " maa(6, 6) = "m + " maa(7, 6) = "m " maa(8, 6) = "mm 1 m 2 m " maa(9, 6) = "mmmmmmmmmmmmmmm" maa1(7) = 1 maa(1, 7) = " - " maa(2, 7) = " - " maa(3, 7) = " 1m" maa(4, 7) = " 2mm" maa(5, 7) = " 3mmm" maa(6, 7) = " o + 4mmmm" maa(7, 7) = " ooo 5mmmmm" maa(8, 7) = " 6mmmmmm" maa(9, 7) = "mmmmmmmmmmmmmmm" maa1(8) = 1 maa(1, 8) = " mmmmmmmmmmmmm" maa(2, 8) = " m123m456m789 " maa(3, 8) = " mm$mmm$mmm$mm" maa(4, 8) = " mm$$$$$$$$$$m" maa(5, 8) = " mmom$mmm$mmmm" maa(6, 8) = " o$$$$$$$$$ o" maa(7, 8) = " omooooooo o" maa(8, 8) = " - m " maa(9, 8) = "mmmmmmmmmmmmmmm" maa1(9) = 0 maa(1, 9) = " 12345" maa(2, 9) = " 6789 " maa(3, 9) = " mm" maa(4, 9) = " m " maa(5, 9) = " m " maa(6, 9) = " m " maa(7, 9) = " m " maa(8, 9) = " m " maa(9, 9) = "mm " maa1(10) = 1 maa(1, 10) = "m " maa(2, 10) = " - " maa(3, 10) = "m - " maa(4, 10) = "m + " maa(5, 10) = "m " maa(6, 10) = "m + 2 " maa(7, 10) = "m mmm " maa(8, 10) = "m . 1 " maa(9, 10) = "mmmmmmmmmmm mm" END SUB SUB load (a$) OPEN a$ FOR INPUT AS #2 INPUT #2, pikkus FOR a = 1 TO pikkus LINE INPUT #2, text$(a) NEXT a CLOSE END SUB SUB nait (zaz) IF elud < 0 THEN die PUT (0, 180), munt1, PSET rahaz(1) = rahaz(1) + zaz FOR b = 1 TO 3 IF rahaz(1) > 9 THEN rahaz(1) = rahaz(1) - 10: rahaz(2) = rahaz(2) + 1 IF rahaz(2) > 9 THEN rahaz(1) = 0: rahaz(2) = 0: elud = elud + 1 NEXT b LOCATE 1, 1 r = 3 FOR a = 1 TO 2 r = r - 1 PUT ((a * 11) + 10, 180), number(100, rahaz(r)), PSET NEXT a IF elud > 10 THEN elud = 10 PUT (43, 180), number(100, 10), PSET PUT (53, 180), munt2, PSET PUT (73, 180), number(100, elud), PSET END SUB SUB save (a$) OPEN a$ FOR OUTPUT AS #2 PRINT #2, pikkus FOR a = 1 TO pikkus PRINT #2, text$(a) NEXT a CLOSE END SUB DEFSNG A-Z SUB tahed CLS t = 13 FOR a = 1 TO 80 STEP 8 FOR b = 1 TO 20 t = t + 1 LOCATE b, a PRINT CHR$(t); t NEXT b NEXT a END SUB DEFINT A-Z SUB wiew (a1, b1, c1, d1, a$) laius1 = c1 - a1 pikkus1 = d1 - b1 OPEN a$ + ".i01" FOR INPUT AS #1 INPUT #1, pikkus FOR a = 1 TO pikkus LINE INPUT #1, z$ FOR b = 1 TO LEN(z$) LINE (a1 + (b * c1), (b1 + (a * d1)) + 1)-(a1 + ((b + 1) * c1) - 1, b1 + ((a + 1) * d1)), ASC(RIGHT$(LEFT$(z$, b), 1)) - 40, BF NEXT b NEXT a CLOSE END SUB SUB wiew1 (a1, b1, c1, d1, a$) a1 = a1 * 8 b1 = b1 * 8 laius1 = c1 - a1 pikkus1 = d1 - b1 OPEN a$ + ".i01" FOR INPUT AS #1 INPUT #1, pikkus FOR a = 1 TO pikkus LINE INPUT #1, z$ FOR b = LEN(z$) TO 1 STEP -1 LINE (a1 + (b * c1), (b1 + (a * d1)) + 1)-(a1 + ((b + 1) * c1), b1 + ((a + 1) * d1)), ASC(LEFT$(RIGHT$(z$, b), 1)) - 40, BF NEXT b NEXT a CLOSE END SUB