Merge pull request 'structure_cleanup' (#4) from structure_cleanup into master

Reviewed-on: s464965/WMICraft#4
This commit is contained in:
Dawid Korzępa 2022-03-13 15:06:53 +01:00
commit f7cfb1a22b
20 changed files with 94 additions and 87 deletions

0
common/__init__.py Normal file
View File

View File

@ -19,4 +19,4 @@ TILES = [
'sand.png',
'water.png',
'grass_with_tree.jpg',
]
]

0
logic/__init__.py Normal file
View File

View File

@ -1,22 +1,25 @@
import pygame
import sys
from colors import FONT_DARK, WHITE
from constants import GAME_TITLE, WINDOW_WIDTH, WINDOW_HEIGHT, FPS_COUNT, TILES
from grid import Grid
from helpers import draw_text
from logs import Logs
from stats import Stats
from knight import Knight
from monster import Monster
from spawner import Spawner
import pygame
from common.colors import FONT_DARK, WHITE
from common.constants import GAME_TITLE, WINDOW_WIDTH, WINDOW_HEIGHT, FPS_COUNT, TILES
from common.helpers import draw_text
from models.knight import Knight
from models.monster import Monster
from ui.screens.credits import Credits
from ui.logs import Logs
from ui.screens.options import Options
from ui.stats import Stats
from .grid import Grid
from .spawner import Spawner
class Game:
def __init__(self):
pygame.init()
pygame.display.set_caption(GAME_TITLE)
pygame.display.set_icon(pygame.image.load('resources/icons/sword.png'))
pygame.display.set_icon(pygame.image.load('./resources/icons/sword.png'))
self.screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
self.clock = pygame.time.Clock()
@ -26,7 +29,8 @@ class Game:
converted_tile = pygame.image.load('resources/textures/' + tile_path).convert_alpha()
self.tiles.append((tile_path, converted_tile))
self.bg = pygame.image.load("resources/textures/bg.jpg")
self.bg = pygame.image.load("./resources/textures/bg.jpg")
self.screens = {'credits': Credits(self.screen, self.clock), 'options': Options(self.screen, self.clock)}
click = False
@ -47,10 +51,10 @@ class Game:
self.game()
if button_2.collidepoint((mx, my)):
if click:
self.options()
self.screens['options'].display_screen()
if button_3.collidepoint((mx, my)):
if click:
self.credits()
self.screens['credits'].display_screen()
pygame.draw.rect(self.screen, (0, 191, 255), button_1, 0, 4)
draw_text('PLAY', WHITE, self.screen, 870, 255)
@ -76,52 +80,19 @@ class Game:
pygame.display.update()
self.clock.tick(60)
def options(self):
running = True
while running:
self.screen.fill((0, 0, 0))
draw_text('options', WHITE, self.screen, 20, 20, 30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
pygame.display.update()
self.clock.tick(60)
def credits(self):
running = True
while running:
self.screen.fill((0, 0, 0))
draw_text('credits', WHITE, self.screen, 20, 20, 30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
pygame.display.update()
self.clock.tick(60)
def game(self):
running = True
grid = Grid(self.tiles)
stats = Stats()
logs = Logs()
knight1 = Knight("/resources/textures/knight.png")
knight2 = Knight("/resources/textures/knight.png")
knight1 = Knight("./resources/textures/knight.png")
knight2 = Knight("./resources/textures/knight.png")
spawn = Spawner(grid, [knight1, knight2], 4, 5, 8, 0)
spawn.spawn()
knights_list = pygame.sprite.Group()
knights_list.add(knight1)
knights_list.add(knight2)
while running:
self.screen.blit(self.bg, (0, 0))
@ -138,7 +109,7 @@ class Game:
logs.draw(self.screen)
knights_list.draw(self.screen)
monster1 = Monster(self.screen, "/resources/textures/dragon.png")
monster1 = Monster(self.screen, "./resources/textures/dragon.png")
monster_list = pygame.sprite.Group()
monster_list.add(monster1)
pygame.display.update()

View File

@ -1,8 +1,10 @@
import pygame
import random
from field import Field
from constants import ROWS, COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, GRID_CELL_HEIGHT, BORDER_WIDTH, BORDER_RADIUS
import pygame
from common.constants import ROWS, COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, GRID_CELL_HEIGHT, BORDER_WIDTH, \
BORDER_RADIUS
from .field import Field
class Grid:
@ -33,4 +35,3 @@ class Grid:
GRID_CELL_HEIGHT]
image = self.grid[row][column].converted_texture
screen.blit(pygame.transform.scale(image, (GRID_CELL_WIDTH, GRID_CELL_HEIGHT)), box_rect)

View File

@ -1,6 +1,7 @@
from constants import ROWS, COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, GRID_CELL_HEIGHT, BORDER_WIDTH, BORDER_RADIUS
import random
from common.constants import GRID_CELL_PADDING, GRID_CELL_WIDTH, GRID_CELL_HEIGHT
class Spawner:
def __init__(self, grid, objs_to_spawn_list: list, width, height, pos_row, pos_column):
@ -20,9 +21,8 @@ class Spawner:
(GRID_CELL_PADDING + GRID_CELL_HEIGHT) * row + GRID_CELL_PADDING + 7])
for obj in self.objs_to_spawn_list:
random_tile = random.randint(0, len(coords)-1)
random_tile = random.randint(0, len(coords) - 1)
obj.rect.x = coords[random_tile][0]
obj.rect.y = coords[random_tile][1]
coords.pop(random_tile)
obj.update()

