Simppeli matopeli 70-luvun tyyliin.
Seuraavaan versioon voisi lisätä kaksinpelin ja piipperiäänet.
' ' MATO 1.0 by Tertsi ' Enter aloittaa pelin, Esc lopettaa. ' Matoa ohjataan nuoli- tai wasd-nappaimilla. ' Mato kasvaa 3 pikselia per syoty omena. ' Peli nopeutuu 10 pisteen valein. ' RANDOMIZE TIMER ' Random-generaattori kayntiin. _MOUSEHIDE ' Hiiren kursori pois hairitsemasta. SCREEN _NEWIMAGE(32, 32, 256) ' 32 x 32 resoluutio! _FULLSCREEN _SQUAREPIXELS ' Venytetaan kuva koko ruudulle. DIM matox(1000), matoy(1000) ' Varataan muistista tilaa madon koordinaateille. DIM taulu(100) DIM Numero$(9) Numero$(0) = "r3d4l3u4 br5" ' Numerot DRAW-formaatissa Numero$(1) = "r1d4u4 br2" Numero$(2) = "r3d2l3d2r3 bu4br2" Numero$(3) = "r3d2l3r3d2l3 bu4br5" Numero$(4) = "d2r3d2u4 br2" Numero$(5) = "bd4 r3u2l3u2r3 br2" Numero$(6) = "r3l3d4r3u2l2b e2br2" Numero$(7) = "r3d4 bu4br2" Numero$(8) = "r3d4l3u4d2r3u2 br2" Numero$(9) = "d2r3u2l3r3d4l3" pojot = -1 IF _FILEEXISTS("mato.top") THEN OPEN "mato.top" FOR INPUT AS #1 'luetaan highscore tiedostosta INPUT #1, highscore CLOSE #1 ELSE highscore = 0 OPEN "mato.top" FOR OUTPUT AS #1 'luodaan uusi tiedosto jos eka pelikerta PRINT #1, highscore CLOSE #1 END IF CLS , 7 Alku: LINE (0, 0)-(31, 25), 7, B ' reunat LINE (1, 1)-(30, 24), 0, BF ' Piirretaan pelialue C$(1) = "5": C$(2) = "3": GOSUB Alkuruutu IF pojot = highscore OR pojot = -1 THEN GOSUB Animaatio pois$ = "EI" DO C$(1) = "3": C$(2) = "5": GOSUB Alkuruutu GOSUB Tuumaustauko IF pois$ = "TOTTA" THEN EXIT DO C$(1) = "5": C$(2) = "3": GOSUB Alkuruutu GOSUB Tuumaustauko IF pois$ = "TOTTA" THEN EXIT DO LOOP LINE (1, 1)-(30, 24), 0, BF ' Piirretaan pelialue matox(4) = 4: matoy(3) = 5 matox(3) = 5: matoy(3) = 5 ' Maaritellaan matox(2) = 6: matoy(2) = 5 ' madon matox(1) = 7: matoy(1) = 5 ' koordinaatit. pituus = 4: suunta = 6 ' Madon pituus ja suunta pistevari = 7: GOSUB Pistetaulu nopeus = .12: Kasvu = 3: pojot = 0 'nopeus, kasvuvauhti ja pisteet pistevari = 0: GOSUB Pistetaulu GOSUB PiirraMato GOSUB ArvoOmena _DISPLAY laskuri = 0 DO t = TIMER DO k$ = INKEY$ IF k$ <> "" THEN SELECT CASE k$ CASE CHR$(13): GOSUB PauseMenu CASE CHR$(27): GOTO Loppu CASE "6", "d", "D", CHR$(0) + "M": IF suunta <> 4 AND suunta <> 6 THEN suunta = 6 CASE "4", "a", "A", CHR$(0) + "K": IF suunta <> 4 AND suunta <> 6 THEN suunta = 4 CASE "2", "s", "S", CHR$(0) + "P": IF suunta <> 2 AND suunta <> 8 THEN suunta = 2 CASE "8", "w", "W", CHR$(0) + "H": IF suunta <> 2 AND suunta <> 8 THEN suunta = 8 END SELECT END IF LOOP UNTIL TIMER - t > nopeus SELECT CASE suunta CASE 6 GOSUB LaskeMato matox(1) = matox(1) + 1 CASE 4 GOSUB LaskeMato matox(1) = matox(1) - 1 CASE 2 GOSUB LaskeMato matoy(1) = matoy(1) + 1 CASE 8 GOSUB LaskeMato matoy(1) = matoy(1) - 1 END SELECT IF POINT(matox(1), matoy(1)) = 5 THEN ' jos osuu omenaan FOR z = 1 TO Kasvu pituus = pituus + 1 matox(pituus) = matox(pituus - 1) matoy(pituus) = matoy(pituus - 1) NEXT z pistevari = 7: GOSUB Pistetaulu pojot = pojot + 1 laskuri = laskuri + 1 IF laskuri = 10 THEN nopeus = nopeus - .01: laskuri = 0 IF nopeus < .005 THEN nopeus = .005 pistevari = 0: GOSUB Pistetaulu GOSUB ArvoOmena _DISPLAY END IF IF POINT(matox(1), matoy(1)) = 3 OR POINT(matox(1), matoy(1)) = 7 THEN ' jos osuu seinaan tai matoon PSET (matox(1), matoy(1)), 4 _DISPLAY IF pojot > highscore THEN OPEN "mato.top" FOR OUTPUT AS #1 highscore = pojot PRINT #1, highscore CLOSE #1 END IF GOSUB PauseMenu GOTO Alku END IF GOSUB PiirraMato PSET (matox(pituus), matoy(pituus)), 0 _DISPLAY LOOP ArvoOmena: DO x = INT(RND * 30) + 1: y = INT(RND * 24) + 1 ' Arvotaan omenan koordinaatti. IF POINT(x, y) = 0 THEN PSET (x, y), 5: EXIT DO ' Jos ruutu vapaana niin piirretaan omena ja poistutaan luupista. LOOP RETURN LaskeMato: FOR z = pituus TO 2 STEP -1 matox(z) = matox(z - 1): matoy(z) = matoy(z - 1) NEXT z RETURN PiirraMato: FOR z = 1 TO pituus - 1 PSET (matox(z), matoy(z)), 3 ' Piirretaan mato. NEXT z RETURN Pistetaulu: pisteet$ = LTRIM$(STR$(pojot)): jono$ = "" ' piirretaan pisteet FOR x = 1 TO LEN(pisteet$) num = VAL(MID$(pisteet$, x, 1)) jono$ = jono$ + Numero$(num) NEXT x IF pistevari = 0 THEN DRAW "bm1,26c0" + jono$ ELSE DRAW "bm1,26c7" + jono$ RETURN PauseMenu: DO P$ = INKEY$ IF P$ = CHR$(27) THEN GOTO Loppu LOOP UNTIL P$ = CHR$(13) RETURN Animaatio: 'hilataan pisteet vasemmalta oikealle pojot = highscore pistevari = 0: GOSUB Pistetaulu _DISPLAY leftie = 0 FOR x = 16 TO 1 STEP -1 IF POINT(x, 26) = 0 THEN leftie = x: EXIT FOR NEXT x IF leftie > 0 THEN GET (0, 26)-(leftie, 30), taulu() FOR x = 1 TO 30 - leftie PUT (x, 26), taulu(), PSET _DISPLAY _DELAY .01 NEXT x END IF RETURN Alkuruutu: DRAW "bm6,7c" + C$(1) + "u4r2d2u2r2d4 br1c" + C$(2) + "u4r4d2l3r3d2 br3c" + C$(1) + "u4l2r4 br1c" + C$(2) + "r4d4l4u4" ' piirretaan MATO-logo DRAW "bm13,10c" + C$(1) + "d3r2u2l2 br3c" + C$(2) + "d2r2u2d3" 'by DRAW "bm8,17c" + C$(1) + " r1d4u4r1 br1c" + C$(2) + "r2l2d2r2l2d2r2 br1c" + C$(1) + " u4r2d1g1f1d1 br2c" + C$(2) + "u4l1r2 br3c" + C$(1) + " l2d2r2d2l2 br3c" + C$(2) + "u4" 'TERTSI _DISPLAY RETURN Tuumaustauko: t = TIMER DO a$ = INKEY$ IF a$ = CHR$(27) THEN GOTO Loppu IF a$ = CHR$(13) THEN pois$ = "TOTTA": EXIT DO LOOP UNTIL TIMER - t > 1 RETURN Loppu: SYSTEM
Aihe on jo aika vanha, joten et voi enää vastata siihen.