2015-09-24 5 views
2

Я довольно новичок в программировании. Вероятно, я совершил какую-то глупую ошибку, но я не могу ее найти. Любая помощь приветствуется. Вот код:Python завершает работу после запуска приложения

import pygame 
import time 
import random 

pygame.init() 

display_width = 800 
display_height = 600 

gameDisplay = pygame.display.set_mode((display_width, display_height)) 

pygame.display.set_caption('Moving square') 

#####################Set the display parameters and title##################### 

gameExit = False 
gameOver = False 

lead_x = display_width/2 
lead_y = display_height/2 
lead_x_change = 0 
lead_y_change = 0 
FPS = 15 
clock = pygame.time.Clock() 
font = pygame.font.SysFont(None, 25) 
white = (255, 255, 255) 
black = (0, 0, 0) 
red = (255, 0, 0) 
green = (0, 255, 0) 
blue = (0, 0, 255) 
block_size = 10 
###########################Setting the variables############################ 
def message_2_screen(msg, color):#setting a variable for the text 
    themessage = font.render(msg, True, color) 
    gameDisplay.blit(themessage, [265, display_height/2]) 


def gameloop(): 
    gameExit = False 
    gameOver = False 
    lead_x = display_width/2 
    lead_y = display_height/2 
    lead_x_change = 10 
    lead_y_change = 0 
    FPS = 15 
    block_size = 10   


    while not gameExit:  
     while gameOver == True: 
      gameDisplay.fill(white) 
      message_2_screen('Press c to continue and q to quit', red) 
      pygame.display.update() 
      for event in pygame.event.get():#creating a loop for the quitting and continue 
       if event.type == pygame.KEYDOWN: 
        if event.key == pygame.K_q: 
         gameExit = True 
         gameOver = False 
        if event.key == pygame.K_c: 
         gameloop() 
     for event in pygame.event.get():#loop for quitting 
      if event.type is pygame.QUIT: 
       gameExit = True          
      if event.type == pygame.KEYDOWN:#setting the control buttons 
       if event.key == pygame.K_LEFT: 
        lead_x_change = -block_size 
        lead_y_change = 0 
       elif event.key == pygame.K_RIGHT: 
        lead_x_change = block_size 
        lead_y_change = 0 
       elif event.key == pygame.K_UP: 
        lead_y_change = -block_size 
        lead_x_change = 0 
       elif key.event == pygame.K_DOWN: 
        lead_y_change = block_size 
        lead_x_change = 0 
     if lead_x >= display_width or lead_y >=display_height or lead_x < 0 or lead_y < 0:#Setting limits for where the square can move 
      gameExit = True 
     lead_x+= lead_x_change 
     lead_y+= lead_y_change 
     gameDisplay.fill(white) 

     pygame.draw.rect(gameDisplay, black, [lead_x, lead_y, block_size, block_size ])#setting the position of the square 
     pygame.display.update() 
     clock.tick(FPS) 

     pygame.quit() 

     quit() 
gameloop()  

Я проверил проблему несколько раз и сосредоточился в основном на петлях выхода, но все равно ничего.

+1

Как вы его используете? Это дает вам ошибку? –

+3

Ну, конец вашего 'while not gameExit:' loop вызывает 'quit'. Возможно, вы хотели отменить его, чтобы он был вызван после выхода петли? –

+0

Да, когда я запускаю его, он автоматически закрывается, и я понятия не имею, почему – Potatosauce

ответ

2

Удалите один отступ от вашего звонка quit(). Это гарантирует, что он будет вызван только после выход петли.

Удачи и счастливого кодирования!

+1

Это сработало, спасибо! – Potatosauce

+0

@Potatosauce без проблем. удачи в вашем проекте! –

Смежные вопросы