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 class Game: def __init__(self): pygame.init() pygame.display.set_caption(GAME_TITLE) 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() self.tiles = [] for tile_path in TILES: 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") click = False def main_menu(self): while True: self.screen.blit(self.bg, (0, 0)) pygame.draw.rect(self.screen, (255, 255, 255), pygame.Rect(800, 100, 400, 500), 0, 5) draw_text('MAIN MENU', FONT_DARK, self.screen, 850, 150, 30, True) mx, my = pygame.mouse.get_pos() button_1 = pygame.Rect(850, 250, 300, 50) button_2 = pygame.Rect(850, 350, 300, 50) button_3 = pygame.Rect(850, 450, 300, 50) if button_1.collidepoint((mx, my)): if click: self.game() if button_2.collidepoint((mx, my)): if click: self.options() if button_3.collidepoint((mx, my)): if click: self.credits() pygame.draw.rect(self.screen, (0, 191, 255), button_1, 0, 4) draw_text('PLAY', WHITE, self.screen, 870, 255) pygame.draw.rect(self.screen, (0, 191, 255), button_2, 0, 4) draw_text('OPTIONS', WHITE, self.screen, 870, 355) pygame.draw.rect(self.screen, (0, 191, 255), button_3, 0, 4) draw_text('CREDITS', WHITE, self.screen, 870, 455) click = False for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: pygame.quit() sys.exit() if event.type == pygame.MOUSEBUTTONDOWN: if event.button == 1: click = True 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() while running: self.screen.blit(self.bg, (0, 0)) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: running = False grid.draw(self.screen) stats.draw(self.screen) logs.draw(self.screen) knight1 = Knight(400, 200, "/resources/textures/knight.png") knights_list = pygame.sprite.Group() knights_list.add(knight1) knights_list.draw(self.screen) pygame.display.update() self.clock.tick(FPS_COUNT)