是否有更好的方式来创建一个Pygame的tilemap的?

问题描述 投票:1回答:1

当我尝试做块我的瓷砖它说:“列表索引超出范围”。我不知道,因为即时通讯新的这个做什么。

错误信息:

window.blit(tilemap.textures [tilemap.tilemap [行] [列]],(columntilemap.tilesize,rowtilemap.tilesize))IndexError:列表索引超出范围

我试图改变mapwidthmapheight的值,但没有做的伎俩。我有2个脚本。主要和tilemaping。还有是因为,也许一个错误。注(我已在全码initalized pygame的,这样是没有问题的)

卖弄.朋友

import pygame as pg

# Importing files
import constants
import classes
import tilemap

# Functions
def draw_game():
    """ This function draws everything on the screen """

    global window, clock

    # The background
    window.blit(constants.img_background, (0, 0))

    # Tiles
    for row in range(tilemap.mapheight):

        for column in range(tilemap.mapwidth):

            window.blit(tilemap.textures[tilemap.tilemap[row][column]], (column*tilemap.tilesize, row*tilemap.tilesize))




    # Updating
    clock.tick(60)
    pg.display.update()

提了马匹.朋友

import pygame as pg
import constants

GRASS = 0
WATER = 1




textures = {
    GRASS : pg.image.load("image\\grass.png"),
    WATER : pg.image.load("image\\water.png")

    }


tilemap = [
    [GRASS, GRASS, GRASS, WATER],
    [GRASS, GRASS, WATER, GRASS],
    [GRASS, WATER, GRASS, GRASS],
    [WATER, GRASS, GRASS, GRASS]    
    ]



tilesize = 40
mapwidth = 2
mapheight = 5
python pygame tiles
1个回答
1
投票

tilemap是一个列表。列表有4种元素和列表中的每个元素是具有4个元素的列表,太。

 tilemap = [
       [GRASS, GRASS, GRASS, WATER],
       [GRASS, GRASS, WATER, GRASS],
       [GRASS, WATER, GRASS, GRASS],
       [WATER, GRASS, GRASS, GRASS]
    ]

因此,“宽度”和所述tilemap的的“高度”是4:

mapwidth = 4
mapheight = 4

但你并不需要一个变量可言,因为你可以得到的名单由len()的长度:

for row in range( len(tilemap.tilemap) ):

    for column in range( len(tilemap.tilemap[row]) ):

        window.blit(tilemap.textures[tilemap.tilemap[row][column]],
                    (column*tilemap.tilesize, row*tilemap.tilesize))

如果你想要把更多的瓷砖在地图上,那么它足以增加更多的瓷砖tilemap:

EG

tilemap = [
       [WATER, WATER, WATER, WATER, WATER, WATER],
       [WATER, GRASS, GRASS, GRASS, WATER, WATER],
       [WATER, GRASS, GRASS, WATER, GRASS, WATER],
       [WATER, GRASS, WATER, GRASS, GRASS, WATER],
       [WATER, WATER, GRASS, GRASS, GRASS, WATER],
       [WATER, WATER, WATER, WATER, WATER, WATER]
    ]
mapwidth = len(tilemap.tilemap)
mapheight = len(tilemap.tilemap[0])
© www.soinside.com 2019 - 2024. All rights reserved.