2016-03-06 97 views
0

我一直在和幾個朋友一起測試pygame,而且我們遇到了一個問題,那就是當玩家踩到尖峯時,應該加載的desthscreen並沒有加載。 if語句肯定是觸發的,並且如果它不在if語句中,創建死亡屏幕的命令將起作用。我們不知道問題是什麼。Death Screen not Loading

如果你想紋理下載他們在這裏:

https://drive.google.com/folderview?id=0B57S6Qow33ZrYS02Rk5ZQnVzNFk&usp=sharing

下面是代碼:

import pygame, sys, time, random 
from pygame.locals import * 
pygame.init() 

#cloud position 
cloudx = -600 
cloudy = 0 
fpsClock = pygame.time.Clock() 


#Dimensions 
TILESIZE=40 
SCREENWIDTH=15 
SCREENHEIGHT=12 

#Display Surface 
Screen = pygame.display.set_mode((SCREENWIDTH*TILESIZE,SCREENHEIGHT*TILESIZE)) 
pygame.display.set_caption("Game") 

#Player-controlled Character 
PLAYER = pygame.image.load("Character1.png").convert_alpha() 
PlayerPos = [8,6] 
SPEED = 0.1 
CanMove = True 
pygame.key.set_repeat(1, 30) 

#Materials 
O = 0 
RFLOOR1 = 1 
RWUP1 = 2 
RWDOWN1 = 3 
RWLEFT1 = 4 
RWRIGHT1 = 5 
RWUPLEFT1 = 6 
RWUPRIGHT1 = 7 
RWDOWNLEFT1 = 8 
RWDOWNRIGHT1 = 9 
RFLOORDOOR1 = 10 
RWUPDOOR1 = 11 
RWDOWNDOOR1 = 12 
RWLEFTDOOR1 = 13 
RWRIGHTDOOR1 = 14 
CLOUD = 15 
SONIC = 16 
DEATHSCREEN = 17 
SPIKES = 18 

#Textures 
textures = {O : pygame.image.load("Black.png"), 
      RFLOOR1 : pygame.image.load("RockFloor1.png"), 
      RWUP1 : pygame.image.load("RockWallUp1.png"), 
      RWDOWN1 : pygame.image.load("RockWallDown1.png"), 
      RWLEFT1 : pygame.image.load("RockWallLeft1.png"), 
      RWRIGHT1 : pygame.image.load("RockWallRight1.png"), 
      RWUPLEFT1 : pygame.image.load("RockWallUpLeft1.png"), 
      RWUPRIGHT1 : pygame.image.load("RockWallUpRight1.png"), 
      RWDOWNLEFT1 : pygame.image.load("RockWallDownLeft1.png"), 
      RWDOWNRIGHT1 : pygame.image.load("RockWallDownRight1.png"), 
      RFLOORDOOR1 : pygame.image.load("RockFloorDoor1.png"), 
      RWUPDOOR1 : pygame.image.load("RockWallUpDoor1.png"), 
      RWDOWNDOOR1 : pygame.image.load("RockWallDownDoor1.png"), 
      RWLEFTDOOR1 : pygame.image.load("RockWallLeftDoor1.png"), 
      RWRIGHTDOOR1 : pygame.image.load("RockWallRightDoor1.png"), 
      CLOUD : pygame.image.load("cloud.png"), 
      SONIC : pygame.image.load("sonic.png"), 
      DEATHSCREEN : pygame.image.load("DeathScreen.png"), 
      SPIKES : pygame.image.load("Spikes.png") 
      } 

#Room1 
room1Tilemap = [[O, O, O,   O,  O,  O,  O,  O,   O,  O,  O,  O,  O,   O, O], 
       [0, O, O,   O,  O,  O,  O,  O,   O,  O,  O,  O,  O,   O, O], 
       [O, O, RWUPLEFT1, RWUP1, RWUP1, RWUP1, RWUP1, RWUPDOOR1, RWUP1, RWUP1, RWUP1, RWUP1, RWUPRIGHT1, O, O], 
       [O, O, RWLEFT1,  RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RWRIGHT1,  O, O], 
       [O, O, RWLEFT1,  RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RWRIGHT1,  O, O], 
       [O, O, RWLEFT1,  RFLOOR1, SPIKES, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, SONIC, RFLOOR1, RWRIGHT1,  O, O], 
       [O, O, RWLEFT1,  RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RWRIGHT1,  O, O], 
       [O, O, RWLEFT1,  RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RWRIGHT1,  O, O], 
       [O, O, RWLEFT1,  RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RFLOOR1, RWRIGHT1,  O, O], 
       [O, O, RWDOWNLEFT1, RWDOWN1, RWDOWN1, RWDOWN1, RWDOWN1, RWDOWN1, RWDOWN1, RWDOWN1, RWDOWN1, RWDOWN1, RWDOWNRIGHT1, O, O], 
       [O, O, O,   O,  O,  O,  O ,  O,   O,  O,  O,  O,  O,   O, O], 
       [O, O, O,   O,  O,  O,  O,  O,   O,  O,  O,  O,  O,   O, O]] 

room1UpBound = 2.5 
room1DownBound = 8.5 
room1LeftBound = 2.5 
room1RightBound = 11.5 

#Tilemap Settings 
tilemap = room1Tilemap 
UpBound = room1UpBound 
DownBound = room1DownBound 
LeftBound = room1LeftBound 
RightBound = room1RightBound 

#Main Loop 
while True: 
    if (PlayerPos[1] > 5 and PlayerPos[1] <6 and PlayerPos[0] > 9 and PlayerPos[0] <10): 
     SPEED = 0.5 
    if (PlayerPos[1] > 5 and PlayerPos[1] <6 and PlayerPos[0] > 4 and PlayerPos[0] <5): 
     Screen.blit(textures[DEATHSCREEN],(0,0)) 

    print (PlayerPos) 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 
     if event.type == KEYDOWN: 
      if CanMove == True: 
       keys = pygame.key.get_pressed() 
       if keys[K_w] and PlayerPos[1] > UpBound: 
        PlayerPos[1] -= SPEED 
       if keys[K_s] and PlayerPos[1] < DownBound: 
        PlayerPos[1] += SPEED 
       if keys[K_a] and PlayerPos[0] > LeftBound: 
        PlayerPos[0] -= SPEED 
       if keys[K_d] and PlayerPos[0] < RightBound: 
        PlayerPos[0] += SPEED 


    for row in range(SCREENHEIGHT): 
     for column in range(SCREENWIDTH): 
      Screen.blit(textures[tilemap[row][column]], (column*TILESIZE,row*TILESIZE)) 



    Screen.blit(PLAYER,(PlayerPos[0]*TILESIZE,PlayerPos[1]*TILESIZE)) 

    Screen.blit(textures[CLOUD].convert_alpha(),(cloudx,cloudy)) 

    cloudx+=1 

    if cloudx > (0): 

     cloudx = -600 
     cloudy = 0 

    pygame.display.update() 
    fpsClock.tick(24) 

回答

0

你只是用瓷磚透支你的屏幕。 只需在循環結束時將您的Deathscreen blit移動到某處並且它「有效」:

#... 
Screen.blit(PLAYER,(PlayerPos[0]*TILESIZE,PlayerPos[1]*TILESIZE)) 

Screen.blit(textures[CLOUD].convert_alpha(),(cloudx,cloudy)) 

if (PlayerPos[1] > 5 and PlayerPos[1] <6 and PlayerPos[0] > 4 and PlayerPos[0] <5): 
    Screen.blit(textures[DEATHSCREEN],(0,0)) 

cloudx += 1 
#... 
+0

感謝您的幫助 –