Заикание Pygame при перемещении объектаPython

Программы на Python
Ответить
Anonymous
 Заикание Pygame при перемещении объекта

Сообщение Anonymous »

Я создал простую игру, в которой вы перемещаете прямоугольник влево и вправо с помощью клавиш со стрелками. Проблема в том, что прямоугольник иногда заикается при движении. Заикание не прекращается и происходит постоянно, пока прямоугольник движется. Каков правильный способ решения этой проблемы? Вот код:
import pygame

class Player:
def __init__(self):
self.sprite = pygame.Surface((89, 157))
self.position = [100, 500]
self.speed = 0
self.max_positive_speed = 100
self.max_negative_speed = -100

def update(self, direction=None):
if direction == 'left':
if (self.speed - 10) < self.max_negative_speed:
self.speed = self.max_negative_speed
else:
self.speed -= 10

elif direction == 'right':
if (self.speed + 10) > self.max_positive_speed:
self.speed = self.max_positive_speed
else:
self.speed += 10

elif self.speed > 0:
self.speed -= 10

elif self.speed < 0:
self.speed += 10

else:
return

self.position[0] += int(0.06 * self.speed)

def main():
pygame.init()
screen = pygame.display.set_mode((1280, 720))
clock = pygame.time.Clock()
running = True
player = Player()
background = pygame.Surface((1280, 720))
background.fill('white')

while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False

keys = pygame.key.get_pressed()

if keys[pygame.K_LEFT] and keys[pygame.K_RIGHT]:
player.update()
elif keys[pygame.K_LEFT]:
player.update('left')
elif keys[pygame.K_RIGHT]:
player.update('right')
else:
player.update()

screen.blit(background)
screen.blit(player.sprite, dest=player.position)

pygame.display.flip()

clock.tick(60)

if __name__ == '__main__':
main()
pygame.quit()


Подробнее здесь: https://stackoverflow.com/questions/798 ... -an-object
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»