【问题标题】:Two dimensional array in swift (comparing to 1)swift中的二维数组(与1相比)
【发布时间】:2015-08-04 19:00:29
【问题描述】:

我正在尝试为我的 Breakout 游戏创建关卡系统,但由于一个错误困扰我,我无法完成。

let LEVEL_1 : [[Int]] = [
    [0,0,0,0,0,0,0,0],
    [0,0,0,0,0,0,0,0],
    [0,0,0,1,1,0,0,0],
    [0,0,0,1,1,0,0,0],
    [0,1,1,1,1,1,1,0],
    [0,1,1,1,1,1,1,0],
    [0,0,0,1,1,0,0,0],
    [0,0,0,1,1,0,0,0],
    [0,0,0,0,0,0,0,0],]

是层次,然后是方法

   func buildLevel(level: [Int])
{
    let offset:Float = (Float(self.frame.size.width) - (Float(brickWidth) * Float(numberOfBricks) + padding * (Float(numberOfBricks) - 1) ) ) / 2
    var len = level.count

    for(var i = 0; i < len; i++){

        var yOffset:CGFloat{
            switch i {
            case 1:
                return self.frame.size.height * 0.8
            case 2:
                return self.frame.size.height * 0.6
            case 3:
                return self.frame.size.height * 0.4
            default:
                return 0
            }
        }

        for(var j = 0; j < W_LEN; j++){
            if level[i][j] == 1{

                let brick = SKSpriteNode(imageNamed: "brick")

                let calc1:Float = Float(i) - 0.5
                let calc2:Float = Float(j) - 1

                brick.position = CGPointMake(CGFloat(calc1 * Float(brick.frame.size.width) + calc2 * padding + offset), yOffset)
                self.addChild(brick)
                brick.physicsBody = SKPhysicsBody(rectangleOfSize: brick.frame.size)
                brick.physicsBody?.allowsRotation = false
                brick.physicsBody?.friction = 0
                brick.name = brickCategoryName
                brick.physicsBody?.categoryBitMask = ColliderCategory.brick.rawValue




            }
        }
    }
}

错误:“不能用 int 类型的索引为 int 类型的值下标” 出现在这里: if level[i][j] == 1{

知道如何解决该错误并让我的关卡正常工作吗?

【问题讨论】:

  • 也许你想要func buildLevel(level: [[Int]])

标签: arrays swift multidimensional-array swift2


【解决方案1】:

查看您的代码。你是说:

func buildLevel(level: [Int])

所以level 是一个 维的 Int 数组。因此,以后再说level[i][j] 是没有意义的。 level[1] 是一个 Int,您不能在 Int 之后说 [j](下标)(正是错误消息告诉您的内容)。

【讨论】:

  • 非常感谢马特。有时人们过于关注中心而忘记了边缘。 :)
猜你喜欢
  • 2013-05-19
  • 2022-01-19
  • 2014-09-27
  • 2012-05-01
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
相关资源
最近更新 更多