2017-05-23 4 views
0

私はpygameプロジェクトで助けが必要です。今は、10x10グリッドの異なる色の四角形を表示することになっていますが、黒色で表示されます。エラーメッセージは表示されません。Pygameは黒色の異なる色の四角形の10x10グリッドを表示しています

私のコードは、誰かが私が間違っていることを教えてくれますか?

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


FPS = 30 

BLACK = (0, 0, 0) 
WHITE = (255, 255, 255) 
GRAY = (147, 147, 147) 
ORANGE = (255, 165, 0) 
BGCOLOR = BLACK 
TEXTCOLOR = WHITE 

DISPLAYSURF = pygame.display.set_mode((400, 400)) 

UP = 'up' 
DOWN = 'down' 
LEFT = 'left' 
RIGHT = 'right' 

FPSCLOCK = pygame.time.Clock() 

#Pygame works where the graph has no negative 
#The Y axis also starts at 0 ON TOP then GOES DOWN 
XMAPCORD = 0 
YMAPCORD = 0 

def drawWall(): 
    pygame.draw.rect(DISPLAYSURF, BLACK, (XMAPCORD, YMAPCORD, 40, 40), 0) 
def drawStone(): 
    pygame.draw.rect(DISPLAYSURF, GRAY, (XMAPCORD, YMAPCORD, 40, 40), 0) 
def drawGoal(): 
    pygame.draw.rect(DISPLAYSURF, ORANGE, (XMAPCORD, YMAPCORD, 40, 40), 0) 

pygame.display.set_caption('Dungeon Escape') 
currentLevel = [ 
     'w','w','w','w','g','g','w','w','w','w', 
     'w','s','s','s','s','s','s','s','s','w', 
     'w','s','s','s','s','s','s','s','s','w', 
     'w','s','s','s','s','s','s','s','s','w', 
     'w','s','s','s','s','s','s','s','s','w', 
     'w','s','s','s','s','s','s','s','s','w', 
     'w','s','s','s','s','s','s','s','s','w', 
     'w','s','s','s','s','s','s','s','s','w', 
     'w','s','s','s','s','s','s','s','s','w', 
     'w','w','w','w','w','w','w','w','w','w' 
] 

playerPosition = currentLevel 

for i in range(0,100): 
    if currentLevel[i] == 'w': 
     drawWall() 
     XMAPCORD = XMAPCORD + 40 
    if currentLevel[i] == 's': 
     drawStone() 
     XMAPCORD = XMAPCORD + 40 
    elif currentLevel[i] == 'g': 
     drawGoal() 
     XMAPCORD = XMAPCORD + 40 
    if XMAPCORD == 400 and YMAPCORD == 0: 
     break 
    elif i % 10 == 0: 
     YMAPCORD = YMAPCORD + 40 
     XMAPCORD = 0 

running = True 
while running: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.display.quit() 
      sys.exit() 

FPS = 30 
fpsClock = pygame.time.Clock() 
fps = True 
while fps: 
    pygame.display.update() 
    fpsClock.tick(FPS) 

pygame.display.update() 
+2

あなたはここに多くの情報を与えていません。それは何を生み出すのですか?そしてあなたはそれをデバッグしましたか? – Carcigenicate

+0

私はそれが10x10の多色タイルのセットを生成したい、リストはそれがどのように見えるはずですが、実行したときに黒い画面が表示されます。 IDLEのデバッグではエラーはないと言いますが、私はまだpygameには新しく、助けていただければ幸いです。 – Spencer

答えて

1

それが出て壊す方法がありませんので、あなたのプログラム全体が最初whileループで立ち往生しています。あなたが見ることができます:

running = True 
while running: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.display.quit() 
      sys.exit() 

唯一の方法は、終了することです。

代わりに行うべきことは、whileループの両方を組み合わせることです。

running = True 
FPS = 30 
fpsClock = pygame.time.Clock() 
while running: 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.display.quit() 
      sys.exit() 
    pygame.display.update() 
    fpsClock.tick(FPS) 

サイドノート:それはpygameのを使用して、スクリプトの途中でsys.exit()を呼び出すことをお勧めしません。プログラムを正常に終了させるには、代わりにrunning = Falseに変更する必要があります。

もう1つの注意点:2つのfpsクロックは必要ありません。最初のものを取り除く:FPSCLOCK = pygame.time.Clock()。そして、playerPosition = currentLevelはあなたのコードのどこにも使われていないので役に立たない。

+0

本当にありがとうございます、なぜディスプレイが動作していないのか分かりました。私はあなたの助けに感謝します。 – Spencer

関連する問題