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

2024-09-24 22:23:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试着用pygame制作一个像Python游戏一样的射击游戏。我对Python相当陌生,我不确定如何使对象从屏幕的顶部掉落,总之,下面是我的代码(我使用的是python3.6):

import pygame
import random
pygame.init()

BLACK=(0,0,0)
WHITE=(255,255,255)
RED=(255,0,0)
GREEN=(0,255,0)
BLUE=(0,0,255)

width=600
height=650

screen=pygame.display.set_mode((width,height))
pygame.display.set_caption('Videojuego')
done=False
screen.fill(WHITE)
pygame.display.flip()

background_image=pygame.image.load('fondo.jpg').convert()
screen.blit(background_image,[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_visible(False)

count=0
clock=pygame.time.Clock()

rect_x=random.randrange(0,580)
rect_y=random.randrange(0,2)
rect_chx=5

size1=random.randrange(10,70)
size2=random.randrange(15,84)

while(not done):
    for event in pygame.event.get():
    if(event.type==pygame.QUIT):
        print('Quit')
        done=True
    else:
        done=False
    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))
    fig=pygame.draw.rect(screen,RED,[rect_x,rect_y,size1,size2])
    if(rect_y>550 or rect_y<5):
        rect_chx=rect_chx*1
    rect_y+=rect_chx
    pygame.display.flip()
    clock.tick(60)

 pygame.quit()

这段代码只会使一个矩形下降,我不知道如何使更多的矩形下降。在


Tags: rectimagefalsedisplayrandomscreenpygamebackground
1条回答
网友
1楼 · 发布于 2024-09-24 22:23:32

您可以创建一个简单的类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_list = [Rect() for _ in range(10)](按所需的矩形数更改10)。

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

^{pr2}$

这将在开始处创建10个矩形。您可能希望检测到Rect何时位于底部,然后将其从列表中删除(它将不再显示),或者向列表中添加新的Rect以使其在顶部弹出。


我建议您学习如何用函数、类、循环和列表来做基本的python。这是强制性的,如果你想创建游戏,即使是最小的。

相关问题 更多 >