Spiel update

This commit is contained in:
Ruby 2025-05-26 01:14:37 +02:00
parent 108cdfd88e
commit 898a3354bd
Signed by: rubydragon
GPG Key ID: D8CBA4B7F2BBC6C5
2 changed files with 178 additions and 34 deletions

View File

@ -1,7 +1,7 @@
import neopixel
from machine import Pin
import time
from random import randint, random, seed, choice
from random import random, seed, choice
seed()
@ -50,15 +50,73 @@ def setze_pixel(x, y, farbe):
i = y * 8 + x
matrix[i] = farbe
def neue_richtung():
if not taster_runter.value():
return "runter"
if not taster_rechts.value():
return "rechts"
if not taster_links.value():
return "links"
if not taster_hoch.value():
return "hoch"
def neue_richtung(t):
richtung = None
for i in range(1, 10):
if not taster_runter.value():
richtung = "runter"
if not taster_rechts.value():
richtung = "rechts"
if not taster_links.value():
richtung = "links"
if not taster_hoch.value():
richtung = "hoch"
time.sleep(t/10)
return richtung
def warte_auf_taste():
richtung = "vor"
i = 0
taste = None
schwierigkeit = 1
while taste != "rechts":
taste = neue_richtung(0.2)
matrix.fill((0, 0, 0))
if i == 0:
richtung = "vor"
if i == 7:
richtung = "zurueck"
if richtung == "vor":
i = i+1
elif richtung == "zurueck":
i = i-1
setze_pixel(i, 0, (255, 0, 0))
setze_pixel(7, i, (0, 255, 0))
setze_pixel(7-i, 7, (0, 0, 255))
setze_pixel(0, 7-i, (255, 255, 0))
if taste == "runter":
schwierigkeit = schwierigkeit + 1
if schwierigkeit == 4: schwierigkeit = 3
if taste == "hoch":
schwierigkeit = schwierigkeit - 1
if schwierigkeit == 0: schwierigkeit = 1
gruen = (0, 255, 0)
gelb = (255, 255, 0)
rot = (255, 0, 0)
if schwierigkeit == 1:
setze_pixel(3, 1, gruen)
setze_pixel(4, 1, gruen)
setze_pixel(3, 2, gruen)
setze_pixel(4, 2, gruen)
if schwierigkeit == 2:
setze_pixel(3, 3, gelb)
setze_pixel(4, 3, gelb)
setze_pixel(3, 4, gelb)
setze_pixel(4, 4, gelb)
if schwierigkeit == 3:
setze_pixel(3, 5, rot)
setze_pixel(4, 5, rot)
setze_pixel(3, 6, rot)
setze_pixel(4, 6, rot)
matrix.write()
return schwierigkeit
RICHTUNGEN = {
"hoch": (0, -1),
@ -67,6 +125,19 @@ RICHTUNGEN = {
"rechts": (1, 0)
}
SCHWIERIGKEITEN = [0.6, 0.4, 0.3]
def ist_entgegengesetzt(r1, r2):
if r1 == "hoch" and r2 == "runter":
return True
if r1 == "links" and r2 == "rechts":
return True
if r1 == "rechts" and r2 == "links":
return True
if r1 == "runter" and r2 == "hoch":
return True
return False
def anzeigen(snake, essen):
matrix.fill((0, 0, 0))
@ -79,7 +150,7 @@ def anzeigen(snake, essen):
# Essen anzeigen
fx, fy = essen
setze_pixel(fx, fy, zufall_farbe())
setze_pixel(fx, fy, (255, 255, 255))
matrix.write()
@ -192,13 +263,16 @@ def game_over(score):
def spiel():
snake = [(4, 4)]
richtung = "rechts"
essen = neues_essen(snake)
while True:
naechste_richtung = neue_richtung()
schwierigkeit = warte_auf_taste()
if naechste_richtung in RICHTUNGEN:
zeit = SCHWIERIGKEITEN[schwierigkeit - 1]
richtung = "rechts"
while True:
naechste_richtung = neue_richtung(zeit)
if naechste_richtung in RICHTUNGEN and not ist_entgegengesetzt(naechste_richtung, richtung):
richtung = naechste_richtung
dx, dy = RICHTUNGEN[richtung]
@ -218,8 +292,6 @@ def spiel():
snake.pop()
anzeigen(snake, essen)
time.sleep(0.4)
while True:
spiel()
time.sleep(1)

106
main.py
View File

@ -1,7 +1,7 @@
import neopixel
from machine import Pin
import time
from random import randint, random, seed, choice
from random import random, seed, choice
seed()
@ -50,15 +50,73 @@ def setze_pixel(x, y, farbe):
i = y * 8 + x
matrix[i] = farbe
def neue_richtung():
if not taster_runter.value():
return "runter"
if not taster_rechts.value():
return "rechts"
if not taster_links.value():
return "links"
if not taster_hoch.value():
return "hoch"
def neue_richtung(t):
richtung = None
for i in range(1, 10):
if not taster_runter.value():
richtung = "runter"
if not taster_rechts.value():
richtung = "rechts"
if not taster_links.value():
richtung = "links"
if not taster_hoch.value():
richtung = "hoch"
time.sleep(t/10)
return richtung
def warte_auf_taste():
richtung = "vor"
i = 0
taste = None
schwierigkeit = 1
while taste != "rechts":
taste = neue_richtung(0.2)
matrix.fill((0, 0, 0))
if i == 0:
richtung = "vor"
if i == 7:
richtung = "zurueck"
if richtung == "vor":
i = i+1
elif richtung == "zurueck":
i = i-1
setze_pixel(i, 0, (255, 0, 0))
setze_pixel(7, i, (0, 255, 0))
setze_pixel(7-i, 7, (0, 0, 255))
setze_pixel(0, 7-i, (255, 255, 0))
if taste == "runter":
schwierigkeit = schwierigkeit + 1
if schwierigkeit == 4: schwierigkeit = 3
if taste == "hoch":
schwierigkeit = schwierigkeit - 1
if schwierigkeit == 0: schwierigkeit = 1
gruen = (0, 255, 0)
gelb = (255, 255, 0)
rot = (255, 0, 0)
if schwierigkeit == 1:
setze_pixel(3, 1, gruen)
setze_pixel(4, 1, gruen)
setze_pixel(3, 2, gruen)
setze_pixel(4, 2, gruen)
if schwierigkeit == 2:
setze_pixel(3, 3, gelb)
setze_pixel(4, 3, gelb)
setze_pixel(3, 4, gelb)
setze_pixel(4, 4, gelb)
if schwierigkeit == 3:
setze_pixel(3, 5, rot)
setze_pixel(4, 5, rot)
setze_pixel(3, 6, rot)
setze_pixel(4, 6, rot)
matrix.write()
return schwierigkeit
RICHTUNGEN = {
"hoch": (0, -1),
@ -67,6 +125,19 @@ RICHTUNGEN = {
"rechts": (1, 0)
}
SCHWIERIGKEITEN = [0.6, 0.4, 0.3]
def ist_entgegengesetzt(r1, r2):
if r1 == "hoch" and r2 == "runter":
return True
if r1 == "links" and r2 == "rechts":
return True
if r1 == "rechts" and r2 == "links":
return True
if r1 == "runter" and r2 == "hoch":
return True
return False
def anzeigen(snake, essen):
matrix.fill((0, 0, 0))
@ -79,7 +150,7 @@ def anzeigen(snake, essen):
# Essen anzeigen
fx, fy = essen
setze_pixel(fx, fy, zufall_farbe())
setze_pixel(fx, fy, (255, 255, 255))
matrix.write()
@ -192,13 +263,16 @@ def game_over(score):
def spiel():
snake = [(4, 4)]
richtung = "rechts"
essen = neues_essen(snake)
while True:
naechste_richtung = neue_richtung()
schwierigkeit = warte_auf_taste()
if naechste_richtung in RICHTUNGEN:
zeit = SCHWIERIGKEITEN[schwierigkeit - 1]
richtung = "rechts"
while True:
naechste_richtung = neue_richtung(zeit)
if naechste_richtung in RICHTUNGEN and not ist_entgegengesetzt(naechste_richtung, richtung):
richtung = naechste_richtung
dx, dy = RICHTUNGEN[richtung]
@ -218,8 +292,6 @@ def spiel():
snake.pop()
anzeigen(snake, essen)
time.sleep(0.4)
while True:
spiel()
time.sleep(1)