62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
"""
|
|
Vi vil her lave en Matrix lignende animation, med de 25 LED.
|
|
Hvad skal vi bruge?
|
|
Random kollonne valg (0 til 4)
|
|
Random lysstyrke (1 til 9)
|
|
Random faldhastighed (1 til 10)
|
|
|
|
Hvergang der faldes, skal de eksisterende LED rykkes ned på næste linie, og en ny sættes i toppen.
|
|
Når en hel kollonne har været fyldt ud, skal der ikke længere sættes en ny LED, i toppen.
|
|
Når alle LED, i en kollonne er faldet ned, startes forfra.
|
|
|
|
Der skal holdes styr, på hver eneste LED, deres lysstyrke, faldhastighed, og om de er faldet ud.
|
|
"""
|
|
from microbit import *
|
|
from collections import deque
|
|
|
|
kol_1 = [0, 0, 0, 0, 0]
|
|
kol_2 = [0, 0, 0, 0, 0]
|
|
kol_3 = [0, 0, 0, 0, 0]
|
|
kol_4 = [0, 0, 0, 0, 0]
|
|
kol_5 = [0, 0, 0, 0, 0]
|
|
|
|
d_kol_1 = deque(kol_1)
|
|
d_kol_2 = deque(kol_2)
|
|
d_kol_3 = deque(kol_3)
|
|
d_kol_4 = deque(kol_4)
|
|
d_kol_5 = deque(kol_5)
|
|
|
|
matrix = {1: d_kol_1, 2: d_kol_2, 3: d_kol_3, 4: d_kol_4, 5: d_kol_5}
|
|
|
|
|
|
# Hver LED representation, skal kun holde styr på sig selv.
|
|
class LED:
|
|
def __init__(self, kol, lys, hast):
|
|
self.kol = []
|
|
self.i_live = True # Vi starter med at være i live.
|
|
self.række = 0 # Vi starter på øverste række.
|
|
self.kollonne = kol # Vi ved hvilken kollonne vi er i.
|
|
self.lys = lys # Vi sætter vores lysstyrke.
|
|
self.hastighed = hast # Vi falder med en konstant hastighed.
|
|
self.vis_led() # Tænd led
|
|
|
|
def fald(self):
|
|
self.række += 1 # Ryk til næste række
|
|
self.lys -= 1
|
|
if self.række > 4:
|
|
self.i_live = False
|
|
else:
|
|
self.vis_led()
|
|
self.matrix.ny_led(self.kol, self.lys, self.hastighed)
|
|
|
|
def vis_led(self):
|
|
display.set_pixel(self.kollonne, self.række, self.lys)
|
|
|
|
while True:
|
|
kol = random(1, 5)
|
|
lys = random(5, 9)
|
|
hast = random(1, 10)
|
|
|
|
for k in matrix:
|
|
matrix[k].pop()
|
|
matrix[k].appendleft(0) |