clean up
This commit is contained in:
parent
dd721993cd
commit
243e5f0656
@ -3,18 +3,16 @@ import numpy as np
|
|||||||
import pygame
|
import pygame
|
||||||
|
|
||||||
# Wymiary planszy
|
# Wymiary planszy
|
||||||
rows, cols = 10, 10 # Ustalona liczba wierszy i kolumn
|
rows, cols = 10, 10
|
||||||
size = 64 # Rozmiar pojedynczego pola na planszy
|
size = 64
|
||||||
|
|
||||||
# Klasa reprezentująca planszę
|
# Klasa reprezentująca planszę
|
||||||
class Board:
|
class Board:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.board = [] # Tablica reprezentująca planszę
|
self.board = []
|
||||||
self.vegetables = [] # Tablica przechowująca warzywa na planszy
|
self.vegetables = []
|
||||||
self.soil_features = None # Cechy gleby (wilgotność, temperatura itp.)
|
self.vegetable_names = []
|
||||||
self.vegetable_names = [] # Tablica przechowująca nazwy warzyw na planszy
|
self.load_images()
|
||||||
self.load_images() # Ładowanie obrazów warzyw i innych elementów planszy
|
self.generate_board()
|
||||||
self.generate_board() # Generowanie początkowej planszy
|
|
||||||
|
|
||||||
# Metoda do ładowania obrazów
|
# Metoda do ładowania obrazów
|
||||||
def load_images(self):
|
def load_images(self):
|
||||||
@ -84,19 +82,9 @@ class Board:
|
|||||||
self.vegetables[row][col] = vegetable_image
|
self.vegetables[row][col] = vegetable_image
|
||||||
self.vegetable_names[row][col] = vegetable_type
|
self.vegetable_names[row][col] = vegetable_type
|
||||||
|
|
||||||
self.soil_features = self.generate_soil_features() # Generowanie cech gleby
|
|
||||||
|
|
||||||
# Metoda do generowania 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
|
# Metoda oceniająca jakość planszy
|
||||||
def evaluate(self):
|
def evaluate(self):
|
||||||
@ -146,7 +134,6 @@ class Board:
|
|||||||
new_board.board = [row[:] for row in self.board]
|
new_board.board = [row[:] for row in self.board]
|
||||||
new_board.vegetables = [row[:] for row in self.vegetables]
|
new_board.vegetables = [row[:] for row in self.vegetables]
|
||||||
new_board.vegetable_names = [row[:] for row in self.vegetable_names]
|
new_board.vegetable_names = [row[:] for row in self.vegetable_names]
|
||||||
new_board.soil_features = self.soil_features.copy()
|
|
||||||
return new_board
|
return new_board
|
||||||
|
|
||||||
# Sprawdza, czy dane pole zawiera warzywo
|
# Sprawdza, czy dane pole zawiera warzywo
|
||||||
@ -218,15 +205,15 @@ def save_board_as_image(board, filename):
|
|||||||
board.draw_cubes(surface)
|
board.draw_cubes(surface)
|
||||||
pygame.image.save(surface, filename)
|
pygame.image.save(surface, filename)
|
||||||
|
|
||||||
# Parametry algorytmu
|
|
||||||
pop_size = 50 # Rozmiar populacji
|
pop_size = 50
|
||||||
generations = 300 # Liczba generacji
|
generations = 300
|
||||||
mutation_rate = 0.03 # Wskaźnik mutacji
|
mutation_rate = 0.03
|
||||||
|
|
||||||
# Inicjalizacja Pygame
|
# Inicjalizacja Pygame
|
||||||
pygame.init()
|
pygame.init()
|
||||||
win = pygame.display.set_mode((cols * size, rows * size)) # Ustawienie rozmiaru okna
|
win = pygame.display.set_mode((cols * size, rows * size))
|
||||||
pygame.display.set_caption('Generated Board') # Ustawienie tytułu okna
|
pygame.display.set_caption('Generated Board')
|
||||||
|
|
||||||
# Generowanie najlepszej planszy
|
# Generowanie najlepszej planszy
|
||||||
best_board = genetic_algorithm(pop_size, generations, mutation_rate)
|
best_board = genetic_algorithm(pop_size, generations, mutation_rate)
|
||||||
@ -237,21 +224,21 @@ pygame.display.update()
|
|||||||
|
|
||||||
# Zapisywanie planszy do pliku
|
# Zapisywanie planszy do pliku
|
||||||
np.save('generated_board.npy', best_board.board)
|
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
|
# Utrzymanie okna otwartego do zamknięcia przez użytkownika
|
||||||
run = True
|
run = True
|
||||||
needs_redraw = True # Flaga informująca, czy trzeba przerysować planszę
|
needs_redraw = True
|
||||||
while run:
|
while run:
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT:
|
||||||
run = False
|
run = False
|
||||||
elif event.type == pygame.MOUSEBUTTONDOWN or event.type == pygame.KEYDOWN:
|
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:
|
if needs_redraw:
|
||||||
best_board.draw_cubes(win)
|
best_board.draw_cubes(win)
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
needs_redraw = False # Wyłącz przerysowywanie do momentu kolejnego zdarzenia
|
needs_redraw = False
|
||||||
|
|
||||||
pygame.quit()
|
pygame.quit()
|
||||||
|
Loading…
Reference in New Issue
Block a user