import pygame from random import randint # Load various cutter images cutter_images_number = 2 cutter_images = ["images/cutter_%02d.png" % cutter_images_number for cutter_images_number in xrange(1, cutter_images_number + 1) ] class Cutter: def __init__(self, screen_w, screen_h, cutter_speed, cut_time_left): self.cut_tree = False self.speed = cutter_speed self.cut_time = cut_time_left self.image = pygame.image.load(cutter_images[randint(0, cutter_images_number - 1)]) image_rect = self.image.get_rect() size_reduction = 5 self.collision_rect = pygame.Rect(image_rect.left + size_reduction, \ image_rect.top + size_reduction, \ image_rect.width - size_reduction, \ image_rect.height - size_reduction) self.screen_w = screen_w self.screen_h = screen_h self.x = screen_w/randint(1,4) self.y = screen_h/randint(1,4) self.position = [ self.x, self.y] def update(self): image_center = self.image.get_width()/2 random_number1 = randint(0,3) random_number2 = randint(0,3) if self.cut_tree == False: if random_number1 == random_number2: if random_number1 == 0: self.position = ((self.position[0] + random_number1 * self.speed + image_center)%self.screen_w - image_center), \ ((self.position[1] + random_number1 * self.speed + image_center)%self.screen_h - image_center) elif random_number1 == 1: self.position = ((self.position[0] + random_number1 * self.speed + image_center)%self.screen_w - image_center), \ ((self.position[1] - random_number1 * self.speed + image_center)%self.screen_h - image_center) elif random_number1 == 2: self.position = ((self.position[0] - random_number1 * self.speed + image_center)%self.screen_w - image_center), \ ((self.position[1] - random_number1 * self.speed + image_center)%self.screen_h - image_center) elif random_number1 == 3: self.position = ((self.position[0] - random_number1 * self.speed + image_center)%self.screen_w - image_center), \ ((self.position[1] + random_number1 * self.speed + image_center)%self.screen_h - image_center) def collides_with(self, other): return self.get_absolute_rect().colliderect(other.get_absolute_rect()) def draw(self, on_surface): on_surface.blit(self.image, self.position) def get_absolute_rect(self): return self.collision_rect.move(self.position)