我知道有一个类似的问题,但是答案不够具体,不足以对我的情况有用。
我正在尝试创建一个程序,该程序可以显示在Tiled中创建并使用pytmx上传到Pygame的平铺地图。我唯一遇到的问题是在Pygame中将图像拖到屏幕上。
这是我一直收到的错误:追溯(最近一次通话最近):文件“ C:\ Users \ b \ Desktop \ Frozen Map Textures \ test.py”,位于screen.blit(images [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不太熟悉,但是我认为问题在于变量在第一个-loop中i
从0
到运行(列表中有2600个项目/图像/图块)。但是当你创建瓦片位置(名单),仅运行到,让你有一个名单不同的位置。2600
for
images
imageLocs
i
0
49
50
这意味着您没有每个图块的“足够”位置。
除此之外,您不需要for i in rang(value)
在python的-loop中增加任何变量,因为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
我希望这有帮助 :)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句