diff --git a/main.py b/main.py index d257b7a..d98bdca 100644 --- a/main.py +++ b/main.py @@ -3,20 +3,20 @@ import pygame from pyglet.gl import * # for blocky textures # other files of this project -import project_constants +import project_constants as const import minefield as mf def main(): pygame.init() - pygame.display.set_caption(project_constants.V_NAME_OF_WINDOW) + pygame.display.set_caption(const.V_NAME_OF_WINDOW) # for blocky textures glEnable(GL_TEXTURE_2D) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST) # create an instance of Minefield, pass necessary data - minefield = mf.Minefield(project_constants.MAP_RANDOM_10x10) + minefield = mf.Minefield(const.MAP_RANDOM_10x10) running = True while running: @@ -26,17 +26,17 @@ def main(): # ================ # # background grid (fills frame with white, blits grid) - project_constants.SCREEN.fill((255, 255, 255)) - project_constants.SCREEN.blit( - project_constants.ASSET_BACKGROUND, + const.SCREEN.fill((255, 255, 255)) + const.SCREEN.blit( + const.ASSET_BACKGROUND, ( - project_constants.V_SCREEN_PADDING, - project_constants.V_SCREEN_PADDING + const.V_SCREEN_PADDING, + const.V_SCREEN_PADDING ) ) # draw tiles and mines - minefield.draw(project_constants.SCREEN) + minefield.draw(const.SCREEN) pygame.display.update() # ============== # @@ -48,7 +48,6 @@ def main(): if event.type == pygame.QUIT: running = False - # else: event_interpreter.interpret( event ) # Assigning all input from keyboard as variables into an array keys = pygame.key.get_pressed() diff --git a/minefield.py b/minefield.py index e200ccb..a049de1 100644 --- a/minefield.py +++ b/minefield.py @@ -1,31 +1,30 @@ -import pygame import json -import project_constants as consts +import project_constants as const import tile as tl import mine as mn tile_asset_options = { - "BLUE": consts.ASSET_TILE_BLUE, - "GREEN": consts.ASSET_TILE_GREEN, - "ORANGE": consts.ASSET_TILE_ORANGE, - "PURPLE": consts.ASSET_TILE_PURPLE, - "RED": consts.ASSET_TILE_RED, - "WHITE": consts.ASSET_TILE_WHITE, - "YELLOW": consts.ASSET_TILE_YELLOW + "BLUE": const.ASSET_TILE_BLUE, + "GREEN": const.ASSET_TILE_GREEN, + "ORANGE": const.ASSET_TILE_ORANGE, + "PURPLE": const.ASSET_TILE_PURPLE, + "RED": const.ASSET_TILE_RED, + "WHITE": const.ASSET_TILE_WHITE, + "YELLOW": const.ASSET_TILE_YELLOW } mine_asset_options = { - 'A': consts.ASSET_MINE_A, - 'B': consts.ASSET_MINE_B, - 'F': consts.ASSET_MINE_F, - 'K': consts.ASSET_MINE_K + 'A': const.ASSET_MINE_A, + 'B': const.ASSET_MINE_B, + 'F': const.ASSET_MINE_F, + 'K': const.ASSET_MINE_K } def calculate_screen_position(x, y): coords = ( - consts.V_SCREEN_PADDING + consts.V_TILE_SIZE * x, - consts.V_SCREEN_PADDING + consts.V_TILE_SIZE * y, + const.V_SCREEN_PADDING + const.V_TILE_SIZE * x, + const.V_SCREEN_PADDING + const.V_TILE_SIZE * y, ) return coords @@ -41,13 +40,13 @@ class Minefield: # create matrix of a desired size, fill it with default tile objects self.matrix = [ [ - tl.Tile((i, j)) for i in range(consts.V_GRID_VER_TILES) - ] for j in range(consts.V_GRID_HOR_TILES) + tl.Tile((i, j)) for i in range(const.V_GRID_VER_TILES) + ] for j in range(const.V_GRID_HOR_TILES) ] # iterate through tiles, set their colors and add mines - for x in range(consts.V_GRID_HOR_TILES): - for y in range(consts.V_GRID_VER_TILES): + for x in range(const.V_GRID_HOR_TILES): + for y in range(const.V_GRID_VER_TILES): # load tile's data from json tile_data = data[f"{x},{y}"] @@ -82,18 +81,24 @@ class Minefield: # draw the sapper sapper_screen_coords = calculate_screen_position(self.sapper_position[0], self.sapper_position[1]) - window.blit(consts.ASSET_SAPPER, sapper_screen_coords) + window.blit(const.ASSET_SAPPER, sapper_screen_coords) + + # ================ # + # === MOVEMENT === # + # ================ # # Make sure that sapper won't step on the mine. def check_legal_move(self, target): + if self.matrix[target[1]][target[0]].mine is None: return target else: return self.sapper_position # Here are defined functions that move our agent. They are being called in main when certain key is pressed + def go_right(self): - if self.sapper_position[0] < consts.V_GRID_HOR_TILES - 1: + if self.sapper_position[0] < const.V_GRID_HOR_TILES - 1: self.sapper_position = self.check_legal_move( (int(self.sapper_position[0]) + 1, int(self.sapper_position[1]))) @@ -108,6 +113,6 @@ class Minefield: (int(self.sapper_position[0]), int(self.sapper_position[1]) - 1)) def go_down(self): - if self.sapper_position[1] < consts.V_GRID_VER_TILES - 1: + if self.sapper_position[1] < const.V_GRID_VER_TILES - 1: self.sapper_position = self.check_legal_move( (int(self.sapper_position[0]), int(self.sapper_position[1]) + 1)) diff --git a/tile.py b/tile.py index b51e165..ee31c23 100644 --- a/tile.py +++ b/tile.py @@ -1,6 +1,3 @@ -import mine as mn - - class Tile: def __init__(self, position, color=None, mine=None): self.position = position