Pygame freezes after certain time - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: Game Development (https://python-forum.io/forum-11.html) +--- Thread: Pygame freezes after certain time (/thread-33536.html) |
Pygame freezes after certain time - GJG - May-03-2021 Hi! Trying to make a previz window for testing a puzzle game while in development, but it keeps freezing after certain time, I am very new to pygame, so not sure what's wrong! Thanks import pygame from random import randint font_color = (0, 255, 200) bkg_color = (0, 0, 0) ltr_range = 10 gap = 20 cube_size = 800 speed = 1 matrix = [[chr(65+x+y) for y in range(ltr_range)] for x in range(ltr_range)] def draw_matrix(): for x in range(ltr_range): for y in range(ltr_range): win.blit(font.render(matrix[x][y], True, font_color), (gap + (cube_size // ltr_range * y), gap + (cube_size // ltr_range * x))) pygame.display.update() def matrix_row_turn_right(line=0, steps=0): empty = matrix[line][-steps:] for x in range(len(matrix[line]) - steps - 1, -1, -1): matrix[line][x + steps] = matrix[line][x] for y in range(len(empty)): matrix[line][y] = empty[y] def matrix_col_turn_up(line=0, steps=0): empty = [matrix[x][line] for x in range(steps)] for y in range(len(matrix) - steps): matrix[y][line] = matrix[y + steps][line] for z in range(len(matrix) - steps, len(matrix)): matrix[z][line] = empty[abs(len(matrix) - steps - z)] def anim_move_right(line): for x in range(1, cube_size // ltr_range): pygame.draw.rect(win, bkg_color, (0, (cube_size // ltr_range * line), cube_size, cube_size // ltr_range)) for y in range(ltr_range): win.blit(font.render(matrix[line][y], True, font_color), ((gap + (cube_size // ltr_range * y) + x), gap + (cube_size // ltr_range * line))) win.blit(font.render(matrix[line][-1], True, font_color), ((0 - (cube_size // ltr_range) + gap + x), gap + (cube_size // ltr_range * line))) pygame.time.delay(speed) pygame.display.update() matrix_row_turn_right(line, 1) draw_matrix() def anim_move_up(line): draw_matrix() for x in range(1, cube_size // ltr_range): pygame.draw.rect(win, bkg_color, ((gap + (cube_size // ltr_range) * line), 0, cube_size // ltr_range, cube_size)) for y in range(ltr_range): win.blit(font.render(matrix[y][line], True, font_color), ( gap + cube_size // ltr_range * line, (gap + (cube_size // ltr_range * y) - x))) win.blit(font.render(matrix[0][line], True, font_color), (gap + (cube_size // ltr_range * line), (cube_size + gap - x))) pygame.time.delay(speed) pygame.display.update() matrix_col_turn_up(line, 1) draw_matrix() pygame.init() win = pygame.display.set_mode((cube_size, cube_size)) pygame.display.set_caption("Word Puzzle preViz") font = pygame.font.SysFont('Ariel', cube_size // ltr_range) run = True while run: draw_matrix() pygame.time.delay(1000) for i in range(100): if i % 2 == 0: anim_move_right(randint(0, ltr_range-1)) else: anim_move_up(randint(0, ltr_range-1)) run = False pygame.quit():) RE: Pygame freezes after certain time - joe_momma - May-04-2021 what's the objective of the game? I ran your script 3 times without any problems. I'm using linux. I put in a print statement counting the loops thinking if it was odd it would be a up animation and even left to right, but it didn't hang or crash. RE: Pygame freezes after certain time - GJG - May-06-2021 For some reason it freezes on Windows, I'll check on linux later, but it worked once I used a while loop instead of iterator and added event check. It's a simple letter puzzle game for assembling words, kind of like 2D rubik's cube. count = 0 while count < 100: for event in pygame.event.get(): if event.type == pygame.QUIT: run = False if count % 2 == 0: anim_move_right(randint(0, ltr_range - 1)) else: anim_move_up(randint(0, ltr_range - 1)) count += 1 pygame.quit()Thanks for checking! |