我需要帮助。我的代码不适用于Pygame。它显示的只是一个空白屏幕。我的代码应该询问您一个数字,然后当您输入它时,代码会显示该数字为3的幂。这是我的代码:
import pygame
import time
pygame.font.init()
pygame.init
white = (255,255,255)
black = (0,0,0)
red = (255,0,0)
display_width = 800
display_height = 600
gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('Cube')
gameExit = False
clock = pygame.time.Clock()
font = pygame.font.SysFont('arial', 25)
def message_to_screen(msg,color):
screen_text = font.render(msg, True, color)
gameDisplay.blit(screen_text, [display_width/2, display_height/2])
while not gameExit:
def input(number):
message_to_screen("Enter a Number to Cube")
total = number ** 3
if number > 0:
message_to_screen(total, red)
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
gameDisplay.fill(white)
pygame.display.update()
time.sleep(2)
if gameExit == True:
pygame.quit()
quit()
答案 0 :(得分:1)
我注意到了一些事情:
在更新之前,用白色填充gameDisplay。这意味着您之前绘制的所有内容都会被覆盖。
永远不会调用函数input
函数input
正在while循环中定义。把它拿出来是明智的。
在您的while循环中永远不会检查gameExit
== True。将其移入循环内。
这些都是一些非常基本的错误。你知道你在做什么,是否有一些你正在学习的教程?
答案 1 :(得分:1)
屏幕为空白的原因是因为您在更新之前用纯色填充它。
while not gameExit:
def input(number):
message_to_screen("Enter a Number to Cube")
total = number ** 3
if number > 0:
message_to_screen(total, red)
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
gameDisplay.fill(white) # <-- THIS OVERDRAWS EVERYTHING ELSE
pygame.display.update()