如何在Pygame中移动一个单一对象

时间:2019-04-22 14:51:50

标签: python pygame

因此,我一直尝试使用用户输入仅移动一个多维数据集,但是当我尝试统一移动两个多维数据集时,我没有一个目标。如何移动一个立方体(使用用户输入)而不是同时移动两个立方体?谢谢:^)

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 :(得分:0)

PyGame只是按照您告诉的坐标绘制您想要绘制的形状。
因此,如果我们同时查看两个pygame.draw.rect()调用,则可以看到它们都包含y,因此,当您在用户输入上更新y值时,将“移动”两个矩形。

答案 1 :(得分:0)

对多维数据集使用单独的位置:

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

每个对象的id绘制在自己的位置:

plane = pygame.draw.rect(win, (255, 0, 0), (x1, y1, width, height))
meteor = pygame.draw.rect(win, (255, 255, 0), (x2, y2, width, height))