首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >派克游戏显示10×10不同颜色的方格为黑色。

派克游戏显示10×10不同颜色的方格为黑色。
EN

Stack Overflow用户
提问于 2017-05-23 23:33:09
回答 1查看 373关注 0票数 0

我需要人帮我做一个游戏项目。现在,它应该显示一个由不同颜色的方块组成的10x10网格,但是它只显示黑色。它不会给我任何错误信息。

这是我的密码,有人能告诉我我做错了什么吗?

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-24 00:17:11

您的整个程序被困在第一个while循环,因为它没有办法爆发。如你所见:

代码语言:javascript
复制
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.display.quit()
            sys.exit()

离开的唯一方法就是离开。

您应该做的是将两个while循环组合起来。

代码语言:javascript
复制
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并不有用,因为在代码中没有任何地方使用它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44146644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档