Текст Pygame не отображается - PullRequest
0 голосов
/ 24 октября 2018

Я новичок в python (и сам кодирую) и пытался создать скрипт Hello World в pygame.Это в Python 3.2 и Pygame 1.9.2.У меня есть книга, из которой я непосредственно скопировал ее, но когда я запускаю ее, я получаю только черное окно.Вот мой код:

import pygame
import sys
pygame.init()
from pygame.locals import *
white = 255,255,255
blue = 0,0,200
screen = pygame.display.set_mode((600,500))
pygame.font.init
myfont = pygame.font.Font(None,60)
textImage = myfont.render("Hello Pygame", True, white)
screen.fill(blue)
screen.blit(textImage, (100,100))
pygame.display.update

Книга использует точно такие же версии, но я до сих пор не могу заставить ее работать.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

В вызове обновления в последней строке отсутствует ():

pygame.display.update()
0 голосов
/ 24 октября 2018

Хорошо, есть пара проблем.

Функция обновления экрана PyGame - update(), вам не хватает скобок для этого вызова и для шрифта init.

pygame.display.update()
screen = pygame.display.set_mode((600,500))
pygame.font.init()

Во-вторых, ваша программа просто сразу выходит.Вам нужно реализовать цикл обработки событий и ждать сообщения о закрытии окна.

Это работает для меня:

import sys
import pygame
from pygame.locals import *

white = 255,255,255
blue  = 0,0,200

pygame.init()
screen = pygame.display.set_mode((600,500))
pygame.font.init()
myfont = pygame.font.Font(None,60)
textImage = myfont.render("Hello Pygame", True, white)
screen.fill(blue)
screen.blit(textImage, (100,100))
pygame.display.update()

while (True):
    event = pygame.event.wait()
    if event.type == QUIT:
        pygame.quit()
        sys.exit()

Я знаю, что вы только начинаете, но одна вещь, которая сэкономит ваше время (и сделает это проще) позже, это поместить ширину и высоту вашего окна в переменные.Затем расположите элементы на экране относительно этих значений.Таким образом, когда вы изменяете размер дисплея (или любой другой) позже, вам нужно только изменить код в этих двух местах.

WIDTH  = 600
HEIGHT = 500

pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
...
text_width  = textImage.get_width()
text_height = textImage.get_height()
# Centre text #TODO - handle text being larger than window
screen.blit(textImage, ( (WIDTH-text_width)//2 , (HEIGHT-text_height)//2 ))

Примечание: // - это целочисленное деление в python

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...