IOS Swift 2.0洗牌功能
Noob在这里,我试图创建一个纸牌游戏,使用52张标准牌组。下面是我想制作成func的代码,这样我就不必每次都手动写出它。我创造了5个不同的球员,所以这将被复制到其他球员IOS Swift 2.0洗牌功能,ios,swift,function,Ios,Swift,Function,Noob在这里,我试图创建一个纸牌游戏,使用52张标准牌组。下面是我想制作成func的代码,这样我就不必每次都手动写出它。我创造了5个不同的球员,所以这将被复制到其他球员 func firstPlayerCardShuffle() { var firstPlayerCard1Num = (Int(arc4random_uniform(UInt32(13)) + 2)) var firstPlayerCard1Suit = suits[Int(arc4random_uniform(UInt32(s
func firstPlayerCardShuffle() {
var firstPlayerCard1Num = (Int(arc4random_uniform(UInt32(13)) + 2))
var firstPlayerCard1Suit = suits[Int(arc4random_uniform(UInt32(suits.count)))]
var firstPlayerCard1 = "\(firstPlayerCard1Num) of \(firstPlayerCard1Suit)"
var firstPlayerCard2Num = (Int(arc4random_uniform(UInt32(13)) + 2))
var firstPlayerCard2Suit = suits[Int(arc4random_uniform(UInt32(suits.count)))]
var firstPlayerCard2 = "\(firstPlayerCard2Num) of \(firstPlayerCard2Suit)"
return(firstPlayerCard1,firstPlayerCard2)
}
有人能告诉我我错过了什么吗 不是对你问题的直接回答,但我想你会想要这样的答案:
enum Number: String {
case Two = "two"
case Three = "three"
case Four = "four"
case Five = "five"
case Six = "six"
case Seven = "seven"
case Eight = "eight"
case Nine = "nine"
case Ten = "ten"
case Jack = "jack"
case Queen = "queen"
case King = "king"
case Ace = "ace"
static var randomNumber: Number {
return [Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, Ace][Int(arc4random_uniform(13))]
}
}
enum Suit: String {
case Spades = "spades"
case Hearts = "hearts"
case Diamonds = "diamonds"
case Clubs = "clubs"
static var randomSuit: Suit {
return [Spades, Hearts, Diamonds, Clubs][Int(arc4random_uniform(4))]
}
}
struct Card: CustomStringConvertible, Equatable {
let number: Number
let suit: Suit
var description: String {
return "\(number.rawValue) of \(suit.rawValue)"
}
static var randomCard: Card {
return Card(number: Number.randomNumber, suit: Suit.randomSuit)
}
static func randomCards(count count: Int) -> [Card] {
guard count > 0 else {
return []
}
guard count <= 52 else {
fatalError("There only are 52 unique cards.")
}
let cards = randomCards(count: count - 1)
while true {
let card = randomCard
if !cards.contains(card) {
return cards + [card]
}
}
}
}
func == (left: Card, right: Card) -> Bool {
return left.number == right.number && left.suit == right.suit
}
let randomCards = Card.randomCards(count: 5)
print(randomCards)
// prints five random cards
枚举编号:字符串{
案例二=“两个”
案例三=“三”
案例四=“四”
案例五=“五”
案例六=“六”
案例七=“七”
案例八=“八”
案例九=“九”
案例十=“十”
case Jack=“杰克”
case Queen=“Queen”
case King=“King”
案例Ace=“Ace”
静态var随机数:数字{
返回[2,三,四,五,六,七,八,九,十,杰克,皇后,King,ACE] [INT(ARC4RAPIVIQUAL Unimple(13))]
}
}
枚举:字符串{
case Spades=“Spades”
case Hearts=“Hearts”
case Diamonds=“钻石”
案例俱乐部=“俱乐部”
静电防护服{
return[黑桃、红桃、钻石、梅花][Int(arc4random_uniform(4))]
}
}
结构卡:CustomStringConvertible,Equalable{
让号码:号码
穿西装
变量说明:字符串{
返回\(suit.rawValue)的\(number.rawValue)
}
静态var随机卡:卡{
退货卡(号码:number.randomNumber,西装:suit.randomSuit)
}
静态功能随机卡片(计数:Int)->[卡片]{
防护计数>0其他{
返回[]
}
守卫伯爵布尔{
返回left.number==right.number&&left.suit==right.suit
}
让随机卡片=卡片。随机卡片(计数:5)
打印(随机卡片)
//随机打印五张卡片
如果您还有其他问题,请告诉我。不是对您的问题的直接回答,但我想您会想要这样的答案:
enum Number: String {
case Two = "two"
case Three = "three"
case Four = "four"
case Five = "five"
case Six = "six"
case Seven = "seven"
case Eight = "eight"
case Nine = "nine"
case Ten = "ten"
case Jack = "jack"
case Queen = "queen"
case King = "king"
case Ace = "ace"
static var randomNumber: Number {
return [Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, Ace][Int(arc4random_uniform(13))]
}
}
enum Suit: String {
case Spades = "spades"
case Hearts = "hearts"
case Diamonds = "diamonds"
case Clubs = "clubs"
static var randomSuit: Suit {
return [Spades, Hearts, Diamonds, Clubs][Int(arc4random_uniform(4))]
}
}
struct Card: CustomStringConvertible, Equatable {
let number: Number
let suit: Suit
var description: String {
return "\(number.rawValue) of \(suit.rawValue)"
}
static var randomCard: Card {
return Card(number: Number.randomNumber, suit: Suit.randomSuit)
}
static func randomCards(count count: Int) -> [Card] {
guard count > 0 else {
return []
}
guard count <= 52 else {
fatalError("There only are 52 unique cards.")
}
let cards = randomCards(count: count - 1)
while true {
let card = randomCard
if !cards.contains(card) {
return cards + [card]
}
}
}
}
func == (left: Card, right: Card) -> Bool {
return left.number == right.number && left.suit == right.suit
}
let randomCards = Card.randomCards(count: 5)
print(randomCards)
// prints five random cards
枚举编号:字符串{
案例二=“两个”
案例三=“三”
案例四=“四”
案例五=“五”
案例六=“六”
案例七=“七”
案例八=“八”
案例九=“九”
案例十=“十”
case Jack=“杰克”
case Queen=“Queen”
case King=“King”
案例Ace=“Ace”
静态var随机数:数字{
返回[2,三,四,五,六,七,八,九,十,杰克,皇后,King,ACE] [INT(ARC4RAPIVIQUAL Unimple(13))]
}
}
枚举:字符串{
case Spades=“Spades”
case Hearts=“Hearts”
case Diamonds=“钻石”
案例俱乐部=“俱乐部”
静电防护服{
return[黑桃、红桃、钻石、梅花][Int(arc4random_uniform(4))]
}
}
结构卡:CustomStringConvertible,Equalable{
让号码:号码
穿西装
变量说明:字符串{
返回\(suit.rawValue)的\(number.rawValue)
}
静态var随机卡:卡{
退货卡(号码:number.randomNumber,西装:suit.randomSuit)
}
静态功能随机卡片(计数:Int)->[卡片]{
防护计数>0其他{
返回[]
}
守卫伯爵布尔{
返回left.number==right.number&&left.suit==right.suit
}
让随机卡片=卡片。随机卡片(计数:5)
打印(随机卡片)
//随机打印五张卡片
如果您有任何其他问题,请告诉我。堆栈溢出上显示了大量的洗牌Swift实现。请在询问之前进行搜索。堆栈溢出上显示了大量洗牌Swift实现。请在询问之前进行搜索。这可能会将同一张牌返回给多个玩家,而这可能不是问题所在警察想要一副52人的牌cards@LeoDabus好的观点,请看我的编辑。这可能会将同一张牌返还给多个玩家,而这可能不是OP想要的。他说一副52张的牌cards@LeoDabus好的,请看我的编辑。