Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- #-*- coding:utf-8 -*-
- import sys
- import pygame
- class Object:
- def __init__(self, img_path, screen):
- self.surface = pygame.image.load(img_path)
- self.rect = self.surface.get_rect()
- self.screen = screen
- self.box = screen.get_size()
- self._speed = 1
- self.speed = 1
- self.accel = .0
- self.control = {'type':1, 'target':None}
- def move(self, dirs=None):
- if not self.collided():
- if self.control['type'] == 1:
- if dirs[pygame.K_UP]:
- self.rect = self.rect.move((0,-self.speed))
- if dirs[pygame.K_DOWN]:
- self.rect = self.rect.move((0,self.speed))
- if dirs[pygame.K_LEFT]:
- self.rect = self.rect.move((-self.speed,0))
- if dirs[pygame.K_RIGHT]:
- self.rect = self.rect.move((self.speed,0))
- elif self.control['type'] == 2:
- target = self.control['target']
- if self.rect.top > target.rect.bottom:
- self.rect = self.rect.move((0,-self.speed))
- if self.rect.bottom < target.rect.top:
- self.rect = self.rect.move((0,self.speed))
- if self.rect.left > target.rect.right:
- self.rect = self.rect.move((-self.speed,0))
- if self.rect.right < target.rect.left:
- self.rect = self.rect.move((self.speed,0))
- self.speed += self.accel
- else: self.stop()
- def collided(self):
- if self.rect.right > self.box[0]:
- self.rect.right -= self._speed
- return True
- if self.rect.left < 0:
- self.rect.left += self._speed
- return True
- if self.rect.bottom > self.box[1]:
- self.rect.bottom -= self._speed
- return True
- if self.rect.top < 0:
- self.rect.top += self._speed
- return True
- return False
- def stop(self):
- self.speed = self._speed
- def update(self):
- self.screen.blit(self.surface, self.rect)
- if __name__ == '__main__':
- pygame.init()
- screensize = 400, 300
- screen = pygame.display.set_mode(screensize)
- obj1 = Object("/usr/share/icons/hicolor/"\
- "48x48/apps/gdu-emblem-raid0.png", screen)
- obj1.accel = 0.05
- obj2 = Object("/usr/share/icons/hicolor/"\
- "48x48/apps/gdu-emblem-raid1.png", screen)
- obj2.rect.bottom += screensize[1]/2
- obj2.control['type'] = 2
- obj2.control['target'] = obj1
- while True:
- event = pygame.event.poll()
- if event.type == pygame.QUIT: sys.exit(0)
- key_status = pygame.key.get_pressed()
- if not any(key_status):
- obj1.stop()
- else:
- obj1.move(key_status)
- obj2.move()
- screen.fill((255,255,255))
- obj1.update()
- obj2.update()
- pygame.time.wait(30)
- pygame.display.flip()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement