Python My Pygame messagetoscreen函数不显示文本

Python My Pygame messagetoscreen函数不显示文本,python,function,fonts,pygame,Python,Function,Fonts,Pygame,我正在关注youtube教程系列,我在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,

我正在关注youtube教程系列,我在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)
#导入
导入pygame
pygame.init()
pygame.font.init()
导入系统
随机输入
进口冷冻食品
导入时间
#变数
玩家健康=100
黑色=(0,0,0)
白色=(255,255,255)
红色=(255,0,0)
绿色=(0,255,0)
windowtitle=“攀岩者”
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(无,25)
#功能
def消息至屏幕(消息,颜色):
screentext=font.render(msg、True、color)
blit(屏幕文本,[sizex/2,sizey/2])
#初始化
gamedisplay=pygame.display.set_模式((sizex,sizey))
pygame.display.set_标题(windowtitle)
#游戏循环
尽管如此:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
pygame.quit()
退出
如果event.type==pygame.KEYDOWN:
如果event.key==pygame.K_w:
rect1ychange-=1
elif event.key==pygame.K_a:
rect1xchange-=1
elif event.key==pygame.K_:
rect1ychange+=1
elif event.key==pygame.K\u d:
rect1xchange+=1
如果event.type==pygame.KEYUP:
如果event.key==pygame.K_w:
rect1ychange=0
elif event.key==pygame.K_a:
rect1xchange=0
elif event.key==pygame.K_:
rect1ychange=0
elif event.key==pygame.K\u d:
rect1xchange=0
如果rect1y>650:
rect1y=650
如果rect1x>950:
rect1x=950
如果rect1y<0:
rect1y=0
如果rect1x<0:
rect1x=0
rect1x+=rect1xchange
rect1y+=rect1ychange
messagetoscreen(“快乐”,红色)
游戏显示。填充(白色)
pygame.draw.rect(游戏显示,绿色,(rect1x,rect1y,rect1sizex,rect1sizey))
pygame.display.update()
时钟滴答声(fps)

我想知道如何修复我的功能,以及任何可能导致错误的东西。

答案是,在我用白色填充gamedisplay之前,我在屏幕上快速显示了文本。请记住在绘制背景后闪烁文本

下面是绘制图形的代码 在while循环中:

gamedisplay.fill(white)
pygame.draw.rect(gamedisplay, green, (rect1x, rect1y, rect1sizex, rect1sizey))
messagetoscreen("HAPPY", red)

您定义了函数。。但是你在哪里用它呢?对不起,我忘了说当我用它的时候它也没有出现。