Browse Source

Aggiungi funzionalità di caricamento e salvataggio del campo di battaglia

tk
Matteo Benedetto 2 years ago
parent
commit
8381f8227d
  1. 31
      Effects/.gitignore
  2. 31
      Units/.gitignore
  3. 1
      booh.json
  4. 19
      main.py
  5. 2
      maze.json
  6. 8
      maze.py
  7. 1
      moh.json
  8. 1
      patan.json

31
Effects/.gitignore vendored

@ -0,0 +1,31 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
dist/
build/
*.egg-info/
# Virtual environments
venv/
env/
.env/
# IDE specific files
.idea/
.vscode/
# Compiled Python files
*.pyc
# Logs
*.log
# OS generated files
.DS_Store
Thumbs.db

31
Units/.gitignore vendored

@ -0,0 +1,31 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
dist/
build/
*.egg-info/
# Virtual environments
venv/
env/
.env/
# IDE specific files
.idea/
.vscode/
# Compiled Python files
*.pyc
# Logs
*.log
# OS generated files
.DS_Store
Thumbs.db

1
booh.json

File diff suppressed because one or more lines are too long

19
main.py

@ -16,8 +16,25 @@ import subprocess
import threading
import asyncio
import sys
from tkinter import filedialog
class IsometricGame:
def load_battlefield(self):
file_path = filedialog.askopenfilename()
if file_path:
with open(file_path, 'r') as file:
data = json.load(file)
width = len(data[0])
height = len(data)
self.battlefield = [[Cell(walkable=not data[y][x], tile=self.tiles["landscapeTiles_067"] if not data[y][x] else self.tiles["landscapeTiles_066"]) for x in range(width)] for y in range(height)]
self.width = width
self.height = height
self.draw_battlefield()
def save_battlefield(self):
filename = filedialog.asksaveasfilename(defaultextension=".json")
with open(filename, 'w') as json_file:
json.dump([[not cell.walkable for cell in row] for row in self.battlefield], json_file)
def __init__(self, width, height, data):
self.width = width
self.height = height
@ -57,6 +74,8 @@ class IsometricGame:
self.canvas.bind('<Motion>', self.calculate_coordinates)
menubar = tk.Menu(self.window, tearoff=0)
menubar.add_command(label="Carica campo di battaglia", command=self.load_battlefield)
menubar.add_command(label="Salva campo di battaglia", command=self.save_battlefield)
menubar.add_command(label="Chiudi", command=self.on_close)
self.window.config(menu=menubar)

2
maze.json

@ -1 +1 @@
[[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], [true, false, false, false, false, false, true, false, false, false, false, false, true, false, false, false, false, false, false, false, true], [true, true, true, true, true, false, true, true, true, false, true, false, true, true, true, true, true, false, true, true, true], [true, false, false, false, false, false, false, false, false, false, true, false, true, false, false, false, true, false, false, false, true], [true, false, false, false, true, true, true, true, false, true, true, false, true, false, true, false, true, true, true, false, true], [true, false, true, false, false, false, false, false, true, false, false, false, true, false, false, false, false, false, true, false, true], [true, false, true, true, true, true, true, false, true, false, true, true, true, false, true, true, true, false, true, false, true], [true, false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, false, false, true, false, true], [true, false, true, false, true, true, true, false, true, true, false, false, true, false, true, false, true, true, true, false, true], [true, false, false, false, true, false, false, false, false, false, true, false, false, false, true, false, true, false, false, false, true], [true, true, false, false, true, false, true, true, true, false, true, false, false, false, true, false, true, false, true, true, true], [true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true], [true, false, false, true, true, true, true, false, true, true, true, false, true, false, true, true, true, false, true, false, true], [true, false, true, false, false, false, false, false, true, false, false, false, true, false, false, false, true, false, true, false, true], [true, true, false, false, true, true, true, true, true, false, true, false, true, true, true, false, true, false, true, false, true], [true, false, false, false, true, false, false, false, false, false, true, false, true, false, false, false, true, false, true, false, true], [true, false, false, true, true, false, true, false, true, false, true, false, false, false, true, true, false, true, true, false, true], [true, false, true, false, false, false, true, false, false, false, true, false, true, false, false, false, true, false, false, false, true], [true, false, true, false, true, false, true, false, true, true, true, true, true, true, true, false, true, false, true, true, true], [true, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, true], [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]]
[[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], [true, false, false, false, false, false, true, false, false, false, false, false, true, false, false, false, false, false, false, false, true], [true, false, false, true, true, false, true, true, true, false, true, false, true, true, true, true, true, false, true, true, true], [true, false, false, false, false, false, false, false, false, false, true, false, true, false, false, false, true, false, false, false, true], [true, false, false, false, true, true, true, true, false, true, true, false, true, false, true, false, true, true, true, false, true], [true, false, true, false, false, false, false, false, true, false, false, false, true, false, false, false, false, false, true, false, true], [true, false, true, true, true, true, true, false, true, false, true, true, true, false, true, true, true, false, true, false, true], [true, false, false, false, false, false, false, false, false, false, false, false, true, false, true, false, false, false, true, false, true], [true, false, true, false, true, true, true, false, true, true, false, false, true, false, true, false, true, true, true, false, true], [true, false, false, false, true, false, false, false, false, false, true, false, false, false, true, false, true, false, false, false, true], [true, true, false, false, true, false, true, true, true, false, true, false, false, false, true, false, true, false, true, true, true], [true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true, false, false, false, true], [true, false, false, true, true, true, true, false, true, true, true, false, true, false, true, true, true, false, true, false, true], [true, false, true, false, false, false, false, false, true, false, false, false, true, false, false, false, true, false, true, false, true], [true, true, false, false, true, true, true, true, true, false, true, false, true, true, true, false, true, false, true, false, true], [true, false, false, false, true, false, false, false, false, false, true, false, true, false, false, false, true, false, true, false, true], [true, false, false, true, true, false, true, false, true, false, true, false, false, false, true, true, false, true, true, false, true], [true, false, true, false, false, false, true, false, false, false, true, false, true, false, false, false, true, false, false, false, true], [true, false, true, false, true, false, true, false, true, true, true, true, true, true, true, false, true, false, true, true, true], [true, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, true], [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]]

