Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用平铺和pytmx在Pygame中显示平铺地图?_Python_Python 2.7_Pygame_Tiled - Fatal编程技术网

Python 如何使用平铺和pytmx在Pygame中显示平铺地图?

Python 如何使用平铺和pytmx在Pygame中显示平铺地图?,python,python-2.7,pygame,tiled,Python,Python 2.7,Pygame,Tiled,我知道有一个类似的问题,但答案不够具体,无法在我的案例中发挥作用 我试图创建一个程序,可以显示在平铺中创建的平铺地图,并使用pytmx上传到Pygame中。我唯一的问题是在Pygame中将图像快速显示在屏幕上 这是我一直收到的错误: 回溯(最近一次呼叫最后一次): 文件“C:\Users\b\Desktop\Frozed Map Textures\test.py”,第32行,在 blit(图像[i],(x*32,y*32)) TypeError:参数1必须是pygame.Surface,而不是N

我知道有一个类似的问题,但答案不够具体,无法在我的案例中发挥作用

我试图创建一个程序,可以显示在平铺中创建的平铺地图,并使用pytmx上传到Pygame中。我唯一的问题是在Pygame中将图像快速显示在屏幕上

这是我一直收到的错误: 回溯(最近一次呼叫最后一次): 文件“C:\Users\b\Desktop\Frozed Map Textures\test.py”,第32行,在 blit(图像[i],(x*32,y*32)) TypeError:参数1必须是pygame.Surface,而不是None

如果有人知道如何解决这个问题,我将非常感激!谢谢你的帮助

代码如下:

import pygame
from pytmx import load_pygame
import random


white = (255,255,255)


#create window
screenSize = (800,600)
screen = pygame.display.set_mode(screenSize)
pygame.display.set_caption("GameName")
screen.fill(white)


gameMap = load_pygame("Frozen.tmx")


#creates list of single tiles in first layer
images = []
for y in range(50):
    for x in range(50):
        image = gameMap.get_tile_image(x,y,0)
        images.append(image)


#displays tiles in locations
i = 0
for y in range(50):
    for x in range(50):
        screen.blit(images[i],(x*32,y*32))
        i += 1


#main loop
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    pygame.display.flip()

pygame.quit()

我对pytmx不是很熟悉,但我认为问题在于变量
I
在第一个
for
-循环中从
0
运行到
2600
(在
images
列表中有2600个项目/图像/磁贴)。但是,当您创建平铺位置列表(
imageLocs
)时,
i
仅从
0
运行到
49
,因此您有一个不同位置的列表
50

这意味着您没有足够的位置放置每个磁贴

除此之外,在python中,对于i In rang(value)-循环,您不需要增加
中的任何变量,因为
i
运行时会抛出(即分配给)
range()
函数返回的所有值

您可以更新代码以避免此问题:

#Original code    

#create a list of 2600 single tiles in first layer
images = []

for y in range(50):
    for x in range(50):
        image = gameMap.get_tile_image(x,y,0)
        images.append(image)

#blit all tiles onto the screen
i = 0 #runs from 0 to 2600

for y in range(50):
    for x in range(50):
        screen.blit(images[i],(x * 32, y * 32))
        i += 1

#Orginal code

我希望这有帮助:)

顺便说一句,我运行的是64位Windows 8。我不确定这是否会对任何事情产生影响。请您告诉我们当您尝试blit时会发生什么。我会的。我还没试过。在看到你的答案之前,我不得不离开这个城市。我更新了我的代码,并添加了我收到的错误消息。你知道问题是什么吗?我就是找不到为什么列表索引提供类型None。嘿!忽略我最后的评论。原来我的地图文件里只有一个空格。。。。谢谢你的时间!你的建议真的让我的代码看起来不错!我想我是0到2500(即50*50)