我正开始在 pygame 中制作平台游戏,并遵循一些要求,我打算实现一个二维数组。我对它们不太熟悉,并且在使用 .csv 文件中的数据相应地添加相应的平铺图像时遇到问题。我拥有所有文件,文件中的数字将加载名称为“Tile_[number].png”的相同图块
我尝试检查应该加载什么图像,然后将相应的图像添加到二维数组中,但是当尝试添加文件名时,我得到一个 ValueError: invalidliteral for int() with base 10 : "Tile_36.png"
我不确定如何将文件添加到二维数组中,是否应该使用文件名,或者是否应该使用 pygame.image.load() 函数,或者是否必须提供文件的路径因为我的所有图块都在一个文件夹内。
import pygame
from level import Tilemap
map = Tilemap()
Array = map.initArray("project.csv")
Array = map.PopArray("project.csv")
print(Array)
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
问题出在您的代码中:
int("Tile_" + data[colcounter] + ".png")
它正在尝试将字符串转换为整数,但无法将“Tile_36.png”转换为整数。