2014-03-25 4 views
1

내 게임 화면에 점수를 표시하는 방법을 아는 사람이 있습니까? (점수 인쇄 - 파이 게임

"텍스트 = font.render (점수, 1 : 나는 게임을 시작하고 총알을 촬영하면 나는이 오류를받을 그러나

for bullet in bullet_list: 

     block_hit_list = pygame.sprite.spritecollide(bullet, block_list, True) 

     for block in block_hit_list: 
     explosion.play() 
     bullet_list.remove(bullet) 
     all_sprites_list.remove(bullet) 
     score += 10 
     font = pygame.font.Font(None, 36) 
     text = font.render(score, 1, (WHITE)) 
     textpos = text.get_rect(centerx=background.get_width()/2) 
     background.blit(text, textpos) 

    if bullet.rect.y < -10: 
     bullet_list.remove(bullet) 
     all_sprites_list.remove(bullet) 

:

은 지금까지 나는이 코드를 가지고 WHITE))

형식 오류 : 텍스트는 유니 코드이거나

사람이 내가이 문제를 해결할 수있는 방법을 알고 있나요 "바이트해야합니까?

고맙습니다.

답변

4

OK 그래서 우선 올바르게 바로 이전의 대답은 그것을 어떻게 같은 것 사이트를 그리는 방법을 물었지만, 당신은 화면에 블럭 전송 방식에 잘못하지만 있습니다.

현재 for 루프를 통해 점수를 blit 할 때마다 이로 인해 발생하는 효과가 발생합니다. 이것은 for 루프 바로 뒤에 있어야합니다. 예 :

for bullet in bullet_list: 
    block_hit_list = pygame.sprite.spritecollide(bullet, block_list, True) 
    for block in block_hit_list: 
     explosion.play() 
     bullet_list.remove(bullet) 
     all_sprites_list.remove(bullet) 
     score += 10 
     #removed this line!!!! ~ font = pygame.font.Font(None, 36) 
     #removed this line to!!!! ~ text = font.render(score, 1, (WHITE)) 
     #remove this line also!!! ~ textpos = text.get_rect(centerx=background.get_width()/2) 
     #finally remove this line!!!! ~ background.blit(text, textpos) 
    if bullet.rect.y < -10: 
     bullet_list.remove(bullet) 
     all_sprites_list.remove(bullet) 
#add in those removed lines after your for loop. 
font = pygame.font.Font(None, 36) 
text = font.render(score, 1, (WHITE)) 
textpos = text.get_rect(centerx=background.get_width()/2) 
background.blit(text, textpos) 

이렇게하면됩니다. 추가 도움이 필요하면 알려주세요.

+0

답장을 보내 주셔서 감사합니다.이 작업은 완벽하지만 여전히 점수가 지속적으로 표시되는 문제가 있습니까? 10을 표시하는 대신 20을 표시하기 전에 점수를 지우는 대신 20 등의 상단에 10을 표시하여 읽을 수없는 텍스트를 남깁니다. – Oscar

+0

@Oscar 현재 코드를 더 많이 메인 루프에 게시 할 수 있습니까? – KodyVanRy

+0

틀림없이 Pastebin에 넣습니다. http://pastebin.com/gLMXz4W6 – Oscar

2

점수를 문자열로 변환해야합니다.

text = font.render(str(score), 1, (WHITE)) 
+0

완벽하게 작동합니다! 하나의 사소한 문제, 점수가 1 점을 넘으면 점수 자체가 나타납니다. 문제를 해결할 수있는 방법이 있습니까? :) 답장을 보내 주셔서 감사합니다. – Oscar