2011-12-31 3 views
0

私はメインゲームを終了した後にプレーヤーの得点を表示する別のウィンドウを開くようにゲームをしようとしています。私は、テキストにs + s2の値を表示させる方法を理解できません。これまで私は持っています:pygameウィンドウに値を表示する方法は?

import pygame, sys 
from pygame.locals import * 
pygame.init() 
import time 

red = (255,0,0) 
green = (0,255,0) 
blue = (0,0,255) 
darkBlue = (0,0,128) 
white = (255,255,255) 
black = (0,0,0) 
pink = (255,200,200) 


background = pygame.image.load('background.jpg') 
screen = pygame.display.set_mode((640,521),0,32) 
x,y = 285, 430 
m_x, m_y = 0,0 
t = 0 
u = 0 
q = 0 
e = 0 
pygame.display.set_caption('Game') 
s = 0 
s2 = 0 
while 1: 
    screen.blit(background, (0,0)) 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.display.set_mode((200,200),0,32) 
      pygame.display.set_caption('Score') 
      font = pygame.font.Font(None, 100) 
      text = font.render('s + s2'), 1, white) 
      screen.blit(text, (0,0)) 
      pygame.display.update() 
      time.sleep(5) 
      pygame.quit() 
      sys.exit() 


     if event.type == KEYDOWN: 
      if event.key == K_a: 
       m_x = -3 
       s+=1 
       print (s) 
      elif event.key == K_d: 
       m_x = +3 
       s2+=1 
       print (s2) 
     if event.type == KEYUP: 
      if event.key == K_a: 
       m_x = 0 
      elif event.key == K_d: 
       m_x = 0 

    x+= m_x 
    y+= m_y  

    ball = pygame.sprite.Sprite() 
    ball.image = pygame.image.load('red_ball.png').convert() 
    ball.rect = ball.image.get_rect() 
    ball.image.set_colorkey((white)) 
    screen.blit(ball.image,(x,y)) 
    if x > 640: 
     x = 0 
    if x < 0: 
     x = 640 


    g_ball = pygame.sprite.Sprite() 
    g_ball.image = pygame.image.load('green_ball.png').convert() 
    g_ball.rect = g_ball.image.get_rect() 
    g_ball.image.set_colorkey(white) 
    screen.blit(g_ball.image,(50,t)) 
    t+=5 
    if t > 521: 
     t = 0 

    g_ball2 = pygame.sprite.Sprite() 
    g_ball2.image = pygame.image.load('green_ball.png').convert() 
    g_ball.rect = g_ball.image.get_rect() 
    g_ball2.image.set_colorkey(white) 
    screen.blit(g_ball2.image,(350,u)) 
    u+=5 
    if u > 521: 
     u = -50 

    g_ball3 = pygame.sprite.Sprite() 
    g_ball3.image = pygame.image.load('green_ball.png').convert() 
    g_ball3.rect = g_ball3.image.get_rect() 
    g_ball3.image.set_colorkey(white) 
    screen.blit(g_ball3.image,(500,q)) 
    q+=5 
    if q > 521: 
     q = -75 

    g_ball4 = pygame.sprite.Sprite() 
    g_ball4.image = pygame.image.load('green_ball.png').convert() 
    g_ball4.rect = g_ball4.image.get_rect() 
    g_ball4.image.set_colorkey(white) 
    screen.blit(g_ball4.image,(200,e)) 
    e+=5 
    if e > 521: 
     e = -100 


    pygame.display.update() 

答えて

2

Pygameは同時に複数のウィンドウを開くことができません。これは、基礎となるSDLライブラリの設計が原因です。

この情報を表示する「HUD」として、メインウィンドウのあるコーナーを捧げることをお勧めします。

SDLの開発版は複数のウィンドウ(SDL 1.3)をサポートしていますが、複数のウィンドウがまだ理想的な解決策である場合は、あなたが調べることができるPygameの開発バージョンがあります。

また、描画テキストのコードに問題があります。 (別に不一致括弧から。)

font.render('s + s2'), 1, white) 

これは文字通りの「S + S2」が表示されます、何をする必要があるこれらの2つの値を追加し、文字列にそれを変換しています。代わりにこれを使用してください。

font.render(str(s + s2), 1, white) 
+0

「str」機能を完全に忘れてしまいました。私はpygame/pythonに非常に新しいですし、助けに感謝します。 – 15H

関連する問題