伊布記憶翻牌 App

水餃
7 min readNov 28, 2019

隨機設置圖片

var images = ["willson1", "willson1","willson2","willson2","willson3","willson3","willson4","willson4","willson5","willson5","willson6","willson6",]
func updateCards() {
images.shuffle()
var i = 0
for cardButton in cardButtons {
cardButton.setBackgroundImage(UIImage(named: "back"), for: UIControl.State.normal)
i += 1
}
moves = 0
moveTimes.text = "\(moves)"
two = 0
winLabel.isHidden = true
}

確認圖片是否相同

var lastFlipNumber = -1
var moves = 0
var two = 0
@IBAction func flipCard(_ sender: UIButton) {
let number = cardButtons.firstIndex(of: sender)!


sender.setBackgroundImage(UIImage(named: images[number]), for: UIControl.State.normal)
UIView.transition(with: sender, duration: 0.5, options: UIView.AnimationOptions.transitionFlipFromRight, animations: nil, completion: nil)
print(lastFlipNumber, number)
self.moves += 1
self.moveTimes.text = "\(self.moves)"
if lastFlipNumber != -1 {
print(images[number], images[lastFlipNumber])

if images[number] != images[lastFlipNumber] {
self.view.isUserInteractionEnabled = false
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) {



self.view.isUserInteractionEnabled = true

self.cardButtons[self.lastFlipNumber].setBackgroundImage(UIImage(named: "back"), for: UIControl.State.normal)
UIView.transition(with: self.cardButtons[self.lastFlipNumber], duration: 0.5, options: UIView.AnimationOptions.transitionFlipFromRight, animations: nil, completion: nil)

self.cardButtons[number].setBackgroundImage(UIImage(named: "back"), for: UIControl.State.normal)
UIView.transition(with: self.cardButtons[number], duration: 0.5, options: UIView.AnimationOptions.transitionFlipFromRight, animations: nil, completion: nil)

self.lastFlipNumber = -1
}
} else {

self.cardButtons[self.lastFlipNumber].isUserInteractionEnabled = false
self.cardButtons[number].isUserInteractionEnabled = false
self.lastFlipNumber = -1
self.two += 1
if two == 6 {
winLabel.isHidden = false
var move = UserDefaults.standard.array(forKey: "move")
if move == nil {
move = [Int]()
}
move?.append(moves)
UserDefaults.standard.set(move, forKey: "move")
}
}
} else {
lastFlipNumber = number

}

}

排行榜

class LeaderboardController: UIViewController {
@IBOutlet weak var leaderboard: UITextView!

override func viewDidLoad() {
super.viewDidLoad()
var move = UserDefaults.standard.array(forKey: "move") as? [Int]
move?.sort(by: { (grade1, grade2) -> Bool in
return grade1 < grade2
})
var number = 1
if move != nil {
for move in move! {
leaderboard.text.append("No" + number.description + " " + move.description + "\n")
number += 1
}
}
}

重玩時將畫面回到初始狀態

@IBAction func replay(_ sender: Any) {
for cardButton in cardButtons {
cardButton.isUserInteractionEnabled = true
}
updateCards()
}

--

--