123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- import pygame
- import pygame.gfxdraw
- import math
- pg = pygame
- pygame.init()
- #window = pygame.display.set_mode((600, 300))#,pygame.FULLSCREEN) #x left->right ,y top-> bottom
- window = pygame.display.set_mode((600, 300),pg.RESIZABLE,32)#,pygame.FULLSCREEN) #x left->right ,y top-> bottom
- #window = pygame.display.set_mode((600, 300),pg.NOFRAME,32)#,pygame.FULLSCREEN) #x left->right ,y top-> bottom
- #window = pygame.display.set_mode((1600, 900),pg.NOFRAME,32)#,pygame.FULLSCREEN) #x left->right ,y top-> bottom
- #window = pygame.display.set_mode((600, 300),pygame.FULLSCREEN) #x left->right ,y top-> bottom
- # pygame.display.set_mode((self.width, int(self.height+(self.height*0.15))) ,pygame.FULLSCREEN)
- pg.display.set_caption('LibreLight Animation')
- def event_read():
- inc = 1
- for event in pg.event.get():
- print("event",event)
- move_x = 0
- move_y = 0
- move_z = 0
- rot_x = 0
- rot_y = 0
- rot_z = 0
- if event.type== pg.QUIT:
- print("quit")
- pg.quit()
- quit()
- sys.exit()
- if "key" in dir(event):
- if event.key == 27: #ESC pg.KEYDOWN:
- print("quit")
- pg.quit()
- quit()
- sys.exit()
- class Grid():
- def __init__(self):
- pixA = []
- for c in range(10):
- row = []
- for r in range(10):
- color = [r,r,r]
- row.append(color)
- pixA.append(row)
- self.pixA = pixA
- self.red = 0
- self.green = 0
- self.blue = 0
- self.blue_dir = 1
- def draw(self):
- pixA = self.pixA
- #pixel_array = pygame.PixelArray(window)
- pixel_array = {} # pygame.PixelArray(window)
- #pixel_array.open()
- a_x_max = 600 #pixel_array[0])
- a_y_max = 300 #pixel_array)
-
- b_x_max = len(pixA[0])
- b_y_max = len(pixA)
-
- b_h = int(a_x_max / b_x_max)
- b_w = int(a_y_max / b_y_max)
- self.red = 0
- self.green = 0
- #blue = 255
- for r,row in enumerate(pixA):
- self.red += 30
- if self.red > 255:
- self.red = 255
- self.green = 0
- if self.blue > 255:
- self.blue = 255
- self.blue_dir = 0
- if self.blue <= 0:
- self.blue = 0
- self.blue_dir = 1
- for c,col in enumerate(row):
- self.green += 30
- if self.green > 255:
- self.green = 255
- color = pygame.Color(self.red,self.green,self.blue)
- #print("x:{:3} y:{:3} {:3} {:3} c:{}".format(x,y,x+bc,y+br,color))
- x = r*b_w
- y = c*b_h
- #pixel_array[r*b_w][c*b_h] = color
- #pixel_array[x:x+b_w-1,y:y+b_h-1] = color
- k = "{}:{},{}:{} {}".format(x,x+b_w-1,y,y+b_h-1,color) #x,x+10,y,y+10)
- pixel_array[k] = (x,x+b_w-1,y,y+b_h-1,color)
- #pixel_array.close()
- #one = 0
-
- if self.blue_dir:
- self.blue += 10
- else:
- self.blue -= 10
- return pixel_array
- class _planet():
- def __init__(self,x,y):
- self._pos_center = (x,y)
- self._ang = 0
- self._r = 10 #
- self._r2 = 10 # orbit,umlaufbahn
- self._color = [255,255,255]
- self._x=0
- self._y=0
- self.ix = math.sin(math.radians(0))*self.r
- self.iy = math.sqrt(self.r**2 - ix**2)
- def ang(self):
- pass
- def draw():
- pass
- return (self._x,self._y,self._color)
- class Gobo1():
- def __init__(self,x=20,y=20,speed=5):
- self.pos_x=x
- self.pos_x_dir = 1
- self.pos_y=y
- self.pos_y_dir = 1
- self.r = 7
- self.r_dir = 1
- self.speed = speed
- self.ang = 0
- self.ix=0
- self.iy=0
- def rotate(self):
- self.ix = math.sin(math.radians(0))*self.r
- self.iy = math.sqrt(self.r**2 - self.ix**2)
- self.ang+=1
- if self.ang >= 360:
- self.ang = 0
-
- def draw(self,color=[255,255,255]):
- self.rotate()
- #pixel_array = pygame.PixelArray(window)
- pixel_array = {}
- self.color = pygame.Color(color[0],color[1],color[2])
-
- x=self.pos_x
- y=self.pos_y
- x-=self.r
- y-=self.r
- k = "{}:{},{}:{}".format(x,x+10,y,y+10)
- pixel_array[k] = (x,x+10,y,y+10 , self.color )
- x+=self.r*2
- k = "{}:{},{}:{}".format(x,x+10,y,y+10)
- pixel_array[k] = (x,x+10,y,y+10 , self.color )
- y+=self.r*2
- x-=self.r
- k = "{}:{},{}:{}".format(x,x+10,y,y+10)
- pixel_array[k] = (x,x+10,y,y+10 , self.color )
- #pixel_array.close()
- if self.pos_x > 300:
- self.pos_x_dir = 0
- if self.pos_x <= self.speed:
- self.pos_x_dir = 1
- if self.pos_x_dir:
- self.pos_x += self.speed
- else:
- self.pos_x -= self.speed
- if self.r > 20:
- self.r_dir = 0
- if self.r <=7:
- self.r_dir = 1
- if self.r_dir:
- self.r+=1
- else:
- self.r-=1
- return pixel_array
- run = True
- one = 1
- blue = 0
- blue_dir = 1
- pos_x_dir = 1
- #pixel_array = pygame.PixelArray(window)
- import time
- #time.sleep(1)
- grid = Grid()
- gobo1 = Gobo1()
- gobo2 = Gobo1(200,150,speed=8)
- while run:
- event_read()
- if one:
- window.fill(0)
- d=grid.draw()
- d1=gobo1.draw()#20,10)
- d2=gobo2.draw()#20,10)
- pixel_array = pygame.PixelArray(window)
- for k in d:
- i = d[k]
- print( k,"i",i)
- #pixel_array[i[0]:i[1],i[2]:i[3]] = i[4] #(x,x+10,y,y+10 , self.color )
- #rect = pygame.Rect(window.get_rect().center, (10, 10)) #.inflate(*([min(window.get_size())//2]*2))
- #rect = pygame.draw.circle(window,pg.Color(200,0,200) , (10,10) ,10)
- rect = pygame.draw.circle(window,i[4] , (i[0]+10,i[2]) ,10)
- rect = pygame.gfxdraw.aacircle(window, i[0]+10,i[2] ,10,i[4])
- #rect = pygame.draw.Rect(window,i[4] , (i[0],i[2]) ,10) #(10, 10))
- #rect = pygame.Rect(window.get_rect().center, (0, 0)).inflate(*([min(window.get_size())//2]*2))
- #pygame.display.flip()
- for k in d1:
- i = d1[k]
- print( k,"i",i)
- #pixel_array[i[0]:i[1],i[2]:i[3]] = i[4] #(x,x+10,y,y+10 , self.color )
- rect = pygame.draw.circle(window,i[4] , (i[0]+10,i[2]) ,10)
- rect = pygame.gfxdraw.aacircle(window, i[0]+10,i[2] ,10,i[4])
- for k in d2:
- i = d2[k]
- print( k,"i",i)
- #pixel_array[i[0]:i[1],i[2]:i[3]] = i[4] #(x,x+10,y,y+10 , self.color )
- rect = pygame.draw.circle(window,i[4] , (i[0]+10,i[2]) ,10)
- rect = pygame.gfxdraw.aacircle(window, i[0]+10,i[2] ,10,i[4])
- pixel_array.close()
- #pygame.display.flip()
- #gobo2.draw(color=[255,0,0])
- #pygame.display.flip()
-
- pg.time.wait(10)
- pygame.display.flip()
- pg.time.wait(10)
- pygame.quit()
- exit()
|