Как мне переместить один особый объект в Pygame - PullRequest
3 голосов
/ 22 апреля 2019

Итак, я пытался переместить только один куб, используя пользовательский ввод, но когда я пытаюсь, я перемещаю оба куба в унисон, а не один, что является моей целью. Как мне переместить один куб (используя пользовательский ввод) вместо обоих одновременно? Спасибо: ^)

import pygame
pygame.init()

pygame.display.set_caption('Crash!')
win = pygame.display.set_mode((800, 600))

x = 150
y = 300
width = 100
height = 60
scHeight = 600
scWidth = 800
vel = 0.5

running = True

while running:
    keys = pygame.key.get_pressed()
    if keys[pygame.K_UP] and y > vel:
        y -= vel
    if keys[pygame.K_DOWN] and y < scHeight - height - vel:
        y += vel
    win.fill((0, 0, 0))
    plane = pygame.draw.rect(win, (255, 0, 0), (x, y, width, height))
    meteor = pygame.draw.rect(win, (255, 255, 0), (700, y, width, height))
    pygame.display.update()

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

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Используйте отдельные позиции для кубов:

x1, y1 = 150, 300
x2, y2 = 700, 300

Таким образом, позиция каждого куба может быть изменена индивидуально.например, один куб можно перемещать с помощью клавиши со стрелкой, в то время как другой можно перемещать с помощью w и s

keys = pygame.key.get_pressed()

if keys[pygame.K_UP] and y2 > vel:
    y2 -= vel
if keys[pygame.K_DOWN] and y2 < scHeight - height - vel:
    y2 += vel
if keys[pygame.K_w] and y1 > vel:
    y1 -= vel
if keys[pygame.K_s] and y1 < scHeight - height - vel:
    y1 += vel

Каждый объект с идентификатором рисуется всобственная позиция:

plane = pygame.draw.rect(win, (255, 0, 0), (x1, y1, width, height))
meteor = pygame.draw.rect(win, (255, 255, 0), (x2, y2, width, height))
0 голосов
/ 22 апреля 2019

PyGame просто рисует фигуры, которые вы хотите нарисовать, с указанными вами координатами.
Итак, если мы посмотрим на оба вызова pygame.draw.rect(), мы увидим, что оба содержат y, поэтому, когда вы обновляете значение y при вводе данных пользователем, вы «перемещаете» оба прямоугольника.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...