因此,我试图在pygame上进行DVD弹跳,但无法将其撞到墙上弹跳,但我最终找到了别人的方法并使用了它,但我不知道为什么它真正起作用了,我不明白为什么DVD徽标实际上会弹起。如果有人可以帮助,将不胜感激。
import pygame
import os
os.chdir("C:\\Users\\user\\Documents\\Pythonscript\\DVD")
pygame.init()
def gameloop():
width = 600
height = 500
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('DVD')
black = (0,0,0)
dvd_logo = pygame.image.load("DVD Red.png")
rect = dvd_logo.get_rect()
clock = pygame.time.Clock()
game = False
move_speed = [2, 2]
while not game:
for event in pygame.event.get():
if event.type == pygame.QUIT:
game= True
if rect.left < 0:
move_speed[0] = -move_speed[0]
dvd_logo = pygame.image.load("DVD Pink.png")
if rect.right > width:
move_speed[0] = -move_speed[0]
dvd_logo = pygame.image.load("DVD Blue.png")
if rect.top < 0:
move_speed[1] = -move_speed[1]
dvd_logo = pygame.image.load("DVD Yellow.png")
if rect.bottom > height:
move_speed[1] = -move_speed[1]
dvd_logo = pygame.image.load("DVD Red.png")
rect.left += move_speed[0]
rect.top += move_speed[1]
screen.fill(black)
screen.blit(dvd_logo, rect)
pygame.display.flip()
clock.tick(60)
gameloop()
pygame.quit()
quit()
答案 0 :(得分:1)
因此rect
对象代表dvd_logo
图像的位置和大小。在每一帧中,代码检查left
的{{1}}是否小于零(窗口的左边缘),如果rect
大于right
(窗口的右边缘) ),如果width
小于零(窗口的上边缘),或者top
大于bottom
(窗口的下边缘)。如果height
或left
超出了左边缘或右边缘,则right
(左/右速度)被取反,对于move_speed[0]
/ {{ 1}}和top
。
如果您的move_speed [0]为-2(向左移动)并且bottom
小于零,则move_speed[1]
变为rect.left
,因此它将向右移动而不是向左移动。同样,top / bottom和move_speed [1]的概念相同。