Pygame显示10x10不同颜色正方形的网格,如b所示

2024-10-01 15:35:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个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()

Tags: rectimporteventifdefdisplaysyspygame
1条回答
网友
1楼 · 发布于 2024-10-01 15:35:53

您的整个程序都被困在第一个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,让程序正常退出。你知道吗

另一个旁注:你不需要两帧时钟。去掉第一个:FPSCLOCK = pygame.time.Clock()。而且playerPosition = currentLevel是没有用的,因为代码中没有任何地方使用它。你知道吗

相关问题 更多 >

    热门问题