Arrays I';我想做一个纸牌游戏。我如何制作一副牌,然后进行交易?
我正在做一个纸牌游戏,我首先把所有的纸牌放在一个元组数组中,并指定一个数字1-52。但是通过使用随机数生成器来挑选卡片,从卡片组中移除卡片变得很困难,因为我无法从随机数生成器中移除该数字。感谢您的帮助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))
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