GabeLinux

Python Gaming - 5 - 4

Feb 7th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.77 KB | None | 0 0
  1. from random import choice, randrange
  2. import time
  3.  
  4. WIDTH = 1280
  5. HEIGHT = 720
  6.  
  7. class Sprite(Actor):
  8.     def __init__(self, image, pos, speed):
  9.         Actor.__init__(self, image, pos)
  10.         self.x_speed = speed
  11.         self.y_speed = speed
  12.  
  13.     def update(self):
  14.         self.x += self.x_speed
  15.         self.y += self.y_speed
  16.         collided = False
  17.  
  18.         if self.right >= WIDTH or self.left <= 0:
  19.             self.x_speed = -self.x_speed
  20.             collided = True
  21.  
  22.         if self.bottom >= HEIGHT or self.top <= 0:
  23.             self.y_speed = -self.y_speed
  24.             collided = True
  25.  
  26.         if not collided:
  27.             for sprite in sprites:
  28.                 if not sprite is self and self.colliderect(sprite):
  29.                     self.x_speed = -self.x_speed
  30.                     self.y_speed = -self.y_speed
  31.                     break
  32.  
  33. class Player(Actor):
  34.     def __init__(self, image, pos, speed):
  35.         Actor.__init__(self, image, pos)
  36.         self.speed = speed
  37.  
  38.     def update(self):
  39.         if keyboard.right:
  40.             self.x = self.speed
  41.         if keyboard.left:
  42.             self.x = self.speed
  43.         if keyboard.up:
  44.             self.y = self.speed
  45.         if keyboard.down:
  46.             self.y = self.speed
  47.  
  48.         for sprite in sprites:
  49.             if sprite.colliderect(self):
  50.                 sprites.remove(sprite)
  51.  
  52.         if not len(sprites):
  53.             time_now = time.time()
  54.             time_taken = str(time_now - time_start)
  55.             print('You won in ', time_taken, ' seconds')
  56.             quit()
  57.  
  58. def spawnSprites(amount):
  59.     sprites = []
  60.  
  61.     images = ['masterball']
  62.     speeds = [-5, 5]
  63.  
  64.     for sprite in range(amount):
  65.         collided = True
  66.         attempts = 0
  67.         image = choice(images)
  68.         actor = Actor(image)
  69.  
  70.         while collided:
  71.             collided = False
  72.             attempts += 1
  73.  
  74.             if attempts > 5000:
  75.                 print('Too many sprites!')
  76.                 quit()
  77.  
  78.             actor.pos = (randrange(int(0 + actor.width / 2), int(WIDTH - actor.width / 2)), randrange(int(0 + actor.height / 2), int(HEIGHT - actor.height / 2)))
  79.             for other_sprite in sprites:
  80.                 if actor.colliderect(other_sprite):
  81.                     collided = True
  82.                     break
  83.  
  84.         sprites.append(Sprite(image, actor.pos, choice(speeds)))
  85.  
  86.     return sprites
  87.  
  88. player = Player('trainer', (100, 100), 4)
  89. sprites = spawnSprites(10)
  90. time_start = time.time()
  91.  
  92. def update():
  93.     for sprite in sprites:
  94.         sprite.update()
  95.  
  96.     player.update()
  97.  
  98. def draw():
  99.     screen.blit('background', (0, 0))
  100.  
  101.     for sprite in sprites:
  102.         sprite.draw()
  103.  
  104.     player.draw()
Advertisement
Add Comment
Please, Sign In to add comment