Ich habe ein Spiel mit Raspberry Pi für Kinder gemacht. Dient auch als Sense HAT-Praxis. Obere Hälfte von Risse Es ist ein Spiel wie.
Es ist ein Artikel, den ich wirklich nur zeigen wollte, dass ich es geschafft habe. .. ..
from sense_hat import SenseHat, ACTION_PRESSED, ACTION_HELD, ACTION_RELEASED
from time import sleep
from random import randint
from copy import copy
#Sense HAT-Initialisierung
sense = SenseHat()
sense.clear()
red = (255, 0, 0)
blue = (0, 0, 255)
yellow=(255,255,0)
purple=(128,0,128)
green=(0,255,0)
indigg=(75,0,130)
orange=(255,128,0)
black=(0,0,0)
#Feste Ausrichtung
sense.set_rotation(0)
#Parametereinstellungen
fall_interval = 3
fall_speed = 0.5
fall_color = orange
fall_num = 8
#Generieren Sie fallende Objekte und speichern Sie sie in einem Array
blocks = list()
for i in range(0,fall_num):
blocks.append((randint(0,7), 0-i*fall_interval))
bar_init = (3, 6)
bar_color = blue
sense.set_pixel(bar_init[0], bar_init[1], bar_color)
bar = copy(bar_init)
#Verarbeitung, wenn der Joystick nach links geneigt ist (Empfangsblock nach links vorschieben)
def moveleft(event):
global bar
if event.action != ACTION_PRESSED:
return
sense.set_pixel(bar[0], bar[1], black)
bar_moved_x = bar[0] - 1
if bar_moved_x < 0:
bar_moved_x = 0
elif bar_moved_x > 7:
bar_moved_x = 7
bar = (bar_moved_x, bar[1])
sense.set_pixel(bar[0], bar[1], bar_color)
#Verarbeitung, wenn der Joystick nach rechts geneigt ist (Empfangsblock nach rechts vorschieben)
def moveright(event):
global bar
if event.action != ACTION_PRESSED:
return
sense.set_pixel(bar[0], bar[1], black)
bar_moved_x = bar[0] + 1
if bar_moved_x < 0:
bar_moved_x = 0
elif bar_moved_x > 7:
bar_moved_x = 7
bar = (bar_moved_x, bar[1])
sense.set_pixel(bar[0], bar[1], bar_color)
#Legen Sie eine Funktion im Ereignishandler des Joysticks fest
sense.stick.direction_left = moveleft
sense.stick.direction_right = moveright
#Spiel starten
#Bewegen Sie jedes Mal jeden Block des fallenden Objektarrays nacheinander nach unten.
#Stellen Sie fest, ob das heruntergefallene Objekt den Boden erreicht hat (Fehler) oder der Empfangsblock es empfangen hat (sicher).
#Erfolg, wenn alle Blöcke akzeptiert werden.
blocks_tmp = copy(blocks)
failed = False
while blocks_tmp:
tmp = list()
for blk in blocks_tmp:
blk_moved = (blk[0], blk[1] + 1)
if blk_moved[1] > 7:
failed = True
break
#sense.set_pixel(blk[0], blk[1], black)
#continue
if blk_moved == bar:
sense.set_pixel(blk[0], blk[1], black)
continue
if blk[1] >= 0 and blk[1] < 8:
sense.set_pixel(blk[0], blk[1], black)
if blk_moved[1] >= 0 and blk_moved[1] < 8:
sense.set_pixel(blk_moved[0], blk_moved[1], fall_color)
blk = blk_moved
tmp.append(blk_moved)
print(tmp)
blocks_tmp = copy(tmp)
sleep(fall_speed)
#Ergebnisanzeige
if not failed:
sense.show_letter("O")
else:
sense.show_letter("X")
sleep(3)
sense.clear()
del bar
del sense
Dann!
Recommended Posts