View File

@ -1,4 +1,4 @@
from game import Game
from logic.game import Game
if __name__ == '__main__':
game = Game()

0
models/__init__.py Normal file
View File

View File

@ -1,17 +1,13 @@
import pygame.image
from constants import ROWS, COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, GRID_CELL_HEIGHT, BORDER_WIDTH, BORDER_RADIUS, \
WINDOW_WIDTH, WINDOW_HEIGHT
class Knight(pygame.sprite.Sprite):
def __init__(self, img):
super().__init__()
self.images = []
self.image = pygame.image.load("resources/textures/knight.png")
self.image = pygame.transform.scale(self.image, (40, 40))
self.images.append(self.image)
self.rect = self.image.get_rect()
knights_list = pygame.sprite.Group()
import pygame.image
class Knight(pygame.sprite.Sprite):
def __init__(self, img):
super().__init__()
self.images = []
self.image = pygame.image.load("./resources/textures/knight.png")
self.image = pygame.transform.scale(self.image, (40, 40))
self.images.append(self.image)
self.rect = self.image.get_rect()
knights_list = pygame.sprite.Group()

View File

@ -1,5 +1,4 @@
import pygame.image
import random
class Monster(pygame.sprite.Sprite):
@ -7,7 +6,7 @@ class Monster(pygame.sprite.Sprite):
def __init__(self, screen, img):
super().__init__()
self.images = []
self.image = pygame.image.load("resources/textures/dragon.png")
self.image = pygame.image.load("./resources/textures/dragon.png")
self.image = pygame.transform.scale(self.image, (40, 40))
self.images.append(self.image)
self.rect = self.image.get_rect()

0
ui/__init__.py Normal file
View File

View File

@ -1,8 +1,8 @@
import pygame
from colors import FONT_DARK, ORANGE, WHITE, RED
from constants import COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, BORDER_WIDTH, BORDER_RADIUS
from helpers import draw_text
from common.colors import FONT_DARK, ORANGE, WHITE
from common.constants import COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, BORDER_WIDTH, BORDER_RADIUS
from common.helpers import draw_text
class Logs:

0
ui/screens/__init__.py Normal file
View File

6
ui/screens/credits.py Normal file
View File

@ -0,0 +1,6 @@
from ui.screens.screen import Screen
class Credits(Screen):
def __init__(self, screen, clock):
super().__init__('credits', screen, clock)

6
ui/screens/options.py Normal file
View File

@ -0,0 +1,6 @@
from ui.screens.screen import Screen
class Options(Screen):
def __init__(self, screen, clock):
super().__init__('options', screen, clock)

28
ui/screens/screen.py Normal file
View File

@ -0,0 +1,28 @@
import pygame
from common.colors import WHITE
from common.helpers import draw_text
class Screen:
def __init__(self, screen_name, screen, clock):
self.screen_name = screen_name
self.screen = screen
self.clock = clock
def display_screen(self):
"""override this method in order to get specific layout"""
running = True
while running:
self.screen.fill((0, 0, 0))
draw_text(self.screen_name, WHITE, self.screen, 20, 20, 30)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
running = False
pygame.display.update()
self.clock.tick(60)

View File

@ -1,8 +1,8 @@
import pygame
from colors import FONT_DARK, ORANGE, WHITE, RED
from constants import COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, BORDER_WIDTH, BORDER_RADIUS
from helpers import draw_text
from common.colors import FONT_DARK, ORANGE, WHITE, RED
from common.constants import COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, BORDER_WIDTH, BORDER_RADIUS
from common.helpers import draw_text
class Stats:
@ -21,8 +21,8 @@ class Stats:
pygame.draw.rect(screen, ORANGE, pygame.Rect(x, y + 65, 340, 3))
# shields
shield_blue = pygame.image.load('resources/textures/shield_blue.png')
shield_red = pygame.image.load('resources/textures/shield_red.png')
shield_blue = pygame.image.load('./resources/textures/shield_blue.png')
shield_red = pygame.image.load('./resources/textures/shield_red.png')
screen.blit(shield_blue, (x + 20, y + 80))
screen.blit(shield_red, (x + 200, y + 80))
draw_text('VS', FONT_DARK, screen, x + 150, y + 120, 36)
@ -41,4 +41,4 @@ class Stats:
# points
pygame.draw.rect(screen, ORANGE, pygame.Rect(x, y + 390, 340, 3))
draw_text('PUNKTY: 10', FONT_DARK, screen, x + 35, y + 408, 18, True)
draw_text('PUNKTY: 10', FONT_DARK, screen, x + 215, y + 408, 18, True)
draw_text('PUNKTY: 10', FONT_DARK, screen, x + 215, y + 408, 18, True)