大頭貓的 桌球計分板(Scoreboard)

因時間關係加上我沒美術底子&天份,所以畫面比較簡陋!

執行畫面如下:

大部分要求的功能都有做到,只剩下Rewind倒帶我想不太出來怎麼做,目前能想到的就是把user玩的每個步驟相關參數記錄到陣列裡面,但有個問題是如果有Change Side換邊的時候,這個Rewind也要忠實呈現,那左右打者的名字也要在Rewind時交換,傷腦筋哩~

程式碼如下:

    var rightnowscore: Int = 0
var leftnowscore: Int = 0
var rgameset: Int = 0
var lgameset: Int = 0
var serve: Int = 0
var templayername: String?
//處理左計分板點下去增加分數及相關判斷
@IBAction func LScore(_ sender: Any) {
leftnowscore += 1
serve += 1
if serve >= 1 && leftnowscore > 9 && rightnowscore > 9 {
serve = 0
servepoint()
} else if serve >= 2 {
serve = 0
servepoint()
}
gameSet()
LeftScore.text = String(leftnowscore)
}
//處理右計分板點下去增加分數及相關判斷
@IBAction func RScore(_ sender: Any) {
rightnowscore += 1
serve += 1
if serve >= 1 && leftnowscore > 9 && rightnowscore > 9 {
serve = 0
servepoint()
} else if serve >= 2 {
serve = 0
servepoint()
}
gameSet()
RightScore.text = String(rightnowscore)
}
//Reset按鈕重置分數&局數
@IBAction func Reset(_ sender: Any) {
RightScore.text = "0"
LeftScore.text = "0"
Rset.text = "0"
Lset.text = "0"
rightnowscore = 0
leftnowscore = 0
rgameset = 0
lgameset = 0
Serve.alpha = 0
serve = 0
}
//Change Side按鈕,雙方交換位置
@IBAction func changeside(_ sender: Any) {
changeSide()
}
//判斷勝局的function
func gameSet() {
if Int(rightnowscore)==11 && Int(leftnowscore)<10 {
rgameset = rgameset + 1
Rset.text = String(rgameset)
resetgameSet()
} else if leftnowscore==11 && Int(rightnowscore)<10{
lgameset = lgameset + 1
Lset.text = String(lgameset)
resetgameSet()
} else if (rightnowscore - leftnowscore)>=2 && rightnowscore>=12 {
rgameset = rgameset + 1
Rset.text = String(rgameset)
resetgameSet()
} else if (leftnowscore - rightnowscore )>=2 && leftnowscore>=12 {
lgameset = lgameset + 1
Lset.text = String(lgameset)
resetgameSet()
}
}
//Reset的function
func resetgameSet() {
RightScore.text = "0"
LeftScore.text = "0"
rightnowscore = 0
leftnowscore = 0
Serve.alpha = 0
serve = 0
}
//Change Side的function
func changeSide() {
var temprscore: Int = 0
var temprgameset: Int = 0
temprscore = rightnowscore
temprgameset = rgameset
rightnowscore = leftnowscore
rgameset = lgameset
leftnowscore = temprscore
lgameset = temprgameset
RightScore.text = String(rightnowscore)
LeftScore.text = String(leftnowscore)
Rset.text = String(rgameset)
Lset.text = String(lgameset)
templayername = rightPlayer.text
rightPlayer.text = leftPlayer.text
leftPlayer.text = templayername
}
//換邊發球的function
func servepoint() {
if Serve.alpha == 0 {
Serve.alpha = 1
}
if Serve.frame.origin == CGPoint(x: 284, y:314) {
Serve.frame.origin = CGPoint(x: 62, y:314)
} else {
Serve.frame.origin = CGPoint(x: 284, y:314)
}
}
}

後記:Rewind要忠實呈現的話,那連中間有按下Reset、Change Side這2個按鈕也要忠實紀錄相關資料(雙方分數、雙方贏的局數、雙方的名字)

--

--