以下為 GPT 4 的回答。
Create a table tennis scoreboard app using UIKit and Storyboard
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var player1ScoreLabel: UILabel!
@IBOutlet weak var player2ScoreLabel: UILabel!
@IBOutlet weak var player1Button: UIButton!
@IBOutlet weak var player2Button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
player1ScoreLabel.text = "0"
player2ScoreLabel.text = "0"
}
@IBAction func player1ButtonTapped(_ sender: UIButton) {
updateScore(forPlayer: 1)
}
@IBAction func player2ButtonTapped(_ sender: UIButton) {
updateScore(forPlayer: 2)
}
private func updateScore(forPlayer player: Int) {
guard let player1Score = Int(player1ScoreLabel.text ?? ""),
let player2Score = Int(player2ScoreLabel.text ?? "") else { return }
if player == 1 {
player1ScoreLabel.text = String(player1Score + 1)
} else if player == 2 {
player2ScoreLabel.text = String(player2Score + 1)
}
}
}
Add a rewind button that, when clicked, goes back to the previous score. For example, if the score goes from 0:0 to 1:0 and then to 1:1, clicking the rewind button once will change it back to 1:0, and clicking it again will change it to 0:0.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var player1ScoreLabel: UILabel!
@IBOutlet weak var player2ScoreLabel: UILabel!
@IBOutlet weak var player1Button: UIButton!
@IBOutlet weak var player2Button: UIButton!
@IBOutlet weak var rewindButton: UIButton!
private var scoreHistory: [(player1: Int, player2: Int)] = [(0, 0)]
override func viewDidLoad() {
super.viewDidLoad()
player1ScoreLabel.text = "0"
player2ScoreLabel.text = "0"
}
@IBAction func player1ButtonTapped(_ sender: UIButton) {
updateScore(forPlayer: 1)
}
@IBAction func player2ButtonTapped(_ sender: UIButton) {
updateScore(forPlayer: 2)
}
@IBAction func rewindButtonTapped(_ sender: UIButton) {
if scoreHistory.count > 1 {
scoreHistory.removeLast()
let previousScores = scoreHistory.last!
player1ScoreLabel.text = String(previousScores.player1)
player2ScoreLabel.text = String(previousScores.player2)
}
}
private func updateScore(forPlayer player: Int) {
guard let player1Score = Int(player1ScoreLabel.text ?? ""),
let player2Score = Int(player2ScoreLabel.text ?? "") else { return }
if player == 1 {
scoreHistory.append((player1: player1Score + 1, player2: player2Score))
player1ScoreLabel.text = String(player1Score + 1)
} else if player == 2 {
scoreHistory.append((player1: player1Score, player2: player2Score + 1))
player2ScoreLabel.text = String(player2Score + 1)
}
}
}
謝謝Peter