【问题标题】:How to build a 2D board using Swift?如何使用 Swift 构建 2D 板?
【发布时间】:2018-05-02 13:17:52
【问题描述】:

我想创建一个 2D 游戏板(如棋盘),每个方格内部都有一个值 (Int = 1)。此棋盘最初有 9 个方格 (3x3)。

然后我需要一个从吟游诗人中心开始的玩家,当我将玩家移动到棋盘边缘时,它会展开。

示例:玩家到达 [3,3] 方格,棋盘变为 4x4 棋盘。

此外,当玩家移动时,它会改变每个方格内的值,从 0 变为 1。

这是我目前所拥有的

//Variables to get the player position and expand the board
let initialSize = 3
var newValueX = 0
var newValueY = 0
var newPlayerX = 0
var newPlayerY = 0
//Board
var board= [[Int]]()

struct Player {
    var X = 0
    var Y = 0
}

func expandBoard (){
    for k in 0..<9{
        for i in 0..<initialSize {
            for j in 0..<initialSize {
                array[k].append([i,j])
            }
        }
    }
}

func movePlayer(){
    var player = Player() //this goes to viewDidLoad
    player.X = newPlayerX
    player.Y = newPlayerY
}

假装输出的示例: 玩家移动到 [0,3] 并将平方值从 1 更改为 0。

我怎样才能正确地做到这一点?

编辑:

我有

class Array2D<T> {
    var columns = 1//: Int
    var rows = 1//: Int

    var array: Array<T?>

     init(columns: Int, rows: Int) {
        self.columns = columns
        self.rows = rows

        array = Array<T?>(repeating: nil, count:rows * columns)
    }

    subscript(column: Int, row: Int) -> T? {
        get {
            return array[(row * columns) + column]
         }
        set(newValue) {
            array[(row * columns) + column] = newValue
        }
     }
}

func move(PX: Int, PY: Int){
    if (board[PX, PY] == true){
        moveCount += 1
        board[PX, PY] = false
    }
    if (PX == board.rows.magnitude){
        board.rows += 1
    }
    if (PY == board.columns.magnitude){
        board.columns += 1
    }
}

当我运行时,我从下标在线(返回数组 [(行 * 列)+ 列])得到“线程 1:致命错误:索引超出范围”。 任何想法我该如何解决这个问题?

【问题讨论】:

  • 你的问题到底是什么?
  • 如果 (0,0) 上的用户想要移动到 (-1,-1) 会发生什么情况,是否允许?
  • 是的,从 (0,0) 到 (-1,-1) 是允许的
  • @user3664043 stackoverflow 不是为您完成工作的。我们很乐意帮助您解决您可能遇到的具体问题。
  • @user3664043 我建议将其分解成更小的部分并尝试逐个解决。然后,如果您需要帮助解决这些问题,请在此处提问。

标签: ios swift


【解决方案1】:

如果您不想使用 SpriteKit,UICollectionView 将是另一个简单的选择。

【讨论】:

    【解决方案2】:

    我建议使用 SpriteKit,它有一个名为“Tile Map”的元素,可以满足您的要求,here is a tutorial 可以提供帮助。

    【讨论】:

    • 虽然我不需要对此进行可视化表示,但我发现本教程非常棒!将尽快尝试。 ty
    猜你喜欢
    • 2014-08-05
    • 2016-12-17
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多