Pelix
// vakiot pysähdys_kitka := 1 // peli hahmot alkutila := { hahmo = { x = 20, y = 100, vx = 0, vy = 0 }, painovoima = 1, maailmaX = 0, laser = -20 } nykyinen_tila := alkutila hahmo := lataa_kuva("test-icon.png") spiraali := lataa_kuva("antigravity.png") kartta := [ {x = 5, y = 100, l = 80, tyyppi = "nurmi"}, {x = 100, y = 120, l = 80, tyyppi = "nurmi"}, {x = 200, y = 100, l = 80, tyyppi = "nurmi"}, {x = 380, y = 450, l = 50, tyyppi = "jää"}, {x = 410, y = 400, l = 10, tyyppi = "painovoima"}, {x = 500, y = 100, l = 80, tyyppi = "nurmi"} ] funktio taso_pisteessä(x) { jokainen taso listassa kartta { jos x >= taso.x { jos x <= taso.x + taso.l { palauta taso } } } palauta epätosi } funktio piirrä_laser(tila) { laserin_taso := taso_pisteessä(tila.laser) piirrä_suorakulmio( x=tila.laser - tila.maailmaX, y=0, l=3, k=(laserin_taso.y tai hae_korkeus()), tausta="red" ) } funktio piirrä_pelimaailma(tila) { jokainen taso listassa kartta { jos taso.tyyppi on "painovoima" { piirrä_kuva(spiraali, x=taso.x - tila.maailmaX, y=taso.y) seuraava } piirrä_suorakulmio(x=taso.x - tila.maailmaX, y=taso.y, l=taso.l, k=2, tausta="black") jos taso.tyyppi on "jää" { väri := "#aaf" } muuten { väri := "green" } piirrä_suorakulmio(x=taso.x - tila.maailmaX, y=taso.y + 2, l=taso.l, k=8, tausta=väri) } } funktio piirrä_peli(tila) { piirrä_pelimaailma(tila) piirrä_laser(tila) x := tila.hahmo.x y := tila.hahmo.y vx := tila.hahmo.vx vy := tila.hahmo.vy vasen := taso_pisteessä(x) oikea := taso_pisteessä(x + 12) taso := (vasen tai oikea) on_jäällä := (taso ja taso.tyyppi on "jää") jos on_jäällä { kitka_kerron := 0,5 } muuten { kitka_kerron := 1 } // printtaa(painetut_näppäimet()) jos näppäin_painettu("oikea") { vx := max(tila.hahmo.vx + 0,2 * kitka_kerron, 1) } jos näppäin_painettu("vasen") { vx := min(tila.hahmo.vx - 0,2 * kitka_kerron, -1) } jos näppäin_painettu("ylös") ja ((vasen ja vasen.y on y) tai (oikea ja oikea.y on y)) { vy := -4,2 * tila.painovoima } // Painovoiman vaikutus nopeuden y akselin vy := vy + 0,3 * tila.painovoima // Estä pelaajan menemästä maan läpi p := tila.painovoima jos (vasen ja (y + vy) * p > vasen.y * p ja y * p <= vasen.y * p) { vy := vasen.y - y } jos (oikea ja (y + vy) * p > oikea.y * p ja y * p <= oikea.y * p) { vy := oikea.y - y } // Älä liiku jos nopeus on tosi jos |vx| < pysähdys_kitka ja ei on_jäällä { vx := 0 } x := x + vx y := y + vy // Kitkan hidastava vaikutus vaaka suunnassa jos on_jäällä { vx := vx * 0,99 } muuten { vx := vx * 0,9 } pisteet := x - (x % 1) piirrä_teksti(pisteet, x=hae_leveys() - 32, y=32) piirrä_kuva(hahmo, x=x - tila.maailmaX, y=y - 32) painovoima := tila.painovoima jos x > 410 { painovoima := -1 } pelaaja_kartan_alla := y - 32 > hae_korkeus() // kuolema jos pelaaja_kartan_alla tai x < tila.laser { palauta alkutila } palauta { hahmo={ x=x, y=y, vx=vx, vy=vy }, painovoima=painovoima, maailmaX=max(min(tila.maailmaX, x - 20), x - hae_leveys() + 80), laser=tila.laser + 1 } } kun tosi { tyhjennä() uusi_tila := piirrä_peli(nykyinen_tila) nykyinen_tila := uusi_tila odota() }
Suorita
Pysäytä
Jatka
Seuraava
Sisään