【发布时间】:2020-04-15 20:04:30
【问题描述】:
我正在编写一个游戏,其中玩家输入其名称,我想在屏幕上显示它。
我是这样取名字的(名字是一个字符串,在下面的函数中被放在全局中):
while player_name_screen:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
print(name)
menu_screen = False
player_name_screen = False
game_animation = True
enemy_animation = True
standing = True
else:
name += event.unicode
name_text = game_font.render(name, True, (125, 156, 255))
win.blit(name_text, (500, 500))
pygame.display.update()
clock.tick(fps)
这就是我想要 blit 玩家名字的方式(以下代码在一个函数中,在我的主循环中调用):
if game_animation:
win.blit(name_text, (100, 300))
但是屏幕上什么也没有出现,当我在 shell 中打印它时,它看起来像这样:<Surface(63x50x32 SW)>
我怎样才能让它在屏幕上正确地闪烁?我已经在寻找类似的问题,但找不到能回答我问题的问题。
感谢您的帮助
编辑: 这是实现此功能所需的全部内容:
name = ""
name_text = game_font.render('', True, (255, 255, 255))
def input_player_name():
global menu_screen
global game_animation
global enemy_animation
global standing
global deluxe_or_not
global name
global name_text
#print("Enter player's name")
player_name_screen = True
win.blit(playerNameImg, (0, 0))
while player_name_screen:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN:
print(name)
menu_screen = False
player_name_screen = False
game_animation = True
enemy_animation = True
standing = True
imperial_march.play()
if "deluxe.ver" in name:
print("deluxe.ver.exe")
deluxe_or_not = 1
else:
name += event.unicode
#print(name)
name_text = game_font.render(name, True, (125, 156, 255))
win.blit(name_text, (500, 500))
pygame.display.update()
clock.tick(fps)
def rwg():
if game_animation:
win.blit(name_text, (100, 300))
print(name_text)
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE and menu_screen == True:
input_player_name()
rwg()
【问题讨论】:
-
name_text局部变量还是全局命名空间中的变量? “以下代码在一个函数中” - 它的函数在哪里?你在哪里以及如何调用这个函数?函数的 a 参数是什么?请阅读How to create a Minimal, Complete, and Verifiable example。