Я новичок в swift и пытаюсь сделать простую карточную игру, в которой игрок и компьютер вытаскивают aws карту, а тот, у кого самая большая карта, выигрывает. Но когда я вызываю свою функцию CompareCards, я получаю сообщение об ошибке: константа playerCard использовалась перед инициализацией. Я думал, что уже инициализировал playerCard, поэтому мне интересно, кто-нибудь может сказать мне, что не так с моим кодом? Спасибо.
import Foundation
func randomInteger(upper: Int) -> Int {
return Int(arc4random_uniform(UInt32(upper)))
}
enum Rank: Int{
case two = 2,
three,
four, five,
six,
seven,
eight,
nine,
ten,
jack,
queen,
king,
ace
static func allValues() -> [Rank]{
return [two, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace]
}
}
enum Suit: Int{
case clubs = 1,
diamonds,
hearts,
spades
static func allValues() -> [Suit]{
return [spades, hearts, diamonds, clubs]
}
}
struct Card{
var rank: Rank = .two
var suit: Suit = .clubs
init(rank: Rank, suit: Suit){
self.rank = rank
self.suit = suit
}
}
class Deck{
var deck: [Card] = []
var rankArray: [Rank] = []
var suitArray: [Suit] = []
init(){
rankArray = Rank.allValues()
suitArray = Suit.allValues()
for aRank in rankArray{
for aSuit in suitArray{
let aCard = Card(rank: aRank, suit: aSuit)
deck.append(aCard)
}
}
}
func drawOne() -> Card?{
if deck.count != 0{
let randomCard = randomInteger(upper: deck.count)
let aCard = deck[randomCard]
deck.remove(at: randomCard)
return aCard
}
else{
return nil
}
}
}
func compareCards(playerCard: Card, computerCard: Card) -> String{
var isPlayerGreater: Bool = false
if playerCard.rank != computerCard.rank{
if playerCard.rank.rawValue > computerCard.rank.rawValue{
isPlayerGreater = true
}
}
if playerCard.suit.rawValue > computerCard.suit.rawValue{
isPlayerGreater = true
}
if isPlayerGreater == true{
return "The player won with the \(playerCard.rank) of \(playerCard.suit)!"
}
else{
return "The computer won with the \(computerCard.rank) of \(computerCard.suit)!"
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////
let playerCard: Card
let computerCard: Card
let aDeck = Deck()
if let aCard = aDeck.drawOne(){
playerCard = Card(rank: aCard.rank, suit: aCard.suit)
}
if let aCard = aDeck.drawOne(){
computerCard = Card(rank: aCard.rank, suit: aCard.suit)
}
var result: String = compareCards(playerCard: playerCard, computerCard: computerCard)
print(result)