aboutsummaryrefslogtreecommitdiff
path: root/gfxdemo.py
diff options
context:
space:
mode:
Diffstat (limited to 'gfxdemo.py')
-rw-r--r--gfxdemo.py82
1 files changed, 82 insertions, 0 deletions
diff --git a/gfxdemo.py b/gfxdemo.py
new file mode 100644
index 0000000..7e242ae
--- /dev/null
+++ b/gfxdemo.py
@@ -0,0 +1,82 @@
+import os, sys, random, Util
+import pygame
+import math
+from Light import Light
+from LightStrip import LightStrip
+from LightSystem import LightSystem
+from pygame.locals import *
+spacing = 4
+vspacing = 12
+def dist(l1, l2):
+ return math.sqrt(sum([(l1[i]-l2[i])**2 for i in range(len(l1))]))
+def colorAdd(c1, c2):
+ if(c1 == None):
+ return c2
+ if(c2 == None):
+ return c1
+ c = [min(c1[i]+c2[i], 255) for i in range(4)]
+ return Color(*c)
+pygame.color.add = colorAdd
+class BouncyLightSystem(LightSystem):
+ def respond(self, responseInfo):
+ location = responseInfo['location']
+ data = responseInfo['data']
+ if(location[0] < 0):
+ data = 'right'
+ if(location[0] > self.length):
+ data = 'left'
+ if(data == None):
+ data = 'right'
+ if data == 'right':
+ change = 20
+ else:
+ change = -20
+ responseInfo['location'] = (location[0]+change, location[1])
+ responseInfo['data'] = data
+ LightSystem.respond(self,responseInfo)
+class BouncyLightSystemMultiple(BouncyLightSystem):
+ def respondToInput(self, inputDict):
+ if sum(inputDict['mouse']) % 2 == 0:
+ color = Color('Blue')
+ else:
+ color = Color('Red')
+ LightSystem.respond(self, {'location':inputDict['mouse'],'data': 'right',
+ 'color': color})
+class DyingLightSystem(LightSystem):
+ def respond(self, inputDict):
+ if 'responsesLeft' in inputDict:
+ inputDict['responsesLeft'] -= 1
+
+class ExplodeLightSystem(LightSystem):
+ def respond(self, location, data):
+ if data['responsesLeft'] != 0:
+ data['responsesLeft'] -= 1
+ for i in range(data['responsesLeft']):
+ LightSystem.respond(self, (location[0]+random.randint(-50,50),
+ location[1]+random.randint(-5,5)), dict(data))
+ def respondToInput(self, inputDict):
+ LightSystem.respond(self, inputDict['mouse'], {'responsesLeft':5})
+pygame.init()
+screen = pygame.display.set_mode((1300,50))
+background = pygame.Surface(screen.get_size())
+background = background.convert()
+background.fill(Color('Black'))
+clock = pygame.time.Clock()
+l = BouncyLightSystemMultiple(1300, 50)
+#l.respond((0, 25), None)
+#l.allOn()
+while 1:
+ for event in pygame.event.get():
+ if event.type is MOUSEBUTTONDOWN:
+ l.respondToInput({'mouse': pygame.mouse.get_pos()})
+ clock.tick(10)
+ background.fill(Color('Black'))
+ l.render(background)
+
+ screen.blit(background, (0,0))
+ pygame.display.flip()
+ l.timeStep()
+
+
+
+