我的Pygame代码不起作用

时间:2016-05-09 15:51:49

标签: python math pygame

我需要帮助。我的代码不适用于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()

2 个答案:

答案 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()