2015-05-09 3 views
0

Я следую за учебником серии youtube, и я столкнулся с этой проблемой с моей игрой pygame. Я сделал функцию, называемую messagetoscreen, и она отлично работает в видео, но она не работает для меня.My Pygame messagetoscreen функция не показывает текст

Вот мой код:

#Imports 

import pygame 
pygame.init() 
pygame.font.init() 
import sys 
import random 
import cx_Freeze 
import time 

#Variables 

playerhealth = 100 

black = (0, 0, 0) 
white = (255, 255, 255) 
red = (255, 0, 0) 
green = (0 ,255, 0) 

windowtitle = "Climber" 
sizex = 1000 
sizey = 700 

rect1x = 500 
rect1y = 350 
rect1sizex = 50 
rect1sizey = 50 

rect1xchange = 0 
rect1ychange = 0 

clock = pygame.time.Clock() 
fps = 600 

font = pygame.font.SysFont(None, 25) 

#Functions 

def messagetoscreen (msg,color): 
    screentext = font.render(msg, True, color) 
    gamedisplay.blit(screentext , [sizex/2, sizey/2]) 

#Initialization 

gamedisplay = pygame.display.set_mode((sizex, sizey)) 
pygame.display.set_caption(windowtitle) 

#Game Loop 

while True: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      quit() 
     if event.type == pygame.KEYDOWN: 
      if event.key == pygame.K_w: 
       rect1ychange -= 1 
      elif event.key == pygame.K_a: 
       rect1xchange -= 1 
      elif event.key == pygame.K_s: 
       rect1ychange += 1 
      elif event.key == pygame.K_d: 
       rect1xchange += 1 
     if event.type == pygame.KEYUP: 
      if event.key == pygame.K_w: 
       rect1ychange = 0 
      elif event.key == pygame.K_a: 
       rect1xchange = 0 
      elif event.key == pygame.K_s: 
       rect1ychange = 0 
      elif event.key == pygame.K_d: 
       rect1xchange = 0 

    if rect1y > 650: 
     rect1y = 650 
    if rect1x > 950: 
     rect1x = 950 
    if rect1y < 0: 
     rect1y = 0 
    if rect1x < 0: 
     rect1x = 0 

    rect1x += rect1xchange 
    rect1y += rect1ychange 
    messagetoscreen("HAPPY", red) 

    gamedisplay.fill(white) 
    pygame.draw.rect(gamedisplay, green, (rect1x, rect1y, rect1sizex, rect1sizey)) 

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

Я хотел бы знать, как исправить свою функцию, и все остальное, что может привести к ошибке.

+1

вы определили функцию .. но где вы его используете? – corn3lius

+0

Мне жаль, я забыл сказать, что когда я его использовал, он тоже не появился. –

ответ

0

Ответ заключается в том, что я набросал текст на экран, прежде чем я заполнил gamedisplay белым. Не забудьте добавить текст после рисования фона.

Вот код, рисовать графики в то время цикла:

gamedisplay.fill(white) 
pygame.draw.rect(gamedisplay, green, (rect1x, rect1y, rect1sizex, rect1sizey)) 
messagetoscreen("HAPPY", red) 
Смежные вопросы