import pygame from random import choice from domino import Domino from time import time import settings as s from screens import Hand_screen, Game_screen, Button from pygame.locals import ( K_ESCAPE, KEYDOWN, QUIT, MOUSEBUTTONDOWN, MOUSEBUTTONUP ) pygame.init() pygame.font.init() my_font = pygame.font.SysFont('Calibri (Body)', 60) # инициализируем настроки экрана и домино SCREEN_WIDTH = s.SCREEN_WIDTH SCREEN_HEIGHT = s.SCREEN_HEIGHT DOMINO_W = s.DOMINO_W DOMINO_H = s.DOMINO_H # screen = pygame.display.set_mode((0,0),pygame.FULLSCREEN) screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) # создаем группы руки и игры dominos = pygame.sprite.Group() group_hand_screen = pygame.sprite.Group() group_game_screen = pygame.sprite.Group() game_screen = Game_screen() group_game_screen.add(game_screen) hand_screen = Hand_screen() group_hand_screen.add(hand_screen) get_button = Button() group_hand_screen.add(get_button) x = 100 y = SCREEN_HEIGHT - DOMINO_H / 2 - 25 # стартовая рука for i in range(6): values = choice(s.DOMINOS) domino = Domino(x, y, values, i) s.DOMINOS.remove(values) x += DOMINO_W + 10 dominos.add(domino) group_hand_screen.add(domino) pygame.display.flip() run = True mouse_down = False mouse_old_pos = [pygame.mouse.get_pos()[0], pygame.mouse.get_pos()[1]] r_click_cd = 0.2 r_click_time = 0 win = False while run: for event in pygame.event.get(): # Did the user hit a key? if event.type == KEYDOWN: # Was it the Escape key? If so, stop the loop. if event.key == K_ESCAPE: run = False elif event.type == MOUSEBUTTONDOWN: if event.button == 1: mouse_down = "left" elif event.button == 3: mouse_down = "right" elif event.type == MOUSEBUTTONUP: mouse_down = False # Did the user click the window close button? If so, stop the loop. elif event.type == QUIT: run = False if mouse_down: move = False # получаем координаты мыши, и её parvietojums mouse_new_pos = pygame.mouse.get_pos()[0], pygame.mouse.get_pos()[1] mouse_move = [mouse_old_pos[0] - mouse_new_pos[0], mouse_old_pos[1] - mouse_new_pos[1]] for domino in group_hand_screen: if domino.type == "domino": # если мы навели на домино: меняем её цвет domino.update_color(pygame.mouse.get_pos()[0], pygame.mouse.get_pos()[1]) # передвигаем домино, если кликнули и зажали if mouse_down == "left": move = domino.update_pos(move, mouse_move[0], mouse_move[1], mouse_new_pos[0], mouse_new_pos[1], hand_screen, group_hand_screen, game_screen, dominos) # если правый клик - переворачиваем домино (переворачиваем ее значения) elif mouse_down == "right" and time() - r_click_time >= r_click_cd: r_click_time = domino.update_rotation(mouse_new_pos[0], mouse_new_pos[1], r_click_time) # если мы кликнули на кнопку, добaвляем в руку новые домино if not move and mouse_down == "left": values = False if time() - r_click_time >= r_click_cd and len(dominos) != 0: r_click_time, values, coor = get_button.active_button(mouse_new_pos[0], mouse_new_pos[1], r_click_time, dominos) if values: domino_new = Domino(coor[0], coor[1], values, len(dominos) - 1) dominos.add(domino_new) group_hand_screen.add(domino_new) else: game_screen.update_pos(mouse_move[0], mouse_move[1], mouse_new_pos[0], mouse_new_pos[1]) # если мы кликнули на "стол", передвигаем его else: for domino in group_hand_screen: if domino.type == "domino": domino.update_color(pygame.mouse.get_pos()[0], pygame.mouse.get_pos()[1]) domino.update_type_pos(hand_screen, group_hand_screen, game_screen, dominos) screen.fill((230, 230, 230)) def blit_group(group): """блит группы""" for entity in group: if entity.type == "domino": entity.blit_domino(screen, dominos) elif entity.type == "button": entity.blit_button(screen) elif entity.type == "hand_screen": entity.hand_blit(screen, game_screen.lives) else: screen.blit(entity.surf, entity.rect) # blit_group(group_game_screen) game_screen.blit_g_screen(screen, dominos) blit_group(group_hand_screen) mouse_old_pos = [pygame.mouse.get_pos()[0], pygame.mouse.get_pos()[1]] # print(len(dominos), len(s.DOMINOS)) # если у игрока на руке не осталось фишек, и в колоде тоже, то он побеждает, и программа выходит из while if len(dominos) <= 0 and len(s.DOMINOS) <= 0: win = True break elif game_screen.lives <= 0: break # print(game_screen.lives) pygame.display.flip() # экран победы if win: text = "You Win!" else: text = "Game Over :(" text = my_font.render(text, True, (255, 255, 255)) run = True while run: for event in pygame.event.get(): # Did the user hit a key? if event.type == KEYDOWN: # Was it the Escape key? If so, stop the loop. if event.key == K_ESCAPE: run = False elif event.type == MOUSEBUTTONDOWN: run = False elif event.type == QUIT: run = False surf = pygame.Surface((500, 200)) color = (255, 50, 50) surf.fill(color) rect = surf.get_rect(center=(s.SCREEN_WIDTH / 2, s.SCREEN_HEIGHT / 2)) screen.blit(surf, rect) screen.blit(text, (s.SCREEN_WIDTH / 2 - 100, s.SCREEN_HEIGHT / 2)) pygame.display.flip()