我在Pygame中制作了一个游戏,其中一些角色出现在屏幕的一边,然后移动到另一边,在那里他们传送到他们开始的地方,然后再做一次。我希望精灵一次出现一个,在它们的产卵之间有一个随机的时间增量。我为精灵们创建了一个类,我把他们放在一个叫做“怪物”的组中。我的闪电看起来像这样:
for monster in monsters:
monster.render(screen)
time.sleep(0.5)
它的作用是使屏幕变黑直到所有的怪物都产生。我希望他们一次产生一个,让玩家能够看到。下面是上面代码所在的整个类:
^{pr2}$我还有第二个问题。我希望精灵在繁殖后以随机速度移动(它们当前的位置(x)加上一个随机数)。我也希望他们传送他们开始的地方,并在他们到达屏幕的最后一次。这是精灵运动课:
def move(self):
if(self.x > 500):
self.x = 450
self.x -= random.randint(1,5)
目前它们以不同的速度移动,只是离开了屏幕的边缘。这是整个雪碧课程:
import random, pygame
class Monster(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.x = x
self.y = y
self.image = pygame.image.load("C:\Users\Nathan\PycharmProjects\Monsters II A Dark Descent\images\monster.png")
def move(self):
if(self.x > 500):
self.x = 450
self.x -= random.randint(1,5)
def render(self, screen):
screen.blit(self.image, (self.x, self.y))
谢谢你抽出时间。如果你需要更多的细节请告诉我。在
为了让不同的精灵在不同的时间出现,你应该像约翰说的那样使用一个定时器循环。他给的密码是正确的。这是唯一的方法,你可以做到这一点,而不减慢整个游戏循环。在
意味着他在一条线上分配了两个变量。也可以写成
在此期间不会发生任何事情
所以当你等待每个
monster
成为blit
ted时,整个游戏就停止了。在您需要允许
^{pr2}$while True
循环继续运行,但控制正在显示的monsters
。例如,您可以保留visible_monsters
的计数,该计数在适当的间隔之后添加到:对于第二个问题,请保留}和{},这样以后可以重用它们,并在
monster
和{render
时检查它们是否在screen
中(例如0 <= self.x <= screenSize[0]
)。在在时间。睡觉()只会明显地暂停你的程序,你可以在不同的时间产生怪物的唯一方法是使用时钟滴答声函数,因为您必须已经调用游戏时间时钟()转换为变量。我在玩蛇游戏时也用过很多次。您也可以使用Pygame USEREVENT可能您应该阅读Pygame文档,了解如何使用Pygame时间模块来做一些很酷的事情。事实上,你有两个while循环,没有办法结束,这可能会让你的游戏表面变黑,同时运行游戏,我觉得jornsharpeans是一个很好的去检查你的代码,只是解决问题
相关问题 更多 >
编程相关推荐