当前位置: 首页 > 面试题库 >

向Card添加一种方法,以创建一副完整的扑克牌,每种级别和花色组合都包含一张

景星光
2023-03-14
问题内容

所以我一直在做Apple Swift Book中的实验。

除了到目前为止,我已经能够完成所有这些操作。下面是我尝试过的方法,但是我不知道如何使它工作。

Card 添加一种方法,以创建一副完整的纸牌,其中每个等级和花色组合都有一张纸牌。

// Playground - noun: a place where people can play

enum Rank: Int {
    case Ace = 1
    case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
    case Jack, Queen, King

    func simpleDescription() -> String {
        switch self {
            case .Ace:
                return "ace"
            case .Jack:
                return "jack"
            case .Queen:
                return "queen"
            case .King:
                return "king"
            default:
                return String(self.toRaw())
        }
    }
}

enum Suit {
    case Spades, Hearts, Diamonds, Clubs

    func simpleDescription() -> String {
        switch self {
            case .Spades:
                return "spades"
            case .Hearts:
                return "hearts"
            case .Diamonds:
                return "diamonds"
            case .Clubs:
                return "clubs"
        }
    }
}

struct Card {
    var rank: Rank
    var suit: Suit

    func simpleDescription() -> String {
        return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
    }

    func createFullDeck() -> Array{
        var FullDeck: Array

        FullDeck = Card(rank: .Ace, suit: .Spades)
        FullDeck = Card(rank: .Two, suit: .Spades)

        return FullDeck
    }
}

let threeOfSpades = Card(rank: .Three, suit: .Spades)
let threeOfSpadesDescription = threeOfSpades.simpleDescription()

threeOfSpades.createFullDeck()
  • 我不知道我应该为那个方法返回什么,一个数组?
  • 我应该使用for循环来创建它吗?还是有一个适当/容易的方法来用枚举做到这一点
  • 我为什么要在 Card中 创建此方法,调用threeOfSpades.createFullDeck()似乎不正确。

问题答案:

这是另一种实现方式,这一次仅使用您到目前为止所学的技术*

首先,我们使用先前定义的枚举RankSuit枚举定义可能的等级和花色。

接下来,我们具有对每个西装中的每个等级进行迭代的功能,为每个西装创建一张卡片,最后返回一系列卡片。

struct Card {
    var rank: Rank
    var suit: Suit
    func simpleDescription() -> String {
        return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
    }

    func createDeck() -> [Card] {
        let ranks = [Rank.ace, Rank.two, Rank.three, Rank.four, Rank.five, Rank.six, Rank.seven, Rank.eight, Rank.nine, Rank.ten, Rank.jack, Rank.queen, Rank.king]
        let suits = [Suit.spades, Suit.hearts, Suit.diamonds, Suit.clubs]
        var deck = [Card]()
        for suit in suits {
            for rank in ranks {
                deck.append(Card(rank: rank, suit: suit))
            }
        }
        return deck
    }
}

(*值得注意的例外是,导览当时没有明确说明如何附加到数组)



 类似资料:
  • 我试图根据等级和花色对一手扑克进行排序,但仍然没有完全排序,下面是代码,请注意花色是排序的,而不是等级 我的手在排序之前: 1:红桃之王2:四枚钻石3:七枚梅花4:梅花之王5:三枚红桃6:五枚钻石7:两枚梅花8:钻石之王9:四枚黑桃10:三枚钻石 排序后: 1:黑桃四枚2:红桃之王3:红桃三枚4:梅花两枚5:梅花之王6:梅花七枚7:钻石之王8:钻石五枚9:钻石四枚10:钻石三枚 卡对象 玩家对象

  • 本文向大家介绍写一个洗扑克牌的方法相关面试题,主要包含被问及写一个洗扑克牌的方法时的应答技巧和注意事项,需要的朋友参考一下 求教, 要比 更好吗?

  • 本文向大家介绍一个完整的PHP类包含的七种语法说明,包括了一个完整的PHP类包含的七种语法说明的使用技巧和注意事项,需要的朋友参考一下 类中的七种语法说明 -属性 -静态属性 -方法 -静态方法 -类常量 -构造函数 -析构函数 总结: 对象可以调用属性和静态属性,类只能调用静态属性。 对象可以调用方法和静态方法,类可以调用方法和静态方法。

  • 如果皇家同花顺会让你兴奋不已,本节就是为你而写。本节,我们将创建一个组函数,用来绘制一套扑克牌中的黑桃、红桃、梅花、方块。 图2-11 绘制扑克牌花色 绘制步骤 按照以下步骤,绘制一套扑克牌中的黑桃、红桃、梅花、方块: 1. 定义drawSpade()函数,该函数通过绘制四条贝塞尔曲线、两条二次曲线、一条直线,来绘制黑桃: function drawSpade(context, x, y, wi

  • 如果知道红色、绿色和蓝色的“权重”,可以使用以下类创建颜色: 并在HTML中使用它,如下所示: 对于上面显示的值,为暗灰色,为白色。 但是,如果一个人想要代表其他颜色的组合,比如绿色、蓝色、橙色和金色,该怎么办? 有没有一种方法可以用下面这样的符号来定义这样的颜色? 或者使用,其中中的字母分别代表绿色、蓝色、橙色和金色? 其目的是通过上面的CSS定义 将以这四种颜色的加权组合显示文本。 我相信这是