今天是 #WWDC25 的第二天,從昨天半夜開始,Apple 陸陸續續發表了許多新功能,你關注了嗎?
我們這週將繼續實作比賽流程,而關於 WWDC 的發表,我們會在整週活動結束之後,再一起來回顧。
本篇文章我們將以上篇為基礎,以2025/5/17 統一獅 vs 台鋼雄鷹的例行賽官網記錄的 play by play,來實作比賽流程。
還沒看過上篇的話可以點這邊:
打擊結果與事件類型
我們已經在第一篇 [用棒球規則認識 enum
的威力](Vol. 1|棒球場上的 enum 威力) 中,定義了打擊結果的型別 BattingResult
,還沒看的話點這邊:
這邊我們再補充幾個 case
,讓他更加完整:
局數與得分
在定義好球員(前篇)及更新打擊結果後,接下來,我們先把他們組合成 Play
,並一步步地將 Play
組合成 Inning
,最後再組合成 GameState
。
比賽開打
到這邊,比賽準備開始了!
賽前兩隊都提交好了先發名單,我們先來初始化比賽狀態:
比賽準備就緒! NOW PLAY BALL!
比賽開打
這邊我們只記錄打擊,跟投手互動的部分先忽略,真實的棒球紀錄當然是兩邊都要同時動作,我們這邊先以打擊為主。
另外逐球紀錄會佔太多版面,我們就先以第一棒為例,後面就跳過囉。
中間部分還蠻冗長的,可以視情況跳到最後直接看結果。
我們將陳傑憲的打擊結果記錄如上,接下來,我們來記錄這個半局剩下的打擊結果:
再來輪到一局下半,台鋼雄鷹的打擊:
到這邊,我們已經記錄了比賽第一局兩隊的打擊結果,相信你已經有基礎的理解,接下來,我們就挑一些重點 Play,來完成到第五局為止的記錄:
到這邊,我們已經記錄了比賽前五局兩隊的打擊結果,比數相當的拉鋸,紀錄也好像已經有點長了呀!
但是棒球紀錄就是這樣,我們已經省略了逐球的紀錄,以及守方的動作,卻還是這麼的冗長,可想而知如果真的要完整的紀錄一場比賽,或者真的實作一個棒球紀錄的程式,會有多花心力。
剩下的四個半局,我們就把前面沒有記錄到的 Play 類型補上,其餘就跳過吧。
終於!我們完成了這場例行賽的打擊紀錄!!!
九局上半統一的逆轉三分砲,奠定了勝基,台鋼雄鷹也展現不服輸的任性,可惜最後還是沒能逆轉回來。
而隨著紀錄的進行,我也好像又重新參與了一次這場比賽!
我們將前幾個篇章所展示的技巧,實際應用在棒球紀錄的製作上,雖然過程非常的冗長沉悶,也還有很多細節可以再補強,但我們在這過程中,一步一步的更加熟悉了 Swift 的語法和特性,優雅的將棒球規則轉換成程式碼。
有空也多多進場看球,支持球員們吧!
棒球場系列文章到此告一段落,你還有發現哪些可以拿來應用到生活中的 Swift 技巧嗎?
如果覺得這篇文章對你有幫助,歡迎分享給更多人知道,或者還有想了解的 `Swift` 技巧,也可以在底下留言,分享你的想法,或者有什麼想看的內容,都可以告訴我,我們下次見!
本篇文章程式碼部分由 `AI` 輔助產生。