Merge pull request 'structure_cleanup' (#4) from structure_cleanup into master
Reviewed-on: #4
This commit is contained in:
commit
f7cfb1a22b
0
common/__init__.py
Normal file
0
common/__init__.py
Normal file
0
logic/__init__.py
Normal file
0
logic/__init__.py
Normal file
@ -1,22 +1,25 @@
|
|||||||
import pygame
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from colors import FONT_DARK, WHITE
|
import pygame
|
||||||
from constants import GAME_TITLE, WINDOW_WIDTH, WINDOW_HEIGHT, FPS_COUNT, TILES
|
|
||||||
from grid import Grid
|
from common.colors import FONT_DARK, WHITE
|
||||||
from helpers import draw_text
|
from common.constants import GAME_TITLE, WINDOW_WIDTH, WINDOW_HEIGHT, FPS_COUNT, TILES
|
||||||
from logs import Logs
|
from common.helpers import draw_text
|
||||||
from stats import Stats
|
from models.knight import Knight
|
||||||
from knight import Knight
|
from models.monster import Monster
|
||||||
from monster import Monster
|
from ui.screens.credits import Credits
|
||||||
from spawner import Spawner
|
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:
|
class Game:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
pygame.init()
|
pygame.init()
|
||||||
pygame.display.set_caption(GAME_TITLE)
|
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.screen = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
|
||||||
self.clock = pygame.time.Clock()
|
self.clock = pygame.time.Clock()
|
||||||
@ -26,7 +29,8 @@ class Game:
|
|||||||
converted_tile = pygame.image.load('resources/textures/' + tile_path).convert_alpha()
|
converted_tile = pygame.image.load('resources/textures/' + tile_path).convert_alpha()
|
||||||
self.tiles.append((tile_path, converted_tile))
|
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
|
click = False
|
||||||
|
|
||||||
@ -47,10 +51,10 @@ class Game:
|
|||||||
self.game()
|
self.game()
|
||||||
if button_2.collidepoint((mx, my)):
|
if button_2.collidepoint((mx, my)):
|
||||||
if click:
|
if click:
|
||||||
self.options()
|
self.screens['options'].display_screen()
|
||||||
if button_3.collidepoint((mx, my)):
|
if button_3.collidepoint((mx, my)):
|
||||||
if click:
|
if click:
|
||||||
self.credits()
|
self.screens['credits'].display_screen()
|
||||||
pygame.draw.rect(self.screen, (0, 191, 255), button_1, 0, 4)
|
pygame.draw.rect(self.screen, (0, 191, 255), button_1, 0, 4)
|
||||||
draw_text('PLAY', WHITE, self.screen, 870, 255)
|
draw_text('PLAY', WHITE, self.screen, 870, 255)
|
||||||
|
|
||||||
@ -76,52 +80,19 @@ class Game:
|
|||||||
pygame.display.update()
|
pygame.display.update()
|
||||||
self.clock.tick(60)
|
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):
|
def game(self):
|
||||||
running = True
|
running = True
|
||||||
grid = Grid(self.tiles)
|
grid = Grid(self.tiles)
|
||||||
stats = Stats()
|
stats = Stats()
|
||||||
logs = Logs()
|
logs = Logs()
|
||||||
knight1 = Knight("/resources/textures/knight.png")
|
knight1 = Knight("./resources/textures/knight.png")
|
||||||
knight2 = Knight("/resources/textures/knight.png")
|
knight2 = Knight("./resources/textures/knight.png")
|
||||||
spawn = Spawner(grid, [knight1, knight2], 4, 5, 8, 0)
|
spawn = Spawner(grid, [knight1, knight2], 4, 5, 8, 0)
|
||||||
spawn.spawn()
|
spawn.spawn()
|
||||||
knights_list = pygame.sprite.Group()
|
knights_list = pygame.sprite.Group()
|
||||||
knights_list.add(knight1)
|
knights_list.add(knight1)
|
||||||
knights_list.add(knight2)
|
knights_list.add(knight2)
|
||||||
|
|
||||||
|
|
||||||
while running:
|
while running:
|
||||||
self.screen.blit(self.bg, (0, 0))
|
self.screen.blit(self.bg, (0, 0))
|
||||||
|
|
||||||
@ -138,7 +109,7 @@ class Game:
|
|||||||
logs.draw(self.screen)
|
logs.draw(self.screen)
|
||||||
|
|
||||||
knights_list.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 = pygame.sprite.Group()
|
||||||
monster_list.add(monster1)
|
monster_list.add(monster1)
|
||||||
pygame.display.update()
|
pygame.display.update()
|
@ -1,8 +1,10 @@
|
|||||||
import pygame
|
|
||||||
import random
|
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:
|
class Grid:
|
||||||
@ -33,4 +35,3 @@ class Grid:
|
|||||||
GRID_CELL_HEIGHT]
|
GRID_CELL_HEIGHT]
|
||||||
image = self.grid[row][column].converted_texture
|
image = self.grid[row][column].converted_texture
|
||||||
screen.blit(pygame.transform.scale(image, (GRID_CELL_WIDTH, GRID_CELL_HEIGHT)), box_rect)
|
screen.blit(pygame.transform.scale(image, (GRID_CELL_WIDTH, GRID_CELL_HEIGHT)), box_rect)
|
||||||
|
|
@ -1,6 +1,7 @@
|
|||||||
from constants import ROWS, COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, GRID_CELL_HEIGHT, BORDER_WIDTH, BORDER_RADIUS
|
|
||||||
import random
|
import random
|
||||||
|
|
||||||
|
from common.constants import GRID_CELL_PADDING, GRID_CELL_WIDTH, GRID_CELL_HEIGHT
|
||||||
|
|
||||||
|
|
||||||
class Spawner:
|
class Spawner:
|
||||||
def __init__(self, grid, objs_to_spawn_list: list, width, height, pos_row, pos_column):
|
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])
|
(GRID_CELL_PADDING + GRID_CELL_HEIGHT) * row + GRID_CELL_PADDING + 7])
|
||||||
|
|
||||||
for obj in self.objs_to_spawn_list:
|
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.x = coords[random_tile][0]
|
||||||
obj.rect.y = coords[random_tile][1]
|
obj.rect.y = coords[random_tile][1]
|
||||||
coords.pop(random_tile)
|
coords.pop(random_tile)
|
||||||
obj.update()
|
obj.update()
|
||||||
|
|
2
main.py
2
main.py
@ -1,4 +1,4 @@
|
|||||||
from game import Game
|
from logic.game import Game
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
game = Game()
|
game = Game()
|
||||||
|
0
models/__init__.py
Normal file
0
models/__init__.py
Normal file
@ -1,17 +1,13 @@
|
|||||||
import pygame.image
|
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):
|
class Knight(pygame.sprite.Sprite):
|
||||||
def __init__(self, img):
|
def __init__(self, img):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.images = []
|
self.images = []
|
||||||
self.image = pygame.image.load("resources/textures/knight.png")
|
self.image = pygame.image.load("./resources/textures/knight.png")
|
||||||
self.image = pygame.transform.scale(self.image, (40, 40))
|
self.image = pygame.transform.scale(self.image, (40, 40))
|
||||||
self.images.append(self.image)
|
self.images.append(self.image)
|
||||||
self.rect = self.image.get_rect()
|
self.rect = self.image.get_rect()
|
||||||
|
|
||||||
knights_list = pygame.sprite.Group()
|
knights_list = pygame.sprite.Group()
|
||||||
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
|||||||
import pygame.image
|
import pygame.image
|
||||||
import random
|
|
||||||
|
|
||||||
|
|
||||||
class Monster(pygame.sprite.Sprite):
|
class Monster(pygame.sprite.Sprite):
|
||||||
@ -7,7 +6,7 @@ class Monster(pygame.sprite.Sprite):
|
|||||||
def __init__(self, screen, img):
|
def __init__(self, screen, img):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.images = []
|
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.image = pygame.transform.scale(self.image, (40, 40))
|
||||||
self.images.append(self.image)
|
self.images.append(self.image)
|
||||||
self.rect = self.image.get_rect()
|
self.rect = self.image.get_rect()
|
0
ui/__init__.py
Normal file
0
ui/__init__.py
Normal file
@ -1,8 +1,8 @@
|
|||||||
import pygame
|
import pygame
|
||||||
|
|
||||||
from colors import FONT_DARK, ORANGE, WHITE, RED
|
from common.colors import FONT_DARK, ORANGE, WHITE
|
||||||
from constants import COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, BORDER_WIDTH, BORDER_RADIUS
|
from common.constants import COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, BORDER_WIDTH, BORDER_RADIUS
|
||||||
from helpers import draw_text
|
from common.helpers import draw_text
|
||||||
|
|
||||||
|
|
||||||
class Logs:
|
class Logs:
|
0
ui/screens/__init__.py
Normal file
0
ui/screens/__init__.py
Normal file
6
ui/screens/credits.py
Normal file
6
ui/screens/credits.py
Normal 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
6
ui/screens/options.py
Normal 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
28
ui/screens/screen.py
Normal 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)
|
@ -1,8 +1,8 @@
|
|||||||
import pygame
|
import pygame
|
||||||
|
|
||||||
from colors import FONT_DARK, ORANGE, WHITE, RED
|
from common.colors import FONT_DARK, ORANGE, WHITE, RED
|
||||||
from constants import COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, BORDER_WIDTH, BORDER_RADIUS
|
from common.constants import COLUMNS, GRID_CELL_PADDING, GRID_CELL_WIDTH, BORDER_WIDTH, BORDER_RADIUS
|
||||||
from helpers import draw_text
|
from common.helpers import draw_text
|
||||||
|
|
||||||
|
|
||||||
class Stats:
|
class Stats:
|
||||||
@ -21,8 +21,8 @@ class Stats:
|
|||||||
pygame.draw.rect(screen, ORANGE, pygame.Rect(x, y + 65, 340, 3))
|
pygame.draw.rect(screen, ORANGE, pygame.Rect(x, y + 65, 340, 3))
|
||||||
|
|
||||||
# shields
|
# shields
|
||||||
shield_blue = pygame.image.load('resources/textures/shield_blue.png')
|
shield_blue = pygame.image.load('./resources/textures/shield_blue.png')
|
||||||
shield_red = pygame.image.load('resources/textures/shield_red.png')
|
shield_red = pygame.image.load('./resources/textures/shield_red.png')
|
||||||
screen.blit(shield_blue, (x + 20, y + 80))
|
screen.blit(shield_blue, (x + 20, y + 80))
|
||||||
screen.blit(shield_red, (x + 200, y + 80))
|
screen.blit(shield_red, (x + 200, y + 80))
|
||||||
draw_text('VS', FONT_DARK, screen, x + 150, y + 120, 36)
|
draw_text('VS', FONT_DARK, screen, x + 150, y + 120, 36)
|
Loading…
Reference in New Issue
Block a user