diff --git a/tractor.py b/tractor.py index 3b6b1bf..6716e0c 100644 --- a/tractor.py +++ b/tractor.py @@ -1,60 +1,90 @@ -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 * - -class Tractor(pygame.sprite.Sprite): - def __init__(self, field): - super(Tractor, self).__init__() - self.surf = pygame.Surface((WIDTH, HEIGHT)) - self.surf.fill(RED) - self.position = field.position - self.rect = self.surf.get_rect( - topleft=((MARGIN + WIDTH) * self.position[0] + MARGIN, (MARGIN + HEIGHT) * self.position[1] + MARGIN)) - self.field = field - - def update(self, pressed_keys): - if pressed_keys[K_UP]: - self.rect.move_ip(0, -(HEIGHT + MARGIN)) - self.position[1] -= 1 - if self.rect.top <= MARGIN: - self.rect.top = MARGIN - self.position[1] = 0 - if pressed_keys[K_DOWN]: - self.rect.move_ip(0, HEIGHT + MARGIN) - self.position[1] += 1 - if self.rect.bottom >= SCREEN_HEIGHT-MARGIN: - self.rect.bottom = SCREEN_HEIGHT-MARGIN - self.position[1] = GSIZE-1 - if pressed_keys[K_LEFT]: - self.rect.move_ip(-(WIDTH + MARGIN), 0) - self.position[0] -= 1 - if self.rect.left < MARGIN: - self.rect.left = MARGIN - self.position[0] = 0 - if pressed_keys[K_RIGHT]: - self.rect.move_ip(WIDTH + MARGIN, 0) - self.position[0] += 1 - if self.rect.right > SCREEN_WIDTH-MARGIN: - self.rect.right = SCREEN_WIDTH-MARGIN - self.position[0] = GSIZE-1 - - def hydrate(self, field, pressed_keys): - if pressed_keys[K_SPACE]: - 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() +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