2017-12-08 10 views
0

シンプルなゲームを書いています(問題の部分だけを表示します)health以外のすべてがうまくいっています。 1つのオブジェクトが別のオブジェクトにヒットするかどうかを調べるためにprintステートメントを置いています。したがって、if statementTrueです。私はprintステートメントを参照していますが、healthスコアは更新されていません。私はここに何かを逃していますかご協力ありがとうございました!オブジェクトはヒットしましたがスコアは更新されていません

sqrls = pygame.image.load("crazySquirrel1.gif") 
sqrlsrect = sqrls.get_rect() 
sqrls_startx = 200 
sqrls_starty = 530 
sqrlsrect.center = (sqrls_startx, sqrls_starty) 

girl = pygame.image.load('girl1.gif') 
girlrect = girl.get_rect() 
x = 850 
y = 278 
girlrect.center = (x, y) 
screen.blit(girl,(x, y))  

## adding health score 
health = 3 
font = pygame.font.SysFont("Comic Sans MS", 20) 
text = font.render("Health: " + str(health),1, RED) 
## main game loop ********************************** 
x_change = 0 
endGame = False 

while not endGame: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      quit() 
     if event.type == pygame.KEYUP: 
      if event.key == pygame.K_LEFT: 
       x_change = -2 
      elif event.key == pygame.K_RIGHT: 
       x_change = 2 
      if event.type == pygame.KEYDOWN: 
       if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: 
        x_change = 0    
    x += x_change 

    sqrlsrect = sqrlsrect.move(sqrls_speed) # moving squirrel 1 
    if sqrlsrect.left < 0 or sqrlsrect.right > w: 
     sqrls_speed[0] = -sqrls_speed[0] 
    if sqrlsrect.top < 0 or sqrlsrect.bottom > h: 
     sqrls_speed[1] = -sqrls_speed[1] 

    if sqrlsrect.center == girlrect.center: 
     print ('Ouch s!') 
     health -= 1 

    screen.blit(bg, (0, 0)) 
    screen.blit(sqrls, sqrlsrect) 
    screen.blit(girl, (x, y)) 
    screen.blit(text, (w*0.88, h*0.03)) 

    pygame.display.update() 
    clock.tick(60) 

pygame.quit() 
quit() 

答えて

2

healthを変更していますが、表示されている実際のテキストは変更していません。代わりに、以下を使用してください:

if sqrlsrect.center == girlrect.center: 
     print ('Ouch s!') 
     health -= 1 
     text = font.render("Health: " + str(health),1, RED) 
+1

ありがとうございます!出来た!あなたは華麗です! – Rish

関連する問題