From 243e5f0656884e8f5e87344ad58985b9a0e7fa71 Mon Sep 17 00:00:00 2001 From: s464923 Date: Mon, 10 Jun 2024 09:09:19 +0200 Subject: [PATCH] clean up --- generate_board.py | 49 +++++++++++++++++------------------------------ 1 file changed, 18 insertions(+), 31 deletions(-) diff --git a/generate_board.py b/generate_board.py index 5886cfa29..79f6ac4d9 100644 --- a/generate_board.py +++ b/generate_board.py @@ -3,18 +3,16 @@ import numpy as np import pygame # Wymiary planszy -rows, cols = 10, 10 # Ustalona liczba wierszy i kolumn -size = 64 # Rozmiar pojedynczego pola na planszy - +rows, cols = 10, 10 +size = 64 # Klasa reprezentująca planszę class Board: def __init__(self): - self.board = [] # Tablica reprezentująca planszę - self.vegetables = [] # Tablica przechowująca warzywa na planszy - self.soil_features = None # Cechy gleby (wilgotność, temperatura itp.) - self.vegetable_names = [] # Tablica przechowująca nazwy warzyw na planszy - self.load_images() # Ładowanie obrazów warzyw i innych elementów planszy - self.generate_board() # Generowanie początkowej planszy + self.board = [] + self.vegetables = [] + self.vegetable_names = [] + self.load_images() + self.generate_board() # Metoda do ładowania obrazów def load_images(self): @@ -84,19 +82,9 @@ class Board: self.vegetables[row][col] = vegetable_image self.vegetable_names[row][col] = vegetable_type - self.soil_features = self.generate_soil_features() # Generowanie cech gleby # Metoda do generowania cech gleby - def generate_soil_features(self): - return { - "wilgotnosc_gleby": random.randint(30, 70), - "temperatura_gleby": random.randint(13, 26), - "opady_deszczu": random.randint(0, 11), - "wiek_rosliny": random.randint(1, 9), - "proc_ekspo_na_swiatlo": random.randint(10, 90), - "pora_dnia": random.randint(8, 20), - "pora_roku": random.randint(1, 4) - } + # Metoda oceniająca jakość planszy def evaluate(self): @@ -146,7 +134,6 @@ class Board: new_board.board = [row[:] for row in self.board] new_board.vegetables = [row[:] for row in self.vegetables] new_board.vegetable_names = [row[:] for row in self.vegetable_names] - new_board.soil_features = self.soil_features.copy() return new_board # Sprawdza, czy dane pole zawiera warzywo @@ -218,15 +205,15 @@ def save_board_as_image(board, filename): board.draw_cubes(surface) pygame.image.save(surface, filename) -# Parametry algorytmu -pop_size = 50 # Rozmiar populacji -generations = 300 # Liczba generacji -mutation_rate = 0.03 # Wskaźnik mutacji + +pop_size = 50 +generations = 300 +mutation_rate = 0.03 # Inicjalizacja Pygame pygame.init() -win = pygame.display.set_mode((cols * size, rows * size)) # Ustawienie rozmiaru okna -pygame.display.set_caption('Generated Board') # Ustawienie tytułu okna +win = pygame.display.set_mode((cols * size, rows * size)) +pygame.display.set_caption('Generated Board') # Generowanie najlepszej planszy best_board = genetic_algorithm(pop_size, generations, mutation_rate) @@ -237,21 +224,21 @@ pygame.display.update() # Zapisywanie planszy do pliku np.save('generated_board.npy', best_board.board) -save_board_as_image(best_board, 'generated_board.png') # Zapisz planszę jako obraz PNG +save_board_as_image(best_board, 'generated_board.png') # Utrzymanie okna otwartego do zamknięcia przez użytkownika run = True -needs_redraw = True # Flaga informująca, czy trzeba przerysować planszę +needs_redraw = True while run: for event in pygame.event.get(): if event.type == pygame.QUIT: run = False elif event.type == pygame.MOUSEBUTTONDOWN or event.type == pygame.KEYDOWN: - needs_redraw = True # Przerysowanie planszy w przypadku kliknięcia myszą lub naciśnięcia klawisza + needs_redraw = True if needs_redraw: best_board.draw_cubes(win) pygame.display.flip() - needs_redraw = False # Wyłącz przerysowywanie do momentu kolejnego zdarzenia + needs_redraw = False pygame.quit()