我正在創建一個遊戲,每當2個精靈發生碰撞時分數應該增加1。現在分數顯示爲0開始,然後一旦發生碰撞,它會增加到39(有時候是27。數字的變化使我認爲它是以秒爲單位遞增的)。在這裏閱讀一些其他答案讓我意識到這很可能是我的問題Python PyGame分數計數器以秒爲單位遞增而不是1
t = f.render("Score = " + str(score), False, black)
screen.blit(t, (0,0))
位於for循環。但我已經嘗試將它放在其他地方,然後屏幕上根本沒有出現分數。
這裏是我的代碼創建比分
class Tub(Sprite):
def __init__(self):
Sprite.__init__(self)
self.image = image.load("tub.bmp").convert_alpha()
self.image = transform.scale(self.image, (100, 100))
self.rect = self.image.get_rect()
self.rect.x = width/2
self.rect.y = height - 100
def movement(self):
keys = pygame.key.get_pressed()
dist = 5
if keys [pygame.K_LEFT]:
self.rect.x -= dist
if keys [pygame.K_RIGHT]:
self.rect.x += dist
def hit(self, target):
return self.rect.colliderect(target)
class Singlescoop_pink(Sprite):
def __init__(self):
Sprite.__init__(self)
self.image = image.load("singlescoop_pink.bmp").convert_alpha()
self.image = transform.scale(self.image, (100, 100))
self.rect = self.image.get_rect()
self.rect.x = random.randint(0, width-100) #random x position, minus 100 so image does not go off screen
self.rect.y = -600 #start off screen so starting point to fall down is not visible
def movement(self):
self.rect.y += 5
if self.rect.y > height:
self.kill()
tub = Tub()
sspink = Singlescoop_pink()
sprites = pygame.sprite.RenderPlain(tub, sspink)
score = 0
def game_loop():
gameExit = False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
quit()
sys.exit()
if tub.hit(sspink):
sspink.kill()
global score
score += 1
tub.movement()
sspink.movement()
screen.fill(white)
t = f.render("Score = " + str(score), False, black)
screen.blit(t, (0,0))
sprites.update()
sprites.draw(screen)
display.update()
clock.tick(60)
game_loop()
我之前做了一些遊戲編程,但我還沒有使用pygame的所以我不確定你是如何處理碰撞的,但它可能不是增加秒數,但可能是精靈在多個幀中接觸?請記住,如果您的遊戲運行速度爲60 fps,則它將以每秒60次的速度運行主遊戲循環,因此您的精靈可能會接觸到多個幀,每秒會多次增加分數。 – RichSmith
完全是問題。謝謝! – Zanne