有一个类似于此的问题,但persons问题与我试图实现pytmx的方式不同,所以这是我第一次使用tiled,或者pytmx,我在处理pytmx上的文档时遇到了麻烦。
我只是不能让代码正确地执行。gameScreen.blit(image, position)中的位置参数是什么?在这个模块中所引用的层参数是什么?
import pygame
import time
import random
import pyganim
import sys
import os
import pytmx
from pytmx import load_pygame
pygame.init()
display_width = 800
display_height = 800
white = (255, 255, 255)
gameScreen = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('2d Game')
clock = pygame.time.Clock()
def game_loop():
gameExit = False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
gameMap = pytmx.TiledMap('gamemap.tmx')
image = gameMap.get_tile_image(0, 0, 0)
gameScreen.blit(image, position)
pygame.display.update()
clock.tick(30)
game_loop()
pygame.quit()
quit()发布于 2016-09-20 00:58:59
这个代码有很多错误。-是你写的还是从别的地方弄来的?在尝试使用平铺地图这样高级的事情之前,您可能需要确保您更好地理解Pygame。另外,这是整个代码吗,还是你遗漏了一些代码?
为了解决最大的问题:
1)每帧都要加载贴图,这是一个很大的问题:
gameMap = pytmx.TiledMap('gamemap.tmx')您只需要加载一次地图数据。在游戏循环之前就这么做。
2)代码中唯一发生的绘图是:
image = gameMap.get_tile_image(0, 0, 0)
gameScreen.blit(image, position)这将在地图第0层的位置(0,0)获取瓷砖,并在一个名为" position“的变量(似乎不存在)指定的坐标处使用blits。因此,即使它能工作,它也只会在屏幕上画一个瓷砖。
3)“所引用的图层参数是什么?”
你以前用过瓷砖吗?“平铺”是一个地图编辑器,它允许您在多个层中绘制,这样您就可以在其他瓷砖的基础上使用瓷砖。0层将是您地图的第一个(底部)层。
4)如果您使用的是PyTMX,那么您需要使用load_pygame()函数,它看起来像是导入的,但没有使用。事实上,有大量的进口产品--它们都是为了什么?
这段代码的一个简单工作版本将加载映射,然后将屏幕上的所有瓷砖混合起来,如下所示:
import pygame
import pytmx
pygame.init()
display_width = 800
display_height = 800
white = (255, 255, 255)
gameScreen = pygame.display.set_mode((display_width, display_height))
pygame.display.set_caption('2d Game')
clock = pygame.time.Clock()
# load map data
gameMap = pytmx.load_pygame('gamemap.tmx')
def game_loop():
gameExit = False
while not gameExit:
for event in pygame.event.get():
if event.type == pygame.QUIT:
gameExit = True
# draw map data on screen
for layer in gameMap.visible_layers:
for x, y, gid, in layer:
tile = gameMap.get_tile_image_by_gid(gid)
gameScreen.blit(tile, (x * gameMap.tilewidth,
y * gameMap.tileheight))
pygame.display.update()
clock.tick(30)
game_loop()
pygame.quit()注意,这不是最好的方法,但它是最简单的。我鼓励你寻找一些游戏和PyTMX教程和工作的方式。在同一时间尝试学习太多的新东西是非常令人沮丧的。从PyTMX文档中可以看出,它并不是真正针对初学者的。
https://stackoverflow.com/questions/39579000
复制相似问题