2015-11-04 123 views
0

我做了一些研究,看看我是否能解决问题这种方式,但似乎并没有找到任何解决我的问题。我发现这两个:Why isn't my pygame display displaying anything?Confused at why PyGame display's a black screen。我试图解决我的问题,是什么在评论中劝,但它没有工作,或该问题的原因是比我的不同。pygame的显示器的黑屏

当我运行代码的pygame的窗口中显示,但仅仅是全黑的,但是没有错误调用。

所以这里是代码(可能会有点长)。

import pygame 
import time 
import random 

pygame.init() 

display_width = 700 
display_height = 900 

player_width = 140 
player_height = 100 

gameDisplay = pygame.display.set_mode((display_width, display_height)) 
pygame.display.set_caption('Baby shower') 
clock = pygame.time.Clock() 

greenkidimg = pygame.image.load('kid green.png') 
bluekidimg = pygame.image.load('kid blue.png') 
redkidimg = pygame.image.load('kid red.png') 
catcherimg = pygame.image.load('catcher.png') 
background = pygame.image.load('background.png') 
#image loads 

def player(x,y): 
    gameDisplay.blit(catcherimg,(x,y)) 

def bluekid(bluex, bluey, bluew, blueh): 
    gameDisplay.blit(bluekidimg, (bluex, bluey)) 

def redkid(redx, redy, redw, redh): 
    gameDisplay.blit(redkidimg, (redx,redy)) 

def greenkid(greenx, greeny, greenw, greenh): 
    gameDisplay.blit(greenkidimg(greenx, greeny)) 

def game_loop(): 

    x = (display_width*0.45) 
    y = (display_height*0.8) 

    x_change = 0 

    blue_width = 66 
    bluex_start = random.randrange (0, display_width-blue_width) 
    bluey_start = -600 
    blue_speed = 15 
    blue_height = 78 
    green_width = 66 
    greenx_start = random.randrange (0, display_width-green_width) 
    greeny_start = -600 
    green_speed = 15 
    green_height = 78 
    red_width = 66 
    redx_start = random.randrange (0, display_width-red_width) 
    redy_start = -600 
    red_speed = 15 
    red_heigth = 78 
    #greenkid,redkid,bluekid-start,speed,h/w 

    gameExit = False 

    while not gameExit: 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       pygame.quit() 
       quit() 

      if event.type == pygame.KEYDOWN: 
       if event.type == pygame.K_LEFT: 
        x_change = -20 

       elif event.type == pygame.K_RIGHT: 
        x_change = 20 

      if event.type == pygame.KEYUP: 
       if event.type == pygame.K_LEFT or pygame.K_RIGHT: 
        x_change = 0 

    x += x_change 

    gameDisplay.blit(background(0,0)) 
    player(x,y) 
    bluekid(bluex, bluey, bluew, blueh) 
    redkid(redx, redy, redw, redh) 
    greenkid(greenx, greeny, greenw, greenh) 
    #display 

    pygame.display.update() 
    clock.tick(30) 

game_loop() 
pygame.quit() 
quit() 
+1

它看起来并不像你的渲染代码实际上在你的游戏循环中,检查你的缩进。 (编辑:它在游戏循环的方法,但不是在while循环) –

+0

喔上苍我所拥有的那部分代码一直盯着2小时,并没有注意到它,非常感谢@AndyM! –

+0

np - 我会作为答案发布 –

回答

0

在游戏圈呈现逻辑只需要缩进到它里面的while循环的一部分,就像这样:

while not gameExit: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      quit() 

     if event.type == pygame.KEYDOWN: 
      if event.type == pygame.K_LEFT: 
       x_change = -20 

      elif event.type == pygame.K_RIGHT: 
       x_change = 20 

     if event.type == pygame.KEYUP: 
      if event.type == pygame.K_LEFT or pygame.K_RIGHT: 
       x_change = 0 

    x += x_change 

    gameDisplay.blit(background(0,0)) 
    player(x,y) 
    bluekid(bluex, bluey, bluew, blueh) 
    redkid(redx, redy, redw, redh) 
    greenkid(greenx, greeny, greenw, greenh) 
    pygame.display.update() 
    clock.tick(30)