mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
add Pac-Man effect (#382)
This commit is contained in:
parent
7f2d6bde9a
commit
86814ebc87
4
effects/pacman.json
Normal file
4
effects/pacman.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"name" : "Pac-Man",
|
||||
"script" : "pacman.py"
|
||||
}
|
81
effects/pacman.py
Normal file
81
effects/pacman.py
Normal file
@ -0,0 +1,81 @@
|
||||
import hyperion
|
||||
import time
|
||||
import colorsys
|
||||
from random import randint
|
||||
|
||||
# define pacman
|
||||
pacman = bytearray((255, 255, 1))
|
||||
|
||||
# define ghosts
|
||||
redGuy = bytearray((255, 0, 0))
|
||||
pinkGuy = bytearray((255, 184, 255))
|
||||
blueGuy = bytearray((0, 255, 255))
|
||||
slowGuy = bytearray((255, 184, 81))
|
||||
|
||||
light = bytearray((255, 184, 174))
|
||||
background = bytearray((0, 0, 0))
|
||||
|
||||
# initialize the led data
|
||||
ledDataEscape = bytearray()
|
||||
for i in range(hyperion.ledCount):
|
||||
if i == 1:
|
||||
ledDataEscape += pacman
|
||||
elif i == 7:
|
||||
ledDataEscape += pinkGuy
|
||||
elif i == 10:
|
||||
ledDataEscape += blueGuy
|
||||
elif i == 13:
|
||||
ledDataEscape += slowGuy
|
||||
elif i == 16:
|
||||
ledDataEscape += redGuy
|
||||
else:
|
||||
ledDataEscape += background
|
||||
|
||||
ledDataChase = bytearray()
|
||||
for i in range(hyperion.ledCount):
|
||||
if i == 1:
|
||||
ledDataChase += pacman
|
||||
elif i in [7, 10, 13, 16]:
|
||||
ledDataChase += bytearray((33, 33, 255))
|
||||
else:
|
||||
ledDataChase += background
|
||||
|
||||
# increment = 3, because LED-Color is defined by 3 Bytes
|
||||
increment = 3
|
||||
sleepTime = 0.3
|
||||
|
||||
def shiftLED(ledData, increment, limit, lightPos=None):
|
||||
state = 0
|
||||
while state < limit and not hyperion.abort():
|
||||
ledData = ledData[increment:] + ledData[:increment]
|
||||
|
||||
if (lightPos):
|
||||
tmp = ledData[lightPos]
|
||||
ledData[lightPos] = light
|
||||
|
||||
hyperion.setColor(ledData)
|
||||
|
||||
if (lightPos):
|
||||
ledData[lightPos] = tmp
|
||||
|
||||
time.sleep(sleepTime)
|
||||
state += 1
|
||||
|
||||
# start the write data loop
|
||||
while not hyperion.abort():
|
||||
|
||||
# escape mode
|
||||
ledData = ledDataEscape
|
||||
shiftLED(ledData, increment, hyperion.ledCount)
|
||||
|
||||
random = randint(10,hyperion.ledCount)
|
||||
|
||||
# escape mode + power pellet
|
||||
s = slice(3*random, 3*random+3)
|
||||
shiftLED(ledData, increment, hyperion.ledCount - random, s)
|
||||
|
||||
# chase mode
|
||||
shift = 3*(hyperion.ledCount - random)
|
||||
ledData=ledDataChase[shift:]+ledDataChase[:shift]
|
||||
shiftLED(ledData, -increment, 2*hyperion.ledCount-random)
|
||||
|
Loading…
x
Reference in New Issue
Block a user