Задать вопрос
Ответы пользователя по тегу pygame
  • Почему не обрабатываются нажатия кнопок в pygame?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    splliii, у вас два цикла обработки событий: for event in pg.event.get():, из-за этого не обрабатываются корректно нажатия на кнопки.

    Перепишите логику, используя один цикл.
    Код.
    while running:
        clock.tick(60)
        mouse = pg.mouse.get_pos()
    
        for event in pg.event.get():
            if event.type == pg.QUIT:
                running = False
    
            if game_over:
                if event.type == pg.MOUSEBUTTONDOWN:
                    if WIDTH / 3 <= mouse[0] <= WIDTH / 3 + WIDTH_BUTT0N and HEIGHT / 2.5 <= mouse[1] <= HEIGHT / 2.5 + HEIGHT_BUTTON:
                        game_over = False
            else:
                if event.type == pg.KEYDOWN and generation_happen == 1:
                    if event.key == pg.K_LEFT:
                        board = move_left(board)
                    if event.key == pg.K_UP:
                        board = move_up(board)
                    if event.key == pg.K_DOWN:
                        board = move_down(board)
                    if event.key == pg.K_RIGHT:
                        board = move_right(board)
                    time = 0
                    generation_happen = 0
    
        if not game_over:
            if time is not None:
                time += 1
    
            if is_terminal(board):
                game_over = True
            if time is not None and time >= 10:
                generation_2_or_4(board)
                time = None
                generation_happen = 1
    
            screen.fill(BACK)
    
            for row in range(4):
                for column in range(4):
                    COLOR = colors[board[row][column]]
                    x_play_cell = column * size_of_cell + (column + 1) * margin
                    y_play_cell = row * size_of_cell + (row + 1) * margin
                    pg.draw.rect(screen, COLOR, (x_play_cell, y_play_cell, size_of_cell, size_of_cell))
    
                    if board[row][column] != 0:
                        text = font.render(str(board[row][column]), True, BLACK)
                        screen.blit(text, (35 + x_play_cell, y_play_cell + 25))
        else:
            screen.fill(BACK)
    
            pg.draw.rect(screen, WHITE, [WIDTH / 3, HEIGHT / 2.5, WIDTH_BUTT0N, HEIGHT_BUTTON])
            screen.blit(text, (WIDTH / 3, HEIGHT / 2.5))
    
        pg.display.flip()
    
    pg.quit()

    6781aeb328573116593374.png

    З.Ы. очевидно что с трёхзначными и более числами надо что-то делать, они не влезают в клетку.
    Ответ написан
    Комментировать
  • Счет сразу прибавляется и отнимается когда я подбираю спрайт. Что делать?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    1. Жёстко прописывать width, height, наверное, не лучшая идея. Надо подстраивать под разрешение монитора, там где её запустили. Я, запустив, например, не увидел счётчик про который вы говорите.
    2. Строка 84: pygame. --> g <-- uit()
    3. Переменная счётчик жизней count_lifes должна быть глобальной. Сейчас вы её обнуляете в цикле, каждый тик.
    675e97cac1322119685536.png
    Ответ написан
    1 комментарий
  • Как прервать процесс прослушивания?

    @dim5x
    ЗИ, ИБ. Помогли? Поблагодарите. Отметьте ответом.
    Выгрузить ресурсы: pygame.mixer.music.unload()

    import os
    import pygame
    import time
    
    sound_place = r"C:\Users\ghostiki\Desktop\test.ogg"
    pygame.mixer.init()
    pygame.mixer.music.load(sound_place)
    pygame.mixer.music.play()
    while pygame.mixer.music.get_busy():
        time.sleep(1)
    pygame.mixer.music.unload()
    os.remove(r"C:\Users\ghostiki\Desktop\test.ogg")
    Ответ написан
    Комментировать