使用二维数组制作地图

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

我正开始在 pygame 中制作平台游戏,并遵循一些要求,我打算实现一个二维数组。我对它们不太熟悉,并且在使用 .csv 文件中的数据相应地添加相应的平铺图像时遇到问题。我拥有所有文件,文件中的数字将加载名称为“Tile_[number].png”的相同图块

我尝试检查应该加载什么图像,然后将相应的图像添加到二维数组中,但是当尝试添加文件名时,我得到一个 ValueError: invalidliteral for int() with base 10 : "Tile_36.png"

我不确定如何将文件添加到二维数组中,是否应该使用文件名,或者是否应该使用 pygame.image.load() 函数,或者是否必须提供文件的路径因为我的所有图块都在一个文件夹内。

主要.py

import pygame

from level import Tilemap


map = Tilemap()
Array = map.initArray("project.csv")
Array = map.PopArray("project.csv")
print(Array)

level.py

import pygame


class Tilemap:
    def __init__(self):
        self.tile_size = 32
        self.start_x = 0
        self.start_y = 0

    def initArray(self, filename):
        cols = 0
        rows = 0
        file = open(filename,"r")

        for line in file:
            collums = line.split(",")
            cols = len(collums)

            rows += 1

        self.tiles = [[0] * cols for i in range(rows)]
        file.close()
        

    def PopArray(self, filename):
        file = open(filename, "r")
        rowcounter = 0
        colcounter = 0
        for line in file:
            colcounter = 0
            data = line.split(",")
            for x in range(len(data)):

                if int(data[colcounter]) == -1:
                    self.tiles[rowcounter][colcounter] = -1

                elif int(data[colcounter]) >=0 and int(data[colcounter])< 10:
                    self.tiles[rowcounter][colcounter] = int("Tile_" + data[colcounter] + ".png")

                else:
                    self.tiles[rowcounter][colcounter] = int("Tile_" + data[colcounter] + ".png") 
                colcounter += 1
            rowcounter += 1

        return self.tiles
                  
  
          
        file.close()
        return self.tiles

python multidimensional-array
1个回答
0
投票

问题出在您的代码中:

int("Tile_" + data[colcounter] + ".png")

它正在尝试将字符串转换为整数,但无法将“Tile_36.png”转换为整数。

© www.soinside.com 2019 - 2024. All rights reserved.