美文网首页
《The Swift Programming Language》

《The Swift Programming Language》

作者: 凛冬将至_1990 | 来源:发表于2017-11-09 15:08 被阅读13次
    snakesAndLadders_2x.png

    游戏的规则如下:

    1. 游戏盘面包括 25 个方格,游戏目标是达到或者超过第 25 个方格;
    2. 每一轮,你通过掷一个六面体骰子来确定你移动方块的步数,移动的路线由上图中横向的虚线所示;
    3. 如果在某轮结束,你移动到了梯子的底部,可以顺着梯子爬上去;
    4. 如果在某轮结束,你移动到了蛇的头部,你会顺着蛇的身体滑下去。
    import Foundation
    
    let finalSquare = 25
    var board = [Int](repeating: 0, count: finalSquare + 1)
    board[03] = +08; board[06] = +11; board[09] = +09; board[10] = +02
    board[14] = -10; board[19] = -11; board[22] = -02; board[24] = -08
    
    // 开始游戏
    var square = 0
    var diceRoll = 0
    while square < finalSquare {
        // 掷骰子
        diceRoll = Int(arc4random_uniform(6) + 1)
        print(diceRoll)
        // 根据点数移动
        square += diceRoll
        if square < board.count {
            // 如果玩家还在棋盘上,顺着梯子爬上去或者顺着蛇滑下去
            square += board[square]
        }
    }
    print("Game over!")
    

    或者

    repeat {
        // 顺着梯子爬上去或者顺着蛇滑下去
        square += board[square]
        // 掷骰子
        diceRoll = Int(arc4random_uniform(6) + 1)
        print(diceRoll)
        // 根据点数移动
        square += diceRoll
    } while square < finalSquare
    

    新的规则: 为了获胜,你必须刚好落在第 25 个方块中。

    gameLoop: while square != finalSquare {
        diceRoll = Int(arc4random_uniform(6) + 1)
        switch square + diceRoll {
        case finalSquare:
            // 骰子数刚好使玩家移动到最终的方格里,游戏结束。
            break gameLoop
        case let newSquare where newSquare > finalSquare:
            // 骰子数将会使玩家的移动超出最后的方格,那么这种移动是不合法的,玩家需要重新掷骰子
            continue gameLoop
        default:
            // 合法移动,做正常的处理
            square += diceRoll
            square += board[square]
        }
    }
    print("Game over!")
    

    相关文章

      网友评论

          本文标题:《The Swift Programming Language》

          本文链接:https://www.haomeiwen.com/subject/foapmxtx.html