import pygame from pygame.locals import ( K_UP, K_DOWN, K_LEFT, K_RIGHT, K_ESCAPE, K_SPACE, K_c, KEYDOWN, QUIT ) from dimensions import * from colors import * from sprites import * class Tractor(pygame.sprite.Sprite): def __init__(self, field): super(Tractor, self).__init__() self.surf = pygame.Surface((WIDTH, HEIGHT)) self.surf = tractor_img_0 self.position = field.position self.rect = self.surf.get_rect( topleft=((MARGIN + WIDTH) * self.position[0] + MARGIN, (MARGIN + HEIGHT) * self.position[1] + MARGIN)) self.direction = [1, 0] def move(self): self.rect.move_ip(self.direction[0]*(WIDTH + MARGIN), self.direction[1]*(HEIGHT + MARGIN)) self.position[0] += self.direction[0] self.position[1] += self.direction[1] if self.position[0] >= GSIZE: self.position[0] = GSIZE-1 if self.position[1] >= GSIZE: self.position[1] = GSIZE-1 if self.position[0] < 0: self.position[0] = 0 if self.position[1] < 0: self.position[1] = 0 if self.rect.top <= MARGIN: self.rect.top = MARGIN if self.rect.bottom >= SCREEN_HEIGHT-MARGIN: self.rect.bottom = SCREEN_HEIGHT-MARGIN if self.rect.left < MARGIN: self.rect.left = MARGIN if self.rect.right > SCREEN_WIDTH-MARGIN: self.rect.right = SCREEN_WIDTH-MARGIN def rotate_right(self): if self.direction == [1, 0]: self.direction = [0, 1] self.surf = tractor_img_2 elif self.direction == [0, 1]: self.direction = [-1, 0] self.surf = tractor_img_1 elif self.direction == [-1, 0]: self.direction = [0, -1] self.surf = tractor_img_3 elif self.direction == [0, -1]: self.direction = [1, 0] self.surf = tractor_img_0 def rotate_left(self): if self.direction == [1, 0]: self.direction = [0, -1] self.surf = tractor_img_3 elif self.direction == [0, -1]: self.direction = [-1, 0] self.surf = tractor_img_1 elif self.direction == [-1, 0]: self.direction = [0, 1] self.surf = tractor_img_2 elif self.direction == [0, 1]: self.direction = [1, 0] self.surf = tractor_img_0 def hydrate(self, field): field[self.position[0]][self.position[1]].hydrate() def cut(self, field, pressed_keys): if pressed_keys[K_c]: field[self.position[0]][self.position[1]].free() def plant(self, field, plant, pressed_keys): if field.planted == 0: field.planted = plant plant.field = field