Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.46 KB | None | 0 0
  1. #!/usr/bin/env python
  2. #-*- coding:utf-8 -*-
  3. import sys
  4. import pygame
  5.  
  6. class Object:
  7.     def __init__(self, img_path, screen):
  8.         self.surface = pygame.image.load(img_path)
  9.         self.rect = self.surface.get_rect()
  10.         self.screen = screen
  11.         self.box = screen.get_size()
  12.         self._speed = 1
  13.         self.speed = 1
  14.         self.accel = .0
  15.         self.control = {'type':1, 'target':None}
  16.     def move(self, dirs=None):
  17.         if not self.collided():
  18.             if self.control['type'] == 1:
  19.                 if dirs[pygame.K_UP]:
  20.                     self.rect = self.rect.move((0,-self.speed))
  21.                 if dirs[pygame.K_DOWN]:
  22.                     self.rect = self.rect.move((0,self.speed))
  23.                 if dirs[pygame.K_LEFT]:
  24.                     self.rect = self.rect.move((-self.speed,0))
  25.                 if dirs[pygame.K_RIGHT]:
  26.                     self.rect = self.rect.move((self.speed,0))
  27.             elif self.control['type'] == 2:
  28.                 target = self.control['target']
  29.                 if self.rect.top > target.rect.bottom:
  30.                     self.rect = self.rect.move((0,-self.speed))
  31.                 if self.rect.bottom < target.rect.top:
  32.                     self.rect = self.rect.move((0,self.speed))
  33.                 if self.rect.left > target.rect.right:
  34.                     self.rect = self.rect.move((-self.speed,0))
  35.                 if self.rect.right < target.rect.left:
  36.                     self.rect = self.rect.move((self.speed,0))
  37.             self.speed += self.accel
  38.         else: self.stop()
  39.     def collided(self):
  40.         if self.rect.right > self.box[0]:
  41.             self.rect.right -= self._speed
  42.             return True
  43.         if self.rect.left < 0:
  44.             self.rect.left += self._speed
  45.             return True
  46.         if self.rect.bottom > self.box[1]:
  47.             self.rect.bottom -= self._speed
  48.             return True
  49.         if self.rect.top < 0:
  50.             self.rect.top += self._speed
  51.             return True
  52.         return False
  53.     def stop(self):
  54.         self.speed = self._speed
  55.     def update(self):
  56.         self.screen.blit(self.surface, self.rect)
  57.  
  58. if __name__ == '__main__':
  59.     pygame.init()
  60.     screensize = 400, 300
  61.     screen = pygame.display.set_mode(screensize)
  62.    
  63.     obj1 = Object("/usr/share/icons/hicolor/"\
  64.                       "48x48/apps/gdu-emblem-raid0.png", screen)
  65.     obj1.accel = 0.05
  66.    
  67.     obj2 = Object("/usr/share/icons/hicolor/"\
  68.                       "48x48/apps/gdu-emblem-raid1.png", screen)
  69.                      
  70.     obj2.rect.bottom += screensize[1]/2
  71.     obj2.control['type'] = 2
  72.     obj2.control['target'] = obj1
  73.     while True:
  74.         event = pygame.event.poll()
  75.         if event.type == pygame.QUIT: sys.exit(0)
  76.         key_status = pygame.key.get_pressed()
  77.         if not any(key_status):
  78.             obj1.stop()
  79.         else:
  80.             obj1.move(key_status)
  81.         obj2.move()
  82.         screen.fill((255,255,255))
  83.         obj1.update()
  84.         obj2.update()
  85.         pygame.time.wait(30)
  86.         pygame.display.flip()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement