pygame.display.update, вызывающий синтаксическую ошибку - PullRequest
0 голосов
/ 15 мая 2019

У меня есть программа на Python, использующая pygame, но когда я ее запускаю, она выдает синтаксическую ошибку в строке pygame.display.update.Я не уверен, что вызывает это.Любая помощь приветствуется!

import pygame, sys
import time
from pygame.locals import *
pygame.init()
area = pygame.display.set_mode((400, 300))
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')
while True:
  for event in pygame.event.get():
    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
  pygame.draw.rect(area, red, (x, y, 100, 100)
  python.display.update()
  area.fill(black)
  clock.tick(fps)

1 Ответ

0 голосов
/ 15 мая 2019

Согласно комментариям, вам не хватает скобок.

Я не уверен, чего пытался достичь 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...