У меня есть две программы ниже, пытающиеся нарисовать мяч на желтом экране. Один, где мой поверхностный объект заполняется вне цикла while, и тот, который заполняется внутри цикла while.
Когда у меня есть .fill()
вне цикла while, мое изображение перерисовывается, когда я пытаюсь его переместить. Поэтому, когда изображение опускается, оно рисует дубликат изображения всего на 10 пикселей дальше по экрану.
Когда у меня есть .fill()
внутри цикла while, мое единственное изображение обновляется и перерисовывается в новое место.
Почему это?
Неконечный код:
import pygame
import sys
length = 1200
width = 800
screen = pygame.display.set_mode((length, width))
screen_rect = screen.get_rect()
ball = pygame.image.load('ball.bmp')
ball_rect = ball.get_rect()
ball_rect.y = ball_rect.width
ball_rect.x = screen_rect.centerx
while True:
screen.fill((255, 255, 103))
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
ball_rect.y += 15
screen.blit(ball, ball_rect)
pygame.display.flip()
Конечный код изображения:
import pygame
import sys
length = 1200
width = 800
screen = pygame.display.set_mode((length, width))
screen_rect = screen.get_rect()
screen.fill((255, 255, 103))
ball = pygame.image.load('ball.bmp')
ball_rect = ball.get_rect()
ball_rect.y = ball_rect.width
ball_rect.x = screen_rect.centerx
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_RIGHT:
ball_rect.y += 15
screen.blit(ball, ball_rect)
pygame.display.flip()