как мне замедлить, когда он идет от 10 лет до 510 лет

как мне замедлить это? прямо сейчас он мгновенно идет вниз/влево/вверх/вправо. Я знаю, что это связано с модулем времени, но я понятия не имею, как его реализовать. В основном я хочу ЗАМЕДЛИТЬ процесс с 10 лет до 490 лет. Не добавлять задержку, а замедлить процесс, например, заставить его идти в замедленном темпе. Я даже пробовал часы pygame со 120 кадрами в секунду, но это не сработало.

import time
import pygame
from pygame.locals import *

clock = pygame.time.Clock()
fps = 120

pygame.init()
surface = pygame.display.set_mode((600, 600))
background = pygame.image.load('back.png')
surface.blit(background, (0, 0))
block = pygame.image.load('block.png').convert()
block_y = 0
block_x = 0
surface.blit(block, (block_x, block_y))

def draw():
    surface.blit(background, (0, 0))
    surface.blit(block, (block_x, block_y))
    pygame.display.flip()

pygame.display.flip()
running = True
while running:
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                running = False
            if event.key == K_UP:
                block_y -= 10
                draw()
            if event.key == K_DOWN:
                block_y += 10
                draw()
            if event.key == K_LEFT:
                block_x -= 10
                draw()
            if event.key == K_RIGHT:
                block_x += 10
                draw()
        elif event.type == QUIT:
            running = False
        elif event.type == KEYUP:
            clock.tick(fps)
            if event.key == K_UP:
                block_y -= 10
                draw()
            if event.key == K_DOWN:
                block_y += 490
                draw()
            if event.key == K_LEFT:
                block_x -= 100
                draw()
            if event.key == K_RIGHT:
                block_x += 510
                draw()
    ```

person CommitmentIssues    schedule 01.07.2021    source источник
comment
Позиция [change] составляет 10 пикселей на кадр, а не 10 пикселей в секунду. [Рассмотрите возможность использования clock.tick(fps) здесь, stackoverflow.com/questions/10942011/.   -  person FaranAiki    schedule 02.07.2021
comment
Отвечает ли это на ваш вопрос? Скорость объекта в pygame?   -  person FaranAiki    schedule 02.07.2021


Ответы (1)


Возможно, это не очень хорошее решение, так как оно не зависит от частоты кадров (см. комментарий FaranAiki), но вот вам (измените speed на изменение скорости. Вы также можете уменьшить частоту кадров):

import time
import pygame
from pygame.locals import *

clock = pygame.time.Clock()
fps = 120
speed=1
pygame.init()
surface = pygame.display.set_mode((600, 600))
background = pygame.image.load('back.png')
surface.blit(background, (0, 0))
block = pygame.image.load('block.png').convert()
block_y = 0
block_x = 0
surface.blit(block, (block_x, block_y))

def draw():
    surface.blit(background, (0, 0))
    surface.blit(block, (block_x, block_y))
    pygame.display.flip()

pygame.display.flip()
running = True
while running:
    for event in pygame.event.get():
        if event.type == KEYDOWN:
            if event.key == K_ESCAPE:
                running = False
            if event.key == K_UP:
                block_y -= speed
                draw()
            if event.key == K_DOWN:
                block_y += speed
                draw()
            if event.key == K_LEFT:
                block_x -= speed
                draw()
            if event.key == K_RIGHT:
                block_x += speed
                draw()
        elif event.type == QUIT:
            running = False
        elif event.type == KEYUP:
            clock.tick(fps)
            if event.key == K_UP:
                block_y -= 10
                draw()
            if event.key == K_DOWN:
                block_y += 490
                draw()
            if event.key == K_LEFT:
                block_x -= 100
                draw()
            if event.key == K_RIGHT:
                block_x += 510
                draw()
person Ezra    schedule 02.07.2021