сделал генерацию поля, типа разные уровни, а так же сделал вывод текста, что же тут сделалось

This commit is contained in:
2023-01-19 16:52:13 +07:00
parent 37b21b4a8c
commit af27d3393f
7 changed files with 99 additions and 40 deletions
+29 -22
View File
@@ -1,10 +1,13 @@
import pygame as pg
from math import pi
from modules import Book, GameOver
from modules import Book, GameOver, Mathematics
from modules.RewardWindow import RewardWindow
# тут писал код не я, поэтому я отказываюсь это комментировать
class Swamp:
def __init__(self):
self.cell_info = None
self.event = None
self.left_book = None
self.down_book = None
self.right_book = None
@@ -13,15 +16,18 @@ class Swamp:
self.left_area = None
self.y = None
self.x = None
self.test = False
self.width = 13
self.height = 8
self.board = [[0] * 13 for _ in range(8)] # Матрица
self.board = Mathematics.field_generation() # Матрица
self.cell_size = 30
self.time_to_close = 0
self.book_use = False # Если self.book_use является True, то активируется класс Book
self.book = Book.Book()
self.frogs = 3 # кол-во лягушек
self.game_over = GameOver.GameOver()
self.reward_window = RewardWindow()
def render(self, screen): # Рисование поля, книги и болота
myimage = pg.image.load("styles/background.jpg")
@@ -40,22 +46,27 @@ class Swamp:
for col in range(self.height):
self.x = self.left_area + row * self.cell_size
self.y = self.top_area + col * self.cell_size
if self.board[col][row] == 0:
pg.draw.rect(screen, (100, 100, 100),
(self.x, self.y, self.cell_size, self.cell_size), 1)
elif self.board[col][row] == 1:
pg.draw.rect(screen, (252, 232, 131), (self.x, self.y, self.cell_size, self.cell_size))
pg.draw.rect(screen, (100, 100, 100),
(self.x, self.y, self.cell_size, self.cell_size), 1)
if self.book_use is True: # При нажатии на книгу рисуется небольшой экран с информацией
from modules.Mathematics import recalculation_events, get_random_event
event = get_random_event()
print(event)
recalculation_events(event["well"])
self.book.info(screen, event)
if not self.test:
self.event = get_random_event()
self.test = True
recalculation_events(self.event["well"])
self.book.info(screen, self.event)
if not self.book_use:
self.test = False
if self.frogs == 0: # Если все лягушки вымрут, то открывается окно с Game over
self.game_over.end(screen)
if self.time_to_close != 0:
self.time_to_close -= 1
self.reward_window.open_window(self.cell_info, screen)
def set_view(self, left, top, cell_size):
self.left_area = left
self.top_area = top
@@ -67,13 +78,15 @@ class Swamp:
self.down_book = down
self.left_book = left
def get_cell(self, mouse_pos):
def get_cell(self, mouse_pos, screen):
board_width = self.width * self.cell_size
board_height = self.height * self.cell_size
if self.left_area < mouse_pos[0] < self.left_area + board_width:
if self.top_area < mouse_pos[1] < self.top_area + board_height:
cell_coords = (mouse_pos[0] - self.top_area) // self.cell_size + 1, \
(mouse_pos[1] - self.left_area) // self.cell_size - 1
self.cell_info = self.board[cell_coords[1]][cell_coords[0]]
self.time_to_close = 100
return cell_coords
elif self.left_book < mouse_pos[0] < self.right_book:
if self.top_book < mouse_pos[1] < self.down_book and self.book_use is False:
@@ -83,14 +96,8 @@ class Swamp:
return None
def on_click(self, mouse_pos): # Действия после клика на клетчатое поле
if mouse_pos is None:
self.board = [[0] * 13 for _ in range(8)]
elif self.board[mouse_pos[1]][mouse_pos[0]] == 0:
self.board = [[0] * 13 for _ in range(8)]
self.board[mouse_pos[1]][mouse_pos[0]] = 1
elif self.board[mouse_pos[1]][mouse_pos[0]] == 1:
self.board[mouse_pos[1]][mouse_pos[0]] = 0
pass
def get_click(self, mouse_pos):
cell = self.get_cell(mouse_pos)
def get_click(self, mouse_pos, screen):
cell = self.get_cell(mouse_pos, screen)
self.on_click(cell)