diff --git a/main.py b/main.py index 995594b..17d4906 100644 --- a/main.py +++ b/main.py @@ -5,16 +5,6 @@ from src.tractor import Tractor from src.settings import Settings -def draw_line(screen: pygame.display, settings): - for line in range(0, 11): - pygame.draw.line(screen, (255, 255, 255), (0, line * settings.tile_size), - (settings.screen_width, line*settings.tile_size)) - pygame.draw.line(screen, (255, 255, 255), (line * settings.tile_size, 0), - (line * settings.tile_size, settings.screen_height)) - - -# TODO: add Sprite to every class and store Tile objects as Sprite group - def main(): pygame.init() @@ -25,16 +15,15 @@ def main(): screen = pygame.display.set_mode((settings.screen_width, settings.screen_height)) pygame.display.set_caption('TRAKTOHOLIK') - background_image = pygame.image.load('assets/images/sky.png') - background_image = pygame.transform.scale(background_image, (settings.screen_width, settings.screen_height)) + # background_image = pygame.image.load('assets/images/sky.png') + # background_image = pygame.transform.scale(background_image, (settings.screen_width, settings.screen_height)) run = True - while run: - screen.blit(background_image, (0, 0)) - world.draw(screen) - draw_line(screen, settings) - screen.blit(tractor.image, (6*settings.tile_size, 5*settings.tile_size)) + # screen.blit(background_image, (0, 0)) to chyba sie nie przyda, wiec narazie comment + world.draw_tiles(screen) + world.draw_lines(screen) + tractor.draw_tractor(screen) for event in pygame.event.get(): if event.type == pygame.QUIT: diff --git a/src/plant.py b/src/plant.py index a247d2c..1d98473 100644 --- a/src/plant.py +++ b/src/plant.py @@ -1,7 +1,10 @@ -class Plant: +from pygame.sprite import Sprite + +class Plant(Sprite): """ Class representing plants """ def __init__(self, species, tile): + super().__init__() self.species = species self.tile = tile self.position = tile.position diff --git a/src/settings.py b/src/settings.py index c091421..7380fd8 100644 --- a/src/settings.py +++ b/src/settings.py @@ -1,5 +1,5 @@ class Settings: - """ Class to represent all settings for the app, maybe later as .cfg """ + """ Class to represent all static settings for the app, maybe later as .cfg """ def __init__(self): # Screen settings diff --git a/src/tile.py b/src/tile.py index a59be55..e8b7f5c 100644 --- a/src/tile.py +++ b/src/tile.py @@ -1,7 +1,12 @@ -class Tile: +from pygame.sprite import Sprite + + +class Tile(Sprite): """ Class to represent single board tile """ - def __init__(self, row_id, col_id, image, rect): + def __init__(self, type, row_id, col_id, image, rect): + super().__init__() + self.type = type self.row_id = row_id self.col_id = col_id self.position = (row_id, col_id) diff --git a/src/tractor.py b/src/tractor.py index 07f6406..ab9b3c9 100644 --- a/src/tractor.py +++ b/src/tractor.py @@ -1,14 +1,20 @@ import pygame +from pygame.sprite import Sprite -class Tractor: +class Tractor(Sprite): """ Class to represent our agent """ def __init__(self, engine, fertilizer, settings): + super().__init__() self.image = pygame.transform.scale(pygame.image.load('assets/images/tractor.png'), (0.9*settings.tile_size, 0.9*settings.tile_size)) self.engine = engine self.fertilizer = fertilizer + self.settings = settings + + def draw_tractor(self, screen): + screen.blit(self.image, (6 * self.settings.tile_size, 5 * self.settings.tile_size)) def hydrate(self, tile): if tile.hydration < tile.plant.min_hydration: diff --git a/src/world.py b/src/world.py index 5cb96c5..0d8674a 100644 --- a/src/world.py +++ b/src/world.py @@ -3,44 +3,50 @@ from src.tile import Tile class World: - """ Class to represent complete game board """ - - world_data = [ - [1, 1, 1, 1, 0, 0, 1, 1, 1, 1], - [1, 1, 1, 1, 0, 0, 1, 1, 1, 1], - [1, 1, 1, 1, 0, 0, 1, 1, 1, 1], - [1, 1, 1, 1, 0, 0, 1, 1, 1, 1], - [1, 1, 1, 1, 0, 0, 1, 1, 1, 1], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], - ] # it will be changed when miguel sends his code + """ Class to represent complete game board, storing Tile classes inside Sprite Group """ def __init__(self, settings): - self.tile_list = [] + self.world_data = [[1, 1, 1, 1, 0, 0, 1, 1, 1, 1], + [1, 1, 1, 1, 0, 0, 1, 1, 1, 1], + [1, 1, 1, 1, 0, 0, 1, 1, 1, 1], + [1, 1, 1, 1, 0, 0, 1, 1, 1, 1], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [1, 1, 1, 1, 0, 0, 1, 1, 1, 1], + [1, 1, 1, 1, 0, 0, 1, 1, 1, 1], + [1, 1, 1, 1, 0, 0, 1, 1, 1, 1], + [1, 1, 1, 1, 0, 0, 1, 1, 1, 1]] self.dirt_image = pygame.image.load('assets/images/dirt.jpeg') self.gravel_image = pygame.image.load('assets/images/gravel.jpeg') self.settings = settings + self.tiles = pygame.sprite.Group() # mamy tiles jako Sprite Group, to sie przyda potem do kolizji itp. + self.create_tiles() + def create_tiles(self): row_count = 0 for row in self.world_data: col_count = 0 - for tile in row: if tile == 1: - img = pygame.transform.scale(self.dirt_image, (settings.tile_size, settings.tile_size)) + img = pygame.transform.scale(self.dirt_image, (self.settings.tile_size, self.settings.tile_size)) + type = 'dirt' elif tile == 0: - img = pygame.transform.scale(self.gravel_image, (settings.tile_size, settings.tile_size)) + img = pygame.transform.scale(self.gravel_image, (self.settings.tile_size, self.settings.tile_size)) + type = 'gravel' img_rect = img.get_rect() - img_rect.x = col_count * settings.tile_size - img_rect.y = row_count * settings.tile_size - tile = Tile(row_count, col_count, img, img_rect) - self.tile_list.append(tile) + img_rect.x = col_count * self.settings.tile_size + img_rect.y = row_count * self.settings.tile_size + tile = Tile(type, row_count, col_count, img, img_rect) + self.tiles.add(tile) col_count += 1 row_count += 1 - def draw(self, screen): - for tile in self.tile_list: - screen.blit(tile.image, tile.rect) + def draw_tiles(self, screen): + self.tiles.draw(screen) + + def draw_lines(self, screen): + for line in range(len(self.world_data)): + pygame.draw.line(screen, (255, 255, 255), (0, line * self.settings.tile_size), + (self.settings.screen_width, line * self.settings.tile_size)) + pygame.draw.line(screen, (255, 255, 255), (line * self.settings.tile_size, 0), + (line * self.settings.tile_size, self.settings.screen_height))