2016-05-09 2 views
-1

Мне нужна помощь. Мой код не работает над Pygame. Все, что он показывает, это пустой экран. Мой код должен запрашивать у вас номер, а затем, когда вы вводите его, код отображает это число до трех. Вот мой код:Мой код на Pygame не работает

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

'while not gameExit' выглядит подозрительно. Может быть бесконечным циклом –

ответ

1

Есть несколько вещей, которые я заметил:

  • Вы заполняете свой gameDisplay с белым, до его обновления. Это означает, что все, что вы нарисовали, перезаписывается.

  • Функция input никогда не вызывается

  • Функция input в настоящее время определена в то время как петля. Было бы разумно вынести это.

  • Проверка на gameExit == Истина никогда не достигается в вашем цикле while. Переместите его внутри цикла.

Это все довольно простые ошибки. Знаете ли вы, что вы делаете, и есть ли какой-то учебник, за которым вы следите?

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