我试图用pygame在Python中制作一个类似于游戏的游戏。我对Python很陌生,我不确定如何让对象从屏幕顶部掉落,无论如何,这是我的代码(我使用的是Python 3.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()
此代码只会使一个矩形掉落,我不知道如何制作更多矩形。
答案 0 :(得分:1)
您可以创建一个简单的类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)]
(根据你想要的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。如果您想创建游戏,即使是最小的游戏,这也是必须的。