Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- import rabbyt
- import os
- import sys
- import random
- rabbyt.data_director = os.path.dirname(__file__)
- #Act upon keyboard and mouse events
- def dispatch_events():
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- sys.exit()
- elif event.type == pygame.KEYDOWN:
- if event.key == 115: stack.scatter()
- elif event.key == 32: stack.gather()
- elif event.key == pygame.K_q: sys.exit()
- class Stack():
- def __init__(self, pos, screen_size=(1280, 1024), items=[]):
- self.pos = pos
- self.screen_size = screen_size
- self.items = items
- #Generate random angle
- self.rr = lambda: random.randrange(0, 360)
- #Generate random y coordinate
- self.rx = lambda: random.randrange(int(self.screen_size[0]/-2), int(self.screen_size[0]/2))
- #Generate random x coordinate
- self.ry = lambda: random.randrange(int(self.screen_size[1]/-2), int(self.screen_size[1]/2))
- def add(self, item):
- self.items.append(item)
- item.x = self.pos[0]
- item.y = self.pos[1]
- def gather(self, pos='h', dt=.5):
- if pos == 'h': pos = self.pos
- for item in self.items:
- item.x = rabbyt.ease(item.x, pos[0], rabbyt.get_time(), rabbyt.get_time()+dt)
- item.y = rabbyt.ease(item.y, pos[1], rabbyt.get_time(), rabbyt.get_time()+dt)
- rot = self.rr()
- item.rot = rabbyt.ease(item.rot, rot, rabbyt.get_time(), rabbyt.get_time()+.5)
- return 1
- def scatter(self, dt=.5):
- for item in self.items:
- x = self.rx()
- y = self.ry()
- item.x = rabbyt.ease(item.x, x, rabbyt.get_time(), rabbyt.get_time()+dt)
- item.y = rabbyt.ease(item.y, y, rabbyt.get_time(), rabbyt.get_time()+dt)
- item.rot = rabbyt.ease(item.rot, self.rr(), rabbyt.get_time(), rabbyt.get_time()+.5)
- return 1
- if __name__ == '__main__':
- pygame.init()
- pygame.display.set_mode((1280, 1024), pygame.OPENGL | pygame.DOUBLEBUF | pygame.FULLSCREEN | pygame.NOFRAME)
- rabbyt.set_viewport((1280, 1024))
- rabbyt.set_default_attribs()
- stack = Stack(pos=[-420, -350])
- #Change the number of objects here
- for x in range(0, 10):
- item1 = rabbyt.Sprite('item.png')
- stack.add(item1)
- c = pygame.time.Clock()
- while not pygame.event.get(pygame.QUIT):
- c.tick()
- rabbyt.clear()
- rabbyt.set_time(pygame.time.get_ticks()/1000.0)
- rabbyt.render_unsorted(stack.items)
- dispatch_events()
- pygame.display.flip()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement