Aggiungi supporto per SDL e sostituisci il sistema grafico basato su Tkinter
This commit is contained in:
@@ -1,21 +1,19 @@
|
||||
import json
|
||||
import tkinter as tk
|
||||
import random
|
||||
from units import rat
|
||||
import uuid
|
||||
import subprocess
|
||||
from engine import maze, graphics
|
||||
from engine import maze, sdl2 as engine
|
||||
|
||||
class MiceMaze:
|
||||
def __init__(self, maze_file):
|
||||
self.map = maze.Map(maze_file)
|
||||
self.audio = True
|
||||
self.cell_size = 60
|
||||
self.engine = graphics.GameWindow(self.map.width, self.map.height, self.cell_size)
|
||||
self.engine = engine.GameWindow(self.map.width, self.map.height, self.cell_size, "Mice!", key_callback=self.key_pressed)
|
||||
self.graphics_load()
|
||||
self.engine.bind("<KeyPress>", self.key_pressed)
|
||||
self.units = {}
|
||||
self.new_rat()
|
||||
for _ in range(5):
|
||||
self.new_rat()
|
||||
|
||||
def new_rat(self, position=None):
|
||||
if position is None:
|
||||
@@ -34,11 +32,11 @@ class MiceMaze:
|
||||
return random.choice(self._valid_positions)
|
||||
|
||||
def draw_maze(self):
|
||||
for y in range(self.map.height):
|
||||
for x in range(self.map.width):
|
||||
variant = random.randint(0, 3)
|
||||
tile = self.grasses[variant] if self.map.matrix[y][x] else self.tunnel
|
||||
self.engine.draw_image(x*self.cell_size, y*self.cell_size, tile, tag="maze", anchor="nw")
|
||||
for y, row in enumerate(self.map.matrix):
|
||||
for x, cell in enumerate(row):
|
||||
variant = x*y % 4
|
||||
tile = self.grasses[variant] if cell else self.tunnel
|
||||
self.engine.draw_image(x * self.cell_size, y * self.cell_size, tile, tag="maze")
|
||||
|
||||
def update_maze(self):
|
||||
self.engine.delete_tag("unit")
|
||||
@@ -46,13 +44,13 @@ class MiceMaze:
|
||||
unit.move()
|
||||
unit.collisions()
|
||||
unit.draw()
|
||||
self.engine.update_status(f"Units: {len(self.units)}")
|
||||
self.engine.update_status(f"Mice: {len(self.units)}")
|
||||
self.engine.new_cycle(50, self.update_maze)
|
||||
|
||||
|
||||
def run(self):
|
||||
self.draw_maze()
|
||||
self.update_maze()
|
||||
self.engine.mainloop()
|
||||
self.engine.mainloop(update=self.update_maze, bg_update=self.draw_maze)
|
||||
|
||||
def key_pressed(self, event):
|
||||
if event.keysym == "q":
|
||||
|
||||
Reference in New Issue
Block a user