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 import neopixel
from machine import Pin from machine import Pin
import time import time
from random import randint, random, seed, choice from random import random, seed, choice
seed() seed()
@ -50,15 +50,73 @@ def setze_pixel(x, y, farbe):
i = y * 8 + x i = y * 8 + x
matrix[i] = farbe matrix[i] = farbe
def neue_richtung(): def neue_richtung(t):
richtung = None
for i in range(1, 10):
if not taster_runter.value(): if not taster_runter.value():
return "runter" richtung = "runter"
if not taster_rechts.value(): if not taster_rechts.value():
return "rechts" richtung = "rechts"
if not taster_links.value(): if not taster_links.value():
return "links" richtung = "links"
if not taster_hoch.value(): if not taster_hoch.value():
return "hoch" 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 = { RICHTUNGEN = {
"hoch": (0, -1), "hoch": (0, -1),
@ -67,6 +125,19 @@ RICHTUNGEN = {
"rechts": (1, 0) "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): def anzeigen(snake, essen):
matrix.fill((0, 0, 0)) matrix.fill((0, 0, 0))
@ -79,7 +150,7 @@ def anzeigen(snake, essen):
# Essen anzeigen # Essen anzeigen
fx, fy = essen fx, fy = essen
setze_pixel(fx, fy, zufall_farbe()) setze_pixel(fx, fy, (255, 255, 255))
matrix.write() matrix.write()
@ -192,13 +263,16 @@ def game_over(score):
def spiel(): def spiel():
snake = [(4, 4)] snake = [(4, 4)]
richtung = "rechts"
essen = neues_essen(snake) essen = neues_essen(snake)
while True: schwierigkeit = warte_auf_taste()
naechste_richtung = neue_richtung()
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 richtung = naechste_richtung
dx, dy = RICHTUNGEN[richtung] dx, dy = RICHTUNGEN[richtung]
@ -218,8 +292,6 @@ def spiel():
snake.pop() snake.pop()
anzeigen(snake, essen) anzeigen(snake, essen)
time.sleep(0.4)
while True: while True:
spiel() spiel()
time.sleep(1)

98
main.py
View File

@ -1,7 +1,7 @@
import neopixel import neopixel
from machine import Pin from machine import Pin
import time import time
from random import randint, random, seed, choice from random import random, seed, choice
seed() seed()
@ -50,15 +50,73 @@ def setze_pixel(x, y, farbe):
i = y * 8 + x i = y * 8 + x
matrix[i] = farbe matrix[i] = farbe
def neue_richtung(): def neue_richtung(t):
richtung = None
for i in range(1, 10):
if not taster_runter.value(): if not taster_runter.value():
return "runter" richtung = "runter"
if not taster_rechts.value(): if not taster_rechts.value():
return "rechts" richtung = "rechts"
if not taster_links.value(): if not taster_links.value():
return "links" richtung = "links"
if not taster_hoch.value(): if not taster_hoch.value():
return "hoch" 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 = { RICHTUNGEN = {
"hoch": (0, -1), "hoch": (0, -1),
@ -67,6 +125,19 @@ RICHTUNGEN = {
"rechts": (1, 0) "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): def anzeigen(snake, essen):
matrix.fill((0, 0, 0)) matrix.fill((0, 0, 0))
@ -79,7 +150,7 @@ def anzeigen(snake, essen):
# Essen anzeigen # Essen anzeigen
fx, fy = essen fx, fy = essen
setze_pixel(fx, fy, zufall_farbe()) setze_pixel(fx, fy, (255, 255, 255))
matrix.write() matrix.write()
@ -192,13 +263,16 @@ def game_over(score):
def spiel(): def spiel():
snake = [(4, 4)] snake = [(4, 4)]
richtung = "rechts"
essen = neues_essen(snake) essen = neues_essen(snake)
while True: schwierigkeit = warte_auf_taste()
naechste_richtung = neue_richtung()
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 richtung = naechste_richtung
dx, dy = RICHTUNGEN[richtung] dx, dy = RICHTUNGEN[richtung]
@ -218,8 +292,6 @@ def spiel():
snake.pop() snake.pop()
anzeigen(snake, essen) anzeigen(snake, essen)
time.sleep(0.4)
while True: while True:
spiel() spiel()
time.sleep(1)