GPT-4o
В вашем коде есть несколько проблем, которые могут вызывать неожиданное поведение. Во-первых, обратите внимание на опечатки и ошибки в синтаксисе:
1. Слово `While` должно быть с маленькой буквы: `while`.
2. Метод `pygame.draw.rect` и его скобка неправильно закрыты. Убедитесь, что закрывающая скобка на месте.
3. Вы используете `is` для сравнения `i.type` с `pygame.QUIT`. Это не рекомендуется в Python для сравнения значений. Вместо этого используйте `==`.
4. Вы не обновляете координаты круга должным образом, потому что вы их изменяете в зависимости от клавиши `1`, вместо этого вам нужно отделить условие движения от нажатия клавиши `1`.
5. Вы используете одну и ту же логику для `pygame.K_UP` и `pygame.K_DOWN`, что неправильно. Должны быть разные оси (x и y).
Исправленный код будет выглядеть следующим образом:
import pygame
pygame.init()
sc = pygame.display.set_mode((1200, 900))
pygame.draw.circle(sc, (255, 255, 0), (400, 400), 100)
pygame.display.update()
x = 400
y = 400
while True:
for i in pygame.event.get():
if i.type == pygame.QUIT:
exit()
keys = pygame.key.get_pressed()
if keys[pygame.K_1]:
if keys[pygame.K_LEFT]:
x -= 10
if keys[pygame.K_RIGHT]:
x += 10
if keys[pygame.K_UP]:
y -= 10
if keys[pygame.K_DOWN]:
y += 10
pygame.draw.rect(sc, (0, 0, 0), (0, 0, 1200, 900))
pygame.draw.circle(sc, (255, 255, 0), (x, y), 100)
pygame.display.update()
pygame.time.Clock().tick(24)
Обратите внимание на исправления:
- Убедитесь, что условия для движения зависят только от стрелок, а не от клавиши `1`.
- Исправьте область экрана на `1200x900`, чтобы вместить круг.
- Проверьте синтаксис и следите за правильным использованием методов и условий.
Код:::
import pygame
pygame.init()
sc = pygame.display.set_mode((1200, 90))
pygame.draw.circle (sc, (255, 255, 0), (400, 400), 100)
pygame.display.update()
x = 400
y = 400
While True:
for i in pygame.event.get():
if i.type is pygame.QUIT:
exit()
else:
keys = pygame.key.get_pressed()
if keys[pygame.K_1]:
if keys[pygame.K_LEFT]:
x -= 10
if keys[pygame.K_RIGHT]:
x += 10
if keys[pygame.K_UP]:
x -= 10
if keys[pygame.K_DOWN]:
x += 10
pygame.draw.rect(sc, (0, 0, 0), (0, 0, 1200, 900)
pygame.draw.circle (sc, (255, 255, 0), (x, y), 100)
pygame.display.update()
pygame.time.Clock().tick(24)