无论我尝试使用Lua运行此代码时都会出现错误:Error Map.lua:107: attempt to call method 'makepyramid' (a nil value)


Map = Class{}

TILE_BRICK = 1
TILE_EMPTY = -1
POLE_TOP = 8
POLE_MIDDLE = 12
POLE_BOTTOM = 16
FLAG_TILE = 13
local SCROLL_SPEED = 62
function Map:init()

    self.spritesheet = love.graphics.newImage('graphics/spritesheet.png')
    self.sprites = generateQuads(self.spritesheet, 16, 16)
    self.music = love.audio.newSource('sounds/music.wav', 'static')

    self.tileWidth = 16
    self.tileHeight = 16
    self.mapWidth = 30
    self.mapHeight = 28
    self.tiles = {}
    self.flag = self.mapWidth - 3
    self.pyramid = self.mapWidth - 4
    self.pyramidHeight = 8
    self.gravity = 15
    -- 将玩家与地图关联
    self.player = Player(self)

    -- 相机偏移
    self.camX = 0
    self.camY = -3
    self.mapWidthPixels = self.mapWidth * self.tileWidth
    self.mapHeightPixels = self.mapHeight * self.tileHeight
    for y = 1, self.mapHeight do
        for x = 1, self.mapWidth do
            self:setTile(x, y, TILE_EMPTY)
        end
    end
    local x = 1
    while x < self.mapWidth do
        if x == self.flag then
            self:setTile(x, (self.mapHeight / 2) - 3, POLE_TOP)
            self:setTile(x, (self.mapHeight / 2) - 2, POLE_MIDDLE)
            self:setTile(x, (self.mapHeight / 2) - 1, POLE_BOTTOM)
            self:setTile(x+1, (self.mapHeight / 2) - 3, FLAG_TILE)
            for y = self.mapHeight / 2, self.mapHeight do
                self:makepyramid(x, y, TILE_BRICK)
            end
            self:setTile(self.flag)
            x = x+1
        end

这是我编写的代码,它需要其他文件的支持才能运行,但核心问题存在于此代码中:很可能是在“Map init()”中的“makepyramid”。请建议我可以做出哪些可能的更改以使这段代码正常工作。如果需要更多代码片段来尝试解决问题,请在评论中说明。

点赞