Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- import sys
- import math
- import pygame as pg
- def collidable(one,two):
- if one is two:
- return False
- else:
- return one.rect.colliderect(two.rect)
- class Block(pg.sprite.Sprite):
- def __init__(self,color,speed,*rect):
- pg.sprite.Sprite.__init__(self)
- self.rect = pg.Rect(rect)
- self.image = pg.Surface(self.rect.size).convert()
- self.image.fill(color)
- self.speed = speed
- def update(self,screen_rect,group):
- self.rect.move_ip(self.speed,0)
- collision = pg.sprite.spritecollide(self,group,False,collidable)
- if collision or not screen_rect.contains(self.rect):
- self.speed *= -1
- class Control(object):
- def __init__(self):
- os.environ["SDL_VIDEO_CENTERED"] = '1'
- pg.init()
- self.screen = pg.display.set_mode((500,270))
- self.screen_rect = self.screen.get_rect()
- self.clock = pg.time.Clock()
- self.done = False
- self.fps = 60.0
- self.blocks = self.make_blocks()
- def make_blocks(self):
- blocks = pg.sprite.Group()
- for i in range(30):
- y,x = divmod(i,6)
- rect = pg.Rect(x*55+100,y*55+20,10,10)
- speed = (1 if i%2 else -1)
- blocks.add(Block(pg.Color("green"),speed,rect))
- return blocks
- def event_loop(self):
- for event in pg.event.get():
- if event.type == pg.QUIT:
- self.done = True
- def main_loop(self):
- while not self.done:
- self.event_loop()
- self.blocks.update(self.screen_rect,self.blocks)
- self.screen.fill(0)
- self.blocks.draw(self.screen)
- pg.display.update()
- self.clock.tick(self.fps)
- if __name__ == "__main__":
- run_it = Control()
- run_it.main_loop()
- pg.quit()
- sys.exit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement