Согласно комментариям, вам не хватает скобок.
Я не уверен, чего пытался достичь python.display.update()
, но я полагаю, что обновления экрана выводятся на экран. Я заменил это на pygame.display.flip()
.
Также есть пара проблем с рисованием - код рисует красный квадрат, но затем заполняет экран черным. Они должны быть переупорядочены.
Также ваш основной цикл обработки событий не завершился корректно (в Linux я не мог закрыть окно с заголовком (x)). И, наконец, вы не параметризовали ширину и высоту окна. Вскоре вам нужно будет рассчитать что-то, что зависит от ширины окна (например, центрирование чего-либо), поэтому лучше начинать с них в параметре, а не с «400» и «300» во всем коде.
import pygame, sys
import time
from pygame.locals import *
pygame.init()
window_width = 400
window_height = 300
area = pygame.display.set_mode((window_width, window_height))
red=(255, 0, 0)
black=(0, 0, 0)
fps = 30
clock=pygame.time.Clock()
x=100
y=100
a=0
b=0
pygame.display.set_caption('Reddy For School')
running = True
while running:
for event in pygame.event.get():
# check for closing the window
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN and event.key == pygame.K_UP:
b=-10
if event.type == pygame.KEYDOWN and event.key == pygame.K_DOWN:
b=10
if event.type == pygame.KEYDOWN and event.key == pygame.K_LEFT:
a=-10
if event.type == pygame.KEYDOWN and event.key == pygame.K_RIGHT:
a=10
if event.type == pygame.KEYUP and event.key == pygame.K_UP:
b=0
if event.type == pygame.KEYUP and event.key == pygame.K_DOWN:
b=0
if event.type == pygame.KEYUP and event.key == pygame.K_LEFT:
a=0
if event.type == pygame.KEYUP and event.key == pygame.K_RIGHT:
a=0
x+=a
y+=b
area.fill(black)
pygame.draw.rect(area, red, (x, y, 100, 100) )
clock.tick(fps)
pygame.display.flip() #quicker process to draw things
pygame.quit()