我知道以前也有人问过类似的问题,我在寻求帮助之前看了看。但它们要么不快,要么太复杂,我无法破译。我的问题不同于How do I shuffle an array in Swift?,因为我已经做了一些工作,比如洗牌。标题实际上不同于所问的问题,即“如何以swift方式随机化或洗牌数组中的元素?”我只对迭代得到的数组感兴趣,在回答一个包含很多内容的问题时,我无法将这部分代码与其他代码分开。也就是说,在这一页上有一些很好的建议,所以我认为像我这样的人将从两页都可用中受益。也许有人可以像我在这里所做的那样在那一页上建立一个互惠的链接。
不可否认,我对swift还不熟悉,也不是任何语言的资深程序员,但请不要以为我来这里寻求帮助,而不是试图自己解决问题。我花了很多时间学习所有基于c语言的基础知识,并阅读developer.apple.com上的swift文献。
所以问题会更明显,我和试图建立的纸牌游戏大战。到目前为止,我已经完成了构造(一个数组)牌组和随机化它(洗牌)。我被困在循环通过52个对象的结果数组,并分配(移动)给两个玩家的手(两个新数组)。我不知道我应该显示多少代码来帮助我,但如果你需要更多,我很乐意提供。请注意,这只是一个练习,练习让我学会如何编写复杂的程序,有些代码,比如随机化函数,不是我的,我在stackoverflow找到的。如果你不只是把能用的代码交给我,我几乎更愿意这样做,但如果用简单的英语提供步骤以便我能找出语法是太麻烦了,那么尽管如此,提供一个例子,我相信我以后会有很多机会编写/使用语法。
还有一点需要注意的是,我现在只在操场上工作,如果我能让所有的代码都正常工作,我会转移到ui上。
提前谢谢你,瑞克

/* Skipping past everything I did to get here,
the array (shuffledDeck) has 52 shuffled cards (elements) in it.
The array is NSMutableArray and contains strings like
2Hearts, 5Spades, 14Clubs, etc. Each suit has 14 cards.*/

shuffledDeck

// create vars to hold shuffled hands
var playerOneHand = []
var playerTwoHand = []

/* Started a for loop to assign cards to each hand
but don't know which method(s) is/are best to use
to remove the first or last card and alternately
append (move) it to the (hopefully) initialized
variables playerOneHand and PlayerTwoHand.
Optionally, since the cards are already shuffled,
I could just split the deck using the range method,
whichever is easier. I tried and failed at both ways.*/

var i = 0
for dealtCard in shuffledDeck {

}

最佳答案

如martin r所述,您可以使用range方法将牌组的前半部分分配给第一个玩家,第二部分分配给第二个玩家,如下所示:

let cards:[String] = ["2♦️","3♦️","4♦️","5♦️","6♦️","7♦️","8♦️","9♦️","T♦️","J♦️","Q♦️","K♦️","A♦️","2♠️","3♠️","4♠️","5♠️","6♠️","7♠️","8♠️","9♠️","T♠️","J♠️","Q♠️","K♠️","A♠️","2♥️","3♥️","4♥️","5♥️","6♥️","7♥️","8♥️","9♥️","T♥️","J♥️","Q♥️","K♥️","A♥️","2♣️","3♣️","4♣️","5♣️","6♣️","7♣️","8♣️","9♣️","T♣️","J♣️","Q♣️","K♣️","A♣️"]

extension Array {
    var shuffled:[T] {
       var elements = self
        for index in 0..<elements.count - 1 {
            swap(&elements[index], &elements[Int(arc4random_uniform(UInt32(elements.count - 1 - index))) + index])
        }
        return elements
    }
}


let cardsShuffled = cards.shuffled

let playerOneHand = cardsShuffled[0...25]
let playerTwoHand = cardsShuffled[26...51]

注意:shuffle扩展是使用这个answer作为参考创建的

关于arrays - 如何在Swift中遍历一个数组并将每个其他元素移动到两个新数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30006817/

10-12 01:22
查看更多