From 3e11cd88317797748e245355b26f0462a87b5e5f Mon Sep 17 00:00:00 2001 From: Cezary Adamczak Date: Sun, 28 Mar 2021 23:49:44 +0200 Subject: [PATCH] =?UTF-8?q?G=C5=82=C3=B3wny=20plik=20uruchomieniowy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit basic_grid zaktualizowany na zajęcia nr 4 --- basic_grid.py | 135 ++++++++++++++------------------------------------ 1 file changed, 36 insertions(+), 99 deletions(-) diff --git a/basic_grid.py b/basic_grid.py index 784bed6..ad8da28 100644 --- a/basic_grid.py +++ b/basic_grid.py @@ -11,97 +11,18 @@ from pygame.locals import ( K_ESCAPE, K_SPACE, KEYDOWN, - QUIT, + QUIT ) +from field import * +from tractor import * +from plant import * +from colors import * +from dimensions import * + # Initialize pygame pygame.init() -# Grid size -GSIZE = 10 - -# This sets the WIDTH and HEIGHT of each grid location -WIDTH = 35 -HEIGHT = 35 - -# This sets the margin between each cell -MARGIN = 5 - -# Window size -SCREEN_WIDTH = GSIZE * (WIDTH + MARGIN) + MARGIN -SCREEN_HEIGHT = GSIZE * (HEIGHT + MARGIN) + MARGIN - -# Set some colors -BLACK = (0, 0, 0) -WHITE = (255, 255, 255) -GREEN = (0, 255, 0) -RED = (255, 0, 0) -BROWN = (140, 95, 65) -DBROWN = (65, 50, 20) -YELLOW = (255, 255, 0) -BLUE = (0, 0, 255) - - -# Define a Tractor object by extending pygame.sprite.Sprite -# The surface drawn on the screen is now an attribute of 'tractor' -class Tractor(pygame.sprite.Sprite): - def __init__(self): - super(Tractor, self).__init__() - self.surf = pygame.Surface((WIDTH, HEIGHT)) - self.surf.fill(RED) - self.rect = self.surf.get_rect(topleft=(MARGIN, MARGIN)) - self.position = [0, 0] - - 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() - -# Define a Field object by extending pygame.sprite.Sprite -# The surface drawn on the screen is now an attribute of 'field' -class Field(pygame.sprite.Sprite): - def __init__(self, row, column): - super(Field, self).__init__() - self.surf = pygame.Surface((WIDTH, HEIGHT)) - self.surf.fill(BROWN) - self.rect = self.surf.get_rect(topleft=((MARGIN + WIDTH) * row + MARGIN, (MARGIN + HEIGHT) * column + MARGIN)) - self.hydration = 0 - - def hydrate(self): - if self.hydration <= 3: - self.hydration += 1 - if self.hydration == 1: - self.surf.fill(YELLOW) - if self.hydration == 2: - self.surf.fill(GREEN) - if self.hydration == 3: - self.surf.fill(BLUE) - # Name the window pygame.display.set_caption("Inteligentny Traktor") @@ -109,9 +30,6 @@ pygame.display.set_caption("Inteligentny Traktor") # The size is determined by the constant SCREEN_WIDTH and SCREEN_HEIGHT screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) -# Instantiate tractor. Right now, this is just a rectangle. -tractor = Tractor() - # Create field array field = [] @@ -121,13 +39,23 @@ for row in range(GSIZE): fieldbit = Field(row, column) field[row].append(fieldbit) +tractor = Tractor(field[0][0]) + +plant = Plant(field[1][1], "wheat") + + +print(tractor.rect) +print(field[0][0].rect) + # Variable to keep the main loop running -running = True +RUNNING = True + +ticker = 0 clock = pygame.time.Clock() # Main loop -while running: +while RUNNING: # Look at every event in the queue for event in pygame.event.get(): @@ -135,11 +63,10 @@ while running: if event.type == KEYDOWN: # Was it the Escape key? If so, stop the loop. if event.key == K_ESCAPE: - running = False - + RUNNING = False # Did the user click the window close button? If so, stop the loop. elif event.type == QUIT: - running = False + RUNNING = False # Get all keys pressed at a time pressed_keys = pygame.key.get_pressed() @@ -150,18 +77,28 @@ while running: # Set the screen background screen.fill(DBROWN) - + # Draw the field for row in range(GSIZE): for column in range(GSIZE): screen.blit(field[row][column].surf, field[row][column].rect) - # Draw the player on the screen screen.blit(tractor.surf, tractor.rect) - # Update the screen + # Draw the player on the screen + screen.blit(plant.surf, plant.rect) + + if ticker == 0: + for row in range(GSIZE): + for column in range(GSIZE): + field[row][column].dehydrate() + + plant.grow() + + ticker = (ticker + 1)%4 + + # Update the screen pygame.display.flip() # Ensure program maintains a rate of 15 frames per second - clock.tick(15) - + clock.tick(4)