From fca7d11b433cc18c205d0c5679e2d165e1a4337c Mon Sep 17 00:00:00 2001 From: dmitrium12 Date: Thu, 8 Dec 2022 22:00:31 +0700 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B3=D0=B0=D1=82=D0=BE=D0=B2=D0=BA=D1=83,=20=D0=BE?= =?UTF-8?q?=D1=82=D0=BA=D1=83=D0=B4=D0=B0=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0?= =?UTF-8?q?=D0=B5=D0=BC=20=D1=81=D1=82=D0=B0=D1=80=D1=82=20=D0=BC=D0=B8?= =?UTF-8?q?=D0=BA=D1=80=D0=BE-=D0=B8=D0=B3=D1=80=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 10 ++++++++++ modules/Board.py | 43 +++++++++++++++++++++++++++++++++++++++++++ modules/DB.py | 18 ++++++++++++++++++ modules/Game.py | 31 +++++++++++++++++++++++++++++++ 4 files changed, 102 insertions(+) create mode 100644 main.py create mode 100644 modules/Board.py create mode 100644 modules/DB.py create mode 100644 modules/Game.py diff --git a/main.py b/main.py new file mode 100644 index 0000000..d0bf40f --- /dev/null +++ b/main.py @@ -0,0 +1,10 @@ +from modules.Game import Game + + +def main(): + game = Game() + game.start() + + +if __name__ == '__main__': + main() diff --git a/modules/Board.py b/modules/Board.py new file mode 100644 index 0000000..8b8b10c --- /dev/null +++ b/modules/Board.py @@ -0,0 +1,43 @@ +import pygame + + +class Board: + def __init__(self, width, height, screen): + self.width = width + self.height = height + self.board = [[1] * width for _ in range(height)] + self.left = 10 + self.top = 10 + self.cell_size = 30 + self.screen = screen + + def render(self): + for y in range(self.height): + for x in range(self.width): + pygame.draw.rect(self.screen, pygame.Color(255, 255, 255), ( + x * self.cell_size + self.left, y * self.cell_size + self.top, self.cell_size, self.cell_size), + self.board[y][x]) + + def set_view(self, left, top, cell_size): + self.left = left + self.top = top + self.cell_size = cell_size + + def on_click(self, cell_coords): + for x in range(self.height): + self.board[x][cell_coords[1]] = (self.board[x][cell_coords[1]] + 1) % 2 + for y in range(self.width): + self.board[cell_coords[0]][y] = (self.board[cell_coords[0]][y] + 1) % 2 + self.board[cell_coords[0]][cell_coords[1]] = (self.board[cell_coords[0]][cell_coords[1]] + 1) % 2 + + def get_cell(self, mouse_pos): + if self.left <= mouse_pos[1] < self.left + self.height * self.cell_size and \ + self.top <= mouse_pos[0] < self.top + self.width * self.cell_size: + return int((mouse_pos[1] - self.left) / self.cell_size), int((mouse_pos[0] - self.top) / self.cell_size) + else: + return None + + def get_click(self, mouse_pos): + cell = self.get_cell(mouse_pos) + if cell is not None: + self.on_click(cell) diff --git a/modules/DB.py b/modules/DB.py new file mode 100644 index 0000000..85e32a2 --- /dev/null +++ b/modules/DB.py @@ -0,0 +1,18 @@ +from pymongo import MongoClient + + +class UseDB: + def __init__(self, collection_name): + self.series_collection = None + self.client = MongoClient('localhost', 27017) + self.db = self.client['stepik'] + self.series_collection = self.db[collection_name] + + def find_document(self, elements): + return [x for x in self.series_collection.find(elements)] + + def insert_document(self, data): + return self.series_collection.insert_one(data).inserted_id + + def update_document(self, query_elements, new_values): + self.series_collection.update_one(query_elements, {'$set': new_values}) diff --git a/modules/Game.py b/modules/Game.py new file mode 100644 index 0000000..df5051f --- /dev/null +++ b/modules/Game.py @@ -0,0 +1,31 @@ +import pygame +from modules.Board import Board + + +class Game: + def __init__(self): + pygame.init() + size = 500, 500 + self.screen = pygame.display.set_mode(size) + pygame.display.set_caption('Чёрное в белое и наоборот') + self.board = Board(5, 7, self.screen) + self.board.set_view(100, 100, 50) + self.running = True + + def start(self): + while self.running: + self.event() + self.render() + pygame.quit() + + def event(self): + for event in pygame.event.get(): + if event.type == pygame.QUIT: + self.running = False + if event.type == pygame.MOUSEBUTTONDOWN: + self.board.get_click(event.pos) + + def render(self): + self.screen.fill((0, 0, 0)) + self.board.render() + pygame.display.flip()