import pygame
from random import *
def setup(level):
global display_time
display_time = 5 - (level // 3)
display_time = max(display_time, 1)
number_count = (level // 3) + 5
number_count = min(number_count, 20)
shuffle_grid(number_count)
def shuffle_grid(number_count):
rows = 5
columns = 8
cell_size = 95
button_size = 90
screen_left_margin = 60
screen_top_margin = 40
grid = [[0 for col in range(columns)] for row in range(rows)]
number = 1
while number <= number_count:
row_idx = randrange(0, rows)
col_idx = randrange(0, columns)
if grid[row_idx][col_idx] == 0:
grid[row_idx][col_idx] = number
number += 1
center_x = screen_left_margin + (col_idx * cell_size) + (cell_size / 2)
center_y = screen_top_margin + (row_idx * cell_size) + (cell_size / 2)
button = pygame.Rect(0, 0, button_size, button_size)
button.center = (center_x, center_y)
number_buttons.append(button)
print(grid)
def display_start_screen():
pygame.draw.circle(screen, WHITE, start_button.center, 60, 5)
msg = game_font.render(f"{curr_level}", True, WHITE)
msg_rect = msg.get_rect(center=start_button.center)
screen.blit(msg, msg_rect)
def display_game_screen():
global hidden
if not hidden:
elapsed_time = (pygame.time.get_ticks() - start_ticks) / 1000
if elapsed_time > display_time:
hidden = True
for idx, rect in enumerate(number_buttons, start=1):
if hidden:
pygame.draw.rect(screen, WHITE, rect)
else:
cell_text = game_font.render(str(idx), True, WHITE)
text_rect = cell_text.get_rect(center=rect.center)
screen.blit(cell_text, text_rect)
score = 0
def draw_score():
font_01 = pygame.font.SysFont("FixedSsy", 70, True, False)
text_score = font_01.render("Score: " + str(score), True, BLUE)
text_score_rect = text_score.get_rect(center=(screen_width/2 - 160, screen_height/2 - 30))
screen.blit(text_score, text_score_rect)
text_level = font_01.render(f"level: {curr_level}", True, BLUE)
text_level_rect = text_level.get_rect(center=(screen_width/2 - 160, screen_height/2 - 80))
screen.blit(text_level, text_level_rect)
def increase_score(level):
global score, stagescore
if level < 4:
score += 10
else:
score = score + level + 10
def check_buttons(pos):
global start, start_ticks
if start:
check_number_buttons(pos)
elif start_button.collidepoint(pos):
start = True
start_ticks = pygame.time.get_ticks()
def check_number_buttons(pos):
global start, hidden, curr_level
for button in number_buttons:
if button.collidepoint(pos):
if button == number_buttons[0]:
print("Correct")
increase_score(curr_level)
del number_buttons[0]
if not hidden:
hidden = True
else:
game_over()
break
if len(number_buttons) == 0:
start = False
hidden = False
curr_level += 1
setup(curr_level)
def game_over():
global running
running = False
draw_score()
pygame.init()
screen_width = 1200
screen_height = 780
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("Memory Game")
game_font = pygame.font.Font(None, 120)
background = pygame.image.load("game_background.png")
start_background = pygame.image.load("start_background_찐최종본.png")
sub_screen_width = 865
sub_screen_height = 520
sub_screen = pygame.Surface((sub_screen_width, sub_screen_height))
start_button = pygame.Rect(0, 0, 120, 120)
start_button.center = (440, 320)
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GRAY = (50, 50, 50)
BLUE = (130, 140, 240)
number_buttons = []
curr_level = 1
display_time = None
start_ticks = None
start = False
hidden = False
setup(curr_level)
fade_surface = pygame.Surface((screen_width, screen_height))
fade_surface.fill((0, 0, 0))
screen.blit(start_background, (0,0))
pygame.display.update()
pygame.time.wait(2000)
fade_alpha = 0
fade_speed = 5
while fade_alpha < 255:
fade_alpha += fade_speed
fade_surface.set_alpha(fade_alpha)
screen.blit(start_background, (0, 0))
screen.blit(fade_surface, (0, 0))
pygame.display.update()
while fade_alpha > 0:
fade_alpha -= fade_speed
fade_surface.set_alpha(fade_alpha)
screen.blit(background, (0, 0))
screen.blit(fade_surface, (0, 0))
pygame.display.update()
running = True
while running:
click_pos = None
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
elif event.type == pygame.MOUSEBUTTONUP:
click_pos = pygame.mouse.get_pos()
print(click_pos)
screen.blit(background, (0, 0))
screen.blit(sub_screen, (25, 40))
if start:
display_game_screen()
else:
display_start_screen()
if click_pos:
check_buttons(click_pos)
pygame.display.update()
pygame.time.delay(5000)
pygame.quit()