【发布时间】:2014-02-23 19:03:50
【问题描述】:
我正在 Pygame 中制作一个游戏,其中一些角色出现在屏幕的一侧并移动到另一侧,在那里他们传送到他们开始的地方并再次执行此操作。我希望精灵一次出现一个,在它们的生成之间有一个随机的时间增量。我为精灵创建了一个类,并将它们放在一个名为“怪物”的组中。我的 blitting 他们看起来像这样:
for monster in monsters:
monster.render(screen)
time.sleep(0.5)
这样做是让屏幕变黑,直到所有怪物都生成。我希望它们一次生成一个,并且让玩家能够看到它。这是上面代码所在的整个类:
import pygame, sys, random, time
from monster import *
pygame.init()
class Main:
clock = pygame.time.Clock()
screenSize = (500,500)
background = pygame.image.load("C:/Users/Nathan/PycharmProjects/Monsters II A Dark Descent/images/background.jpg")
screen = pygame.display.set_mode(screenSize)
pygame.display.set_caption("MONSTERS!")
monsters = pygame.sprite.Group()
counter = 0
x = 450
while counter < 5:
y = random.randint(50,450)
monster = Monster(x,y)
monsters.add(monster)
counter = counter + 1
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.blit(background,(0,0))
for monster in monsters:
monster.render(screen)
time.sleep(0.5)
x=x-1
clock.tick(60)
pygame.display.flip()
Main()
我还有第二个问题。我希望精灵在它们生成后移动随机速度(它们的当前位置(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))
感谢您的宝贵时间。如果您需要更多详细信息,请告诉我。
【问题讨论】: