2012-03-13 3 views
2

Эй, я хочу, чтобы Pygame распечатывал текст на экране, я пытался это сделать, но у меня есть некоторые странные ошибки, и я не могу понять, что случилось. Вот мой кодКак отобразить текст?

def write(text): 
     for j in range(h): 

      for j in range(w): 

       for char in text: 

        if char.lower() == "a": 

         screen.blit(a, (k, l)) 
        self.k += 10 

       self.l += 11 
    write("aaaaaaaa") 

Я был бы признателен, если кто-то может указать на мои ошибки и/или предложить правильный способ сделать это.

+2

Похоже, вы используете 'j' в качестве переменной холостой. Соглашение Python должно использовать '_' для одноразового имени. Кроме того, поскольку вы фактически увеличиваете некоторые переменные, почему бы не воспользоваться параметром 'step'? Предполагая, что 'self.k' и' self.l' начинаются как 0: 'для self.k в диапазоне (0, h, 10):' и 'для self.l в диапазоне (0, w, 11)'. – Darthfett

ответ

2

Вот один из способов:

import pygame, pygame.font, pygame.event, pygame.draw, string 
from pygame.locals import * 

def display_box(screen, message): 
    fontobject=pygame.font.SysFont('Arial', 18) 
    if len(message) != 0: 
     screen.blit(fontobject.render(message, 1, (255, 255, 255)), 
       ((screen.get_width()/2) - 100, (screen.get_height()/2) - 10)) 
    pygame.display.flip() 

def get_key(): 
    while True: 
     event = pygame.event.poll() 
     if event.type == KEYDOWN: 
      return event.key 

if __name__ == "__main__": 
    # Graphics initialization 
    full_screen = False  
    window_size = (1024, 768) 
    pygame.init()  
    if full_screen: 
     surf = pygame.display.set_mode(window_size, HWSURFACE | FULLSCREEN | DOUBLEBUF) 
    else: 
     surf = pygame.display.set_mode(window_size) 

    # Create a display box 
    while True: 
     display_box(surf, "hello world") 
     inkey = get_key() 
     if inkey == K_RETURN or inkey == K_KP_ENTER: 
      break 
     pygame.display.flip() 
+0

спасибо. – Gustavo

1

Посмотрите на этот образец в Very simple Pong game:

font = pygame.font.SysFont("calibri",40) 
... 
score1 = font.render(str(bar1_score), True,(255,255,255)) 
... 
screen.blit(score1,(250.,210.)) 
Смежные вопросы