我需要人帮我做一个游戏项目。现在,它应该显示一个由不同颜色的方块组成的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()发布于 2017-05-24 00:17:11
您的整个程序被困在第一个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,以使程序正常退出。
另一个额外的注意事项:你不需要两个fps时钟。摆脱第一个问题:FPSCLOCK = pygame.time.Clock()。而且playerPosition = currentLevel并不有用,因为在代码中没有任何地方使用它。
https://stackoverflow.com/questions/44146644
复制相似问题