--

#29 來車拼!撲克牌比大小-WarGame

本來是想寫21點遊戲,但以我現在的程度真的有點困難
寫了一點點之後就先放棄了!
沒關係,等學到更多程式再來完成,我可以的!

成品如下:

簡單的撲克牌比大小遊戲也是需要一點點邏輯
邏輯判斷真的太重要了,腦子不好的我卡了很久
雖然看似簡單,但還是花了一些時間

完整程式碼如下:

import UIKit
import Foundation
//自創撲克牌型別,把花色跟點數用String宣告
struct Card {
var suit: String
var rank: String
}

class ViewController: UIViewController {

//把需要設定的UI元件拉進Outlet
@IBOutlet weak var bankerCard: UIImageView!
@IBOutlet weak var playerCard: UIImageView!
@IBOutlet weak var resultLabel: UILabel!

//建立52張牌
var cards = [Card]()
func createCard() {
let suits = ["C", "D", "H", "S"]
let ranks = ["A","2","3","4","5","6","7","8","9","10","J","Q","K"]
for suit in suits {
for rank in ranks {
let card = Card(suit: suit, rank: rank)
cards.append(card)

}
}

}

override func viewDidLoad() {
super.viewDidLoad()
createCard()
resultLabel.layer.cornerRadius = 5
resultLabel.clipsToBounds = true



}
//宣告花色大小的方法
func cardSuitsNumber(suit: String) -> Int {
var number = 0
switch suit {
case "C":
number = 1
case "D":
number = 2
case "H":
number = 3
default:
number = 4
}
return number
}
//宣告點數大小的方法
func cardRanksNumber(rank: String) -> Int {
var number = 0
switch rank {
case "A":
number = 1
case "J":
number = 11
case "Q":
number = 12
case "K":
number = 13
default:
number = Int(rank)!
}
return number
}
//設定play按鈕,比較莊家和玩家的花色跟點數,結果顯示到Label上
@IBAction func playButton(_ sender: Any) {
cards.shuffle()

var bankerCard = cards.removeFirst()
var playerCard = cards.removeFirst()
while bankerCard.suit == playerCard.suit && bankerCard.rank == playerCard.rank {
bankerCard = cards.removeFirst()
}

self.bankerCard.image = UIImage(named: "\(bankerCard.suit)\(bankerCard.rank)")
self.playerCard.image = UIImage(named: "\(playerCard.suit)\(playerCard.rank)")

let bankerRankNumber = cardRanksNumber(rank: bankerCard.rank)
let playerRankNumber = cardRanksNumber(rank: playerCard.rank)
if bankerRankNumber > playerRankNumber {
resultLabel.text = "YOU LOST!"
} else if bankerRankNumber < playerRankNumber{
resultLabel.text = "YOU WIN!"
} else {
let bankerSuitNumber = cardSuitsNumber(suit: bankerCard.suit)
let playerSuitNumber = cardSuitsNumber(suit: playerCard.suit)
if bankerSuitNumber > playerSuitNumber {
resultLabel.text = "YOU LOST!"
} else {
resultLabel.text = "YOU WIN!"
}
}
}
}

繼續努力,繼續加油!

GitHub連結:

--

--