Python 如何使随机大小的形状从屏幕的顶部下降到底部?

Python 如何使随机大小的形状从屏幕的顶部下降到底部?,python,python-3.x,pygame,python-3.6,Python,Python 3.x,Pygame,Python 3.6,我想用pygame制作一个类似Python游戏的射击游戏。我对Python非常陌生,我不确定如何使对象从屏幕顶部掉落,总之,下面是我的代码(我使用的是Python 3.6): 导入pygame 随机输入 pygame.init() 黑色=(0,0,0) 白色=(255255) 红色=(255,0,0) 绿色=(0255,0) 蓝色=(0,0255) 宽度=600 高度=650 screen=pygame.display.set_模式((宽度、高度)) pygame.display.set_标题(

我想用pygame制作一个类似Python游戏的射击游戏。我对Python非常陌生,我不确定如何使对象从屏幕顶部掉落,总之,下面是我的代码(我使用的是Python 3.6):

导入pygame
随机输入
pygame.init()
黑色=(0,0,0)
白色=(255255)
红色=(255,0,0)
绿色=(0255,0)
蓝色=(0,0255)
宽度=600
高度=650
screen=pygame.display.set_模式((宽度、高度))
pygame.display.set_标题('Videojuego'))
完成=错误
屏幕填充(白色)
pygame.display.flip()
background\u image=pygame.image.load('fondo.jpg').convert()
blit(背景图像,[0,0])
player_image=pygame.image.load('rocket.png').convert()
player_image=pygame.transform.scale(player_image,(50,75))
pygame.display.flip()
pygame.mouse.set_可见(False)
计数=0
clock=pygame.time.clock()
rect_x=random.randrange(0580)
rect_y=random.randrange(0,2)
rect_chx=5
size1=随机。随机范围(10,70)
size2=随机的随机范围(15,84)
虽然(未完成):
对于pygame.event.get()中的事件:
如果(event.type==pygame.QUIT):
打印('退出')
完成=正确
其他:
完成=错误
blit(背景图像,[0,0])
player\u position=pygame.mouse.get\u pos()
x=玩家位置[0]
y=玩家位置[1]
屏幕blit(播放器图像,(x,y))
fig=pygame.draw.rect(屏幕,红色,[rect_x,rect_y,大小1,大小2])

如果(rect_y>550或rect_y,您可以创建一个简单的类rect来封装一个矩形,并将其打印到屏幕上:

class Rect():
    def __init__(self):
        self.x=random.randrange(0,580)
        self.y=random.randrange(0,2)

        self.size_x=random.randrange(10,70)
        self.size_y=random.randrange(15,84)

    def update(self, screen, fall_speed):
        self.y += fall_speed
        pygame.draw.rect(screen, RED, [self.x, self.y, self.size_x, self.size_y])
然后可以在列表中创建一些Rect:
rect\u list=[rect()表示范围内的u(10)]
(按所需的rect数更改10)

最后,在每个循环中迭代列表:

while(not done):
    for event in pygame.event.get():
    if(event.type==pygame.QUIT):
        print('Quit')
        done=True
    screen.blit(background_image,[0,0])
    player_position=pygame.mouse.get_pos()
    x=player_position[0]
    y=player_position[1]
    screen.blit(player_image,(x,y))
    for rect in rect_list:
        # Here 5 is the rect_chx, or fall speed
        rect.update(screen, 5)
    pygame.display.flip()
    clock.tick(60)
这将在开始时创建10个rect。您可能希望检测某个rect何时位于底部,然后将其从列表中删除(不再显示),或者将新rect添加到列表中,使其在顶部弹出


我建议您学习如何使用函数、类、循环和列表来实现基本python。如果您想创建游戏,即使是最小的游戏,这也是必须的

while(not done):
    for event in pygame.event.get():
    if(event.type==pygame.QUIT):
        print('Quit')
        done=True
    screen.blit(background_image,[0,0])
    player_position=pygame.mouse.get_pos()
    x=player_position[0]
    y=player_position[1]
    screen.blit(player_image,(x,y))
    for rect in rect_list:
        # Here 5 is the rect_chx, or fall speed
        rect.update(screen, 5)
    pygame.display.flip()
    clock.tick(60)