2016-05-09 3 views
-1

Ich brauche Hilfe. Mein Code arbeitet nicht mit Pygame. Alles, was es zeigt, ist ein leerer Bildschirm. Mein Code soll Sie nach einer Nummer fragen, und wenn Sie ihn eingeben, zeigt der Code diese Nummer mit der Potenz von drei an. Hier ist mein Code:Mein Code auf Pygame funktioniert nicht

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

Das 'while not gameExit' sieht verdächtig aus. Könnte eine Endlosschleife sein –

Antwort

1

Es gibt ein paar Dinge, die ich bemerken:

  • Sie füllen Ihre gameDisplay mit weißen, bevor es zu aktualisieren. Dies bedeutet, dass alles, was Sie zuvor gezeichnet haben, überschrieben wird.

  • Die Funktion input nie

  • Die Funktion input wird definiert in der while-Schleife bezeichnet. Es wäre klug, es herauszunehmen.

  • Die Überprüfung auf gameExit == True wird nie innerhalb Ihrer While-Schleife erreicht. Verschiebe es in die Schleife.

Das sind alles einige ziemlich grundlegende Fehler. Ist dir bewusst, was du machst und gibt es ein Tutorial, dem du folgst?

1

Der Grund, warum der Bildschirm leer ist, ist, dass Sie ihn kurz vor dem Aktualisieren mit einer Farbe füllen.

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