Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays I';我想做一个纸牌游戏。我如何制作一副牌,然后进行交易?_Arrays_Swift_Tuples - Fatal编程技术网

Arrays I';我想做一个纸牌游戏。我如何制作一副牌,然后进行交易?

Arrays I';我想做一个纸牌游戏。我如何制作一副牌,然后进行交易?,arrays,swift,tuples,Arrays,Swift,Tuples,我正在做一个纸牌游戏,我首先把所有的纸牌放在一个元组数组中,并指定一个数字1-52。但是通过使用随机数生成器来挑选卡片,从卡片组中移除卡片变得很困难,因为我无法从随机数生成器中移除该数字。感谢您的帮助 func createDeck(){ deck.append((name: "ace1", number: 1)) deck.append((name: "ace2", number: 2)) deck.append((name: "ace3", number: 3))

我正在做一个纸牌游戏,我首先把所有的纸牌放在一个元组数组中,并指定一个数字1-52。但是通过使用随机数生成器来挑选卡片,从卡片组中移除卡片变得很困难,因为我无法从随机数生成器中移除该数字。感谢您的帮助

 func createDeck(){

    deck.append((name: "ace1", number: 1))
    deck.append((name: "ace2", number: 2))
    deck.append((name: "ace3", number: 3))
    deck.append((name: "ace4", number: 4))
    deck.append((name: "two1", number: 5))
    deck.append((name: "two2", number: 6))
    deck.append((name: "two3", number: 7))
    deck.append((name: "two4", number: 8))
    deck.append((name: "three1", number: 9))
    deck.append((name: "three2", number: 10))
    deck.append((name: "three3", number: 11))
    deck.append((name: "three4", number: 12))
    deck.append((name: "four1", number: 13))
    deck.append((name: "four2", number: 14))
    deck.append((name: "four3", number: 15))
    deck.append((name: "four4", number: 16))
    deck.append((name: "five1", number: 17))
    deck.append((name: "five2", number: 18))
    deck.append((name: "five3", number: 19))
    deck.append((name: "five4", number: 20))
    deck.append((name: "six1", number: 21))
    deck.append((name: "six2", number: 22))
    deck.append((name: "six3", number: 23))
    deck.append((name: "six4", number: 24))
    deck.append((name: "seven1", number: 25))
    deck.append((name: "seven2", number: 26))
    deck.append((name: "seven3", number: 27))
    deck.append((name: "seven4", number: 28))
    deck.append((name: "eight1", number: 29))
    deck.append((name: "eight2", number: 30))
    deck.append((name: "eight3", number: 31))
    deck.append((name: "eight4", number: 32))
    deck.append((name: "nine1", number: 33))
    deck.append((name: "nine2", number: 34))
    deck.append((name: "nine3", number: 35))
    deck.append((name: "nine4", number: 36))
    deck.append((name: "ten1", number: 37))
    deck.append((name: "ten2", number: 38))
    deck.append((name: "ten3", number: 39))
    deck.append((name: "ten4", number: 40))
    deck.append((name: "jack1", number: 41))
    deck.append((name: "jack2", number: 42))
    deck.append((name: "jack3", number: 43))
    deck.append((name: "jack4", number: 44))
    deck.append((name: "queen1", number: 45))
    deck.append((name: "queen2", number: 46))
    deck.append((name: "queen3", number: 47))
    deck.append((name: "queen4", number: 48))
    deck.append((name: "king1", number: 49))
    deck.append((name: "king2", number: 50))
    deck.append((name: "king3", number: 51))
    deck.append((name: "king4", number: 52))


}
func randomNumber(){
    random = arc4random_uniform(52) + 0;
    print(random)
}
func deal(){

    var aces = Set<Int>(arrayLiteral:1, 2, 3,4)
    var twos = Set<Int>(arrayLiteral:5, 6, 7,8)
    var threes = Set<Int>(arrayLiteral:9, 10, 11,12)
    var fours = Set<Int>(arrayLiteral:13, 14, 15,16)
    var fives = Set<Int>(arrayLiteral:17, 18,19,20)
    var sixes = Set<Int>(arrayLiteral:21, 22, 23,24)
    var sevens = Set<Int>(arrayLiteral:25, 26, 27,28)
    var eights = Set<Int>(arrayLiteral:29, 30, 31,32)
    var nines = Set<Int>(arrayLiteral:33, 34, 35,36)
    var tens = Set<Int>(arrayLiteral:37, 38, 39,40)
    var jacks = Set<Int>(arrayLiteral:41, 42, 43,44)
    var queens = Set<Int>(arrayLiteral:45, 46, 47,48)
    var kings = Set<Int>(arrayLiteral:49, 50, 51,52)



    if aces.contains(Int(random)){
        playern1 = Int(random)
        aces.removeFirst()
    }
    if twos.contains(Int(random)){
        twos.removeFirst()
func createDeck(){
甲板。附加((名称:“ace1”,编号:1))
甲板。附加((名称:“ace2”,编号:2))
甲板附加((名称:“ace3”,编号:3))
甲板。附加((名称:“ace4”,编号:4))
甲板附加((名称:“two1”,编号:5))
甲板附加((名称:“two2”,编号:6))
甲板附加((名称:“two3”,编号:7))
甲板附加((名称:“two4”,编号:8))
甲板。附加((名称:“three1”,编号:9))
甲板。附加((名称:“three2”,编号:10))
甲板。附加((名称:“three3”,编号:11))
甲板。附加((名称:“three4”,编号:12))
甲板。附加((名称:“four1”,编号:13))
甲板附加((名称:“four2”,编号:14))
甲板。附加((名称:“four3”,编号:15))
甲板。附加((名称:“four4”,编号:16))
甲板。附加((名称:“five1”,编号:17))
甲板附加((名称:“five2”,编号:18))
甲板附加((名称:“five3”,编号:19))
甲板。附加((名称:“five4”,编号:20))
甲板附加((名称:“six1”,编号:21))
甲板附加((名称:“six2”,编号:22))
甲板附加((名称:“six3”,编号:23))
甲板。附加((名称:“six4”,编号:24))
甲板附加((名称:“seven1”,编号:25))
甲板附加((名称:“seven2”,编号:26))
甲板附加((名称:“seven3”,编号:27))
甲板附加((名称:“seven4”,编号:28))
甲板附加((名称:“eight1”,编号:29))
甲板。附加((名称:“eight2”,编号:30))
甲板。附加((名称:“eight3”,编号:31))
甲板附加((名称:“eight4”,编号:32))
甲板附加((名称:“nine1”,编号:33))
甲板附加((名称:“nine2”,编号:34))
甲板附加((名称:“nine3”,编号:35))
甲板附加((名称:“nine4”,编号:36))
甲板附加((名称:“ten1”,编号:37))
甲板附加((名称:“ten2”,编号:38))
甲板附加((名称:“ten3”,编号:39))
甲板附加((名称:“ten4”,编号:40))
甲板附加((名称:“jack1”,编号:41))
甲板附加((名称:“jack2”,编号:42))
甲板附加((名称:“jack3”,编号:43))
甲板。附加((名称:“jack4”,编号:44))
甲板。附加((名称:“queen1”,编号:45))
甲板附加((名称:“queen2”,编号:46))
甲板附加((名称:“queen3”,编号:47))
甲板。附加((名称:“queen4”,编号:48))
甲板附加((名称:“king1”,编号:49))
甲板附加((名称:“king2”,编号:50))
甲板附加((名称:“king3”,编号:51))
甲板附加((名称:“king4”,编号:52))
}
func随机数(){
random=arc4random_均匀(52)+0;
打印(随机)
}
func deal(){
var aces=集合(阵列并行:1,2,3,4)
var twos=集合(阵列并行:5,6,7,8)
var threes=集合(阵列方向:9,10,11,12)
var fours=集合(阵列方向:13,14,15,16)
变量五=集合(阵列方向:17,18,19,20)
变量六=集合(阵列方向:21,22,23,24)
var sevens=集合(阵列方向:25,26,27,28)
变量八=集合(阵列方向:29,30,31,32)
变量九=集合(阵列方向:33,34,35,36)
变量tens=集合(阵列并行:37,38,39,40)
var插孔=设置(阵列侧:41,42,43,44)
var queens=集合(阵列方向:45,46,47,48)
变量王=集合(阵列方向:49,50,51,52)
如果aces.包含(Int(随机)){
playern1=Int(随机)
aces.removeFirst()
}
如果两个包含(Int(随机)){
twos.removeFirst()

维护一个仍然可用且尚未拾取的卡片阵列。出于本次讨论的目的,我将其称为“交易阵列”(必须与牌组阵列分开维护!它可以作为牌组阵列的可变副本启动。)

当您随机挑选/交易一张卡时,将其从交易阵列中移除

您的随机数生成器应该选择一个介于0和交易数组中剩余项目数之间的数字,而不是介于0和52之间。

(假设交易阵列不是空的-在从交易阵列中随机选择一张卡之前检查此项。)

从交易阵列中选择卡时,使用随机数作为阵列的索引(不是您创建的卡号,它对于从交易阵列中随机挑选卡没有任何实际用途)


(请注意,我没有在此处包含任何示例代码,因为我不清楚您的某些代码的用途。如果我试图在此处发布代码,很可能会错误解释您的代码,从而发布错误的代码)。

您可能需要重新设计如何定义卡:

enum Suit: String {
    case heart, diamond, club, spade
}
enum Rank: Int {
    case _1 = 1, _2 = 2, _3 = 3, _4 = 4, _5 = 5, _6 = 6, _7 = 7, _8 = 8, _9 = 9, _10 = 10
    case jack = 11, queen = 12, king = 13
}
struct Card {
    let suit: Suit
    let rank: Rank
}
(或者另一种选择可以是
枚举卡{案例卡(诉讼:诉讼,等级:等级)}

然后定义你的牌组:

var deck = [Card(suit: .heart, rank: ._1),
            Card(suit: .heart, rank: ._2),
            Card(suit: .heart, rank: ._3),
            Card(suit: .heart, rank: ._4),
            Card(suit: .heart, rank: ._5),
            Card(suit: .heart, rank: ._6),
            // ...
]
然后从牌组中选择一张牌:

func pickRandomCardFromDeck() -> Card {
    return deck.remove(at: Int(arc4random_uniform(UInt32(deck.count))))
}

[编辑以供评论]

要检查一对,请执行以下操作:

extension Card {
    func isPair(with card: Card) -> Bool {
        return rank == card.rank
    }
}

如何“变得困难”?拾取或移除卡片与制作一副牌有什么关系?展示你的代码并解释你想要什么以及实际发生了什么。好吧,你在开玩笑吗?关于什么的建议?你没有按照我的要求做。你没有解释你想要什么以及实际发生了什么。相信我,看看你提供的代码,我有不知道你想做什么。请告诉我。你创建了一个
牌组
,却从不使用它。你定义了
随机数
,却从不调用它。你的代码什么都不做!不管其他事情,你都应该了解数组,没有理由有50个
附加
调用。我如何使用这张牌我选择的。例如,如果我想知道是否有一对有两张牌的牌,我在答案中添加了对检查。@Johnd