58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
|
import pygame as pygame
|
||
|
from Code import Config
|
||
|
from Code.Config import GeneralConfig, Colors
|
||
|
from Code.GameLogic.Rules import Rules
|
||
|
from Code.UI import Square
|
||
|
from Code.UI.Field import Field
|
||
|
|
||
|
|
||
|
class GameState:
|
||
|
def __init__(self):
|
||
|
self.run = True
|
||
|
self.pause_for_inpuit=False
|
||
|
self.field = Field()
|
||
|
|
||
|
def event_handler(self):
|
||
|
for event in pygame.event.get():
|
||
|
if event.type == pygame.QUIT:
|
||
|
self.run = False
|
||
|
if event.type == pygame.MOUSEBUTTONDOWN:
|
||
|
self._update_field(event)
|
||
|
if event.type == pygame.KEYDOWN:
|
||
|
if event.key == pygame.K_SPACE:
|
||
|
self.pause_for_inpuit=not self.pause_for_inpuit
|
||
|
|
||
|
def _update_field(self, event):
|
||
|
rule = Rules()
|
||
|
|
||
|
for line in self.field.squares:
|
||
|
for square in line:
|
||
|
if square.rect.collidepoint(event.pos):
|
||
|
rule.get_neighborhood(square, field_of_squares=self.field.squares)
|
||
|
square.update(not square.active)
|
||
|
|
||
|
def update(self):
|
||
|
pass
|
||
|
|
||
|
def redraw_field(self, window):
|
||
|
window.fill(Colors.BLACK)
|
||
|
self.field.draw_squares(window)
|
||
|
|
||
|
|
||
|
def run_game():
|
||
|
pygame.init()
|
||
|
pygame.display.set_caption(GeneralConfig.window_caption)
|
||
|
window = pygame.display.set_mode((GeneralConfig.width, GeneralConfig.height))
|
||
|
clock = pygame.time.Clock()
|
||
|
game_state = GameState()
|
||
|
while game_state.run:
|
||
|
clock.tick(GeneralConfig.fps)
|
||
|
game_state.event_handler()
|
||
|
if game_state.pause_for_inpuit:
|
||
|
game_state.update()
|
||
|
game_state.redraw_field(window)
|
||
|
pygame.display.update()
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
run_game()
|