Hauptmenü:
pr aaa
bild
setze "futterliste []
setze "rand.links -420
setze "rand.unten -200
setze "feld.breite 840
setze "feld.höhe 400
futter.setzen
setze "punktliste (liste :futter)
futter.setzen
settimer 1 5000 [sh auf :futter quadrat.löschen futter.setzen]
sh auf liste :rand.links :rand.unten
sa wh 2 [vw :feld.höhe re 90 vw :feld.breite re 90]
sh mitte
quadrat.init
setze "xf 1 setze "yf 0 vi
keyboardon [setze "taste char keyboardvalue auswertung]
setFocus [FMSLogo]
schlange.bewegen
ende
pr auswertung
wenn :taste = "a [setze "xf -1 setze "yf 0 rk]
wenn :taste = "w [setze "xf 0 setze "yf 1 rk]
wenn :taste = "d [setze "xf 1 setze "yf 0 rk]
wenn :taste = "s [setze "xf 0 setze "yf -1 rk]
wenn :taste = "4 [setze "xf -1 setze "yf 0 rk]
wenn :taste = "5 [setze "xf -1 setze "yf 0 rk]
wenn :taste = "8 [setze "xf 0 setze "yf 1 rk]
wenn :taste = "6 [setze "xf 1 setze "yf 0 rk]
wenn :taste = "2 [setze "xf 0 setze "yf -1 rk]
wenn :taste = "# [keyboardoff cleartimer 1 halt]
ende
pr futter.setzen
do.until [futter.setzen.intern][nicht? element? :futter :punktliste]
quadrat.zeigen :futter
ende
pr futter.setzen.intern
setze "futter.x :rand.links + :punkt.breite + :punkt.breite * zz (:feld.breite / :punkt.breite - 1)
setze "futter.y :rand.unten+ :punkt.breite + :punkt.breite * zz (:feld.höhe /:punkt.breite - 1)
setze "futter liste :futter.x :futter.y
ende
pr quadrat.init
setze "schlangenfarbe [0 0 255]
setze "weiß [255 255 255]
füllfarbe :schlangenfarbe
farbe :schlangenfarbe
setze "quadrat.breite 18
setze "punkt.breite :quadrat.breite+2
ende
pr quadrat.löschen
füllfarbe :weiß
fülle
füllfarbe :schlangenfarbe
ende
pr quadrat.zeigen :punkt
sh auf :punkt
re 90 rw :quadrat.breite/2 li 90 rw :quadrat.breite/2 sa
vw :quadrat.breite re 90
vw :quadrat.breite re 90
vw :quadrat.breite re 90
vw :quadrat.breite re 90
sh vw :quadrat.breite/2 re 90 vw :quadrat.breite/2 li 90 fülle
ende
pr schlange.bewegen
schlange.neuerPunkt :xf :yf
wenn (er :punktliste) = :futter [schlange.hängean :futter]
quadrat.zeigen er :punktliste
schlange.löscheLetztes warte 2
schlange.bewegen :xf :yf
ende
pr schlange.hängean :punkt
setze "punktliste ml :punkt :punktliste
ende
pr schlange.löscheLetztes
auf lz :punktliste
quadrat.löschen
setze "punktliste ol :punktliste
ende
pr schlange.neuerPunkt :xf :yf
setze "x er er :punktliste
setze "x :x+:xf*:punkt.breite
setze "y lz er :punktliste
setze "y :y+:yf*:punkt.breite
wenn :x>:rand.links+:feld.breite-:punkt.breite [setze "x :rand.links+:punkt.breite]
wenn :x<:rand.links+:punkt.breite [setze "x :rand.links+:feld.breite-:punkt.breite]
wenn :y>:rand.unten+:feld.höhe-:punkt.breite [setze "y :rand.unten+:punkt.breite]
wenn :y<:rand.unten+:punkt.breite [setze "y :rand.unten+:feld.höhe-:punkt.breite]
setze "punkt liste :x :y
setze "punktliste me :punkt :punktliste
ende
pr schlange.zeigen :punktliste
wenn leer? :punktliste [rk]
quadrat.zeigen er :punktliste
schlange.zeigen oe :punktliste
ende
Die Kollisionsabfrage funktioniert im Moment nicht. Eine Bearbeitung erfolgt in den nächsten Tagen.