8
maze.py

@ -1,4 +1,5 @@
# DFS: Depth First Search
import tkinter.filedialog as fd
import random
import tkinter as tk
import json
@ -74,7 +75,8 @@ class MazeGenerator:
y = random.randint(1, self.height - 2)
self.maze[x][y] = False
self.draw_maze()
with open('maze.json', 'w') as json_file:
filename = fd.asksaveasfilename(defaultextension=".json")
with open(filename, 'w') as json_file:
json.dump(self.maze, json_file)
@ -99,5 +101,7 @@ class MazeGenerator:
self.window.mainloop()
# Crea e avvia il generatore di labirinti
generator = MazeGenerator(20, 20)
width = input("Inserisci la larghezza del labirinto: ")
height = input("Inserisci l'altezza del labirinto: ")
generator = MazeGenerator(int(width), int(height))
generator.run()

1
moh.json

File diff suppressed because one or more lines are too long

1
patan.json

@ -0,0 +1 @@
[[true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], [true, false, false, false, false, false, true, false, true, false, false, false, false, false, false, false, false, false, true, false, true], [true, true, true, false, true, false, true, false, true, false, false, true, true, true, true, false, true, false, true, false, true], [true, false, false, false, true, false, true, false, false, false, true, false, false, false, false, false, false, false, false, false, true], [true, false, true, false, true, false, true, true, true, false, true, false, true, true, true, true, true, true, true, false, true], [true, false, true, false, true, false, true, false, false, false, true, false, false, false, true, false, false, false, false, false, true], [true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, true, true, false, true], [true, false, false, false, true, false, false, false, true, false, true, false, true, false, false, false, false, false, false, false, true], [true, true, true, false, true, true, true, true, true, false, true, false, true, false, true, false, true, true, true, true, true], [true, false, false, false, false, false, false, false, true, false, true, false, true, false, true, false, false, false, false, false, true], [true, false, true, false, true, true, true, true, true, false, true, true, true, false, true, true, true, true, true, true, true], [true, false, true, false, true, false, false, false, true, false, true, false, false, false, true, false, false, false, false, false, true], [true, false, true, true, true, false, true, false, true, false, true, false, false, true, true, false, true, true, true, false, true], [true, false, true, false, false, false, true, false, true, false, true, false, false, false, true, false, false, false, true, false, true], [true, false, true, false, true, true, false, false, true, false, true, true, true, false, true, true, true, false, true, false, true], [true, false, true, false, true, false, true, false, true, false, false, false, true, false, false, false, false, false, true, false, true], [true, false, true, false, true, false, true, false, true, true, true, false, true, true, true, true, true, true, false, false, true], [true, false, true, false, false, false, true, false, false, false, true, false, false, false, false, false, false, false, false, false, true], [true, false, true, true, true, false, true, false, true, false, false, true, false, true, true, false, true, false, true, false, true], [true, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, true, false, true], [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true]]
Loading…
Cancel
Save