local function move(map, startX, startY, dX, dY) local targetX, targetY = startX + dX, startY + dY if not map[targetX][targetY] then return startX, startY; end if map[targetX][targetY].isBox then local slideX, slideY = targetX + dX, targetY + dY if not (map[slideX] and map[slideX][slideY] and map[slideX][slideY].isWalkable) then return startX, startY; end local empty, box = map[slideX][slideY], map[targetX][targetY] local sprite = tileBlox[box.id] sprite.x, sprite.y = empty.x, empty.y empty.id = box.id empty.isBox = true empty.isWalkable = false box.id = 0 box.isWalkable = true box.isBox = false end if map[targetX][targetY].isWalkable then local target, origin = map[targetX][targetY], map[startX][startY] hero.x, hero.y = target.x, target.y target.isHero = true target.isWalkable = false origin.isHero = false origin.isWalkable = true return targetX, targetY end return startX, startY end
Comments