#67 骰子遊戲-Pass the Pigs-Dice Game Pig-1
Published in
4 min readMar 10, 2024
使用 Swift 設計的有趣的小遊戲,從簡單到複雜,慢慢實作~
題目介紹:
操作影片:
操作截圖
遊戲規則
- 跟朋友一起用同一隻手機 PK。
- 分數先超過 100 的獲勝(包含 100)。
- 一次丟一顆骰子。
- 玩家丟完骰子後可選擇 roll 再丟一次,因此玩家在一回合裡可點選多次 roll 丟多次骰子。
- 玩家不想再丟骰子時須選擇 hold 結束回合。
- 玩家在回合裡丟的骰子點數總合將成為他的分數。例如這回合丟了三次的點數依序是 6、5、3,因此這回合的分數將加 14 分。
- 當玩家丟到 1 時,他將結束這回合,而且此回合丟出的骰子點數悲慘地全部不算分。
- 顯示贏家的名字和雙方的分數,點選 Replay 可再玩一次。
- 顯示累積的成績,比方左邊的玩家 3 勝 2 敗,右邊的玩家 2 勝 3 敗 。
那就來實作吧
從簡單到複雜~模式大概可以分成
- 人 vs 人
- 人 vs 電腦-交給電腦自己玩,要規劃設計停止(Hold)的策略
- 電腦 vs 電腦
先從最簡單的開始,人 vs 人,就是可以二個人手動玩的情況。
UI 設計
介面的話,就先模仿 http://cs.gettysburg.edu/projects/pig/piggame.html
玩家資訊面版
- 輪到你的指示號 ImageView
- 玩家名字 Label
- 進度條 View (已取得的分數,)
- 目前總分 Label
- 玩家的總勝利場次 Label
我們有二個玩家,所以做好第一個後,copy 就有第二個玩家資訊面版了。
回合訊息面版
- 目前回合數的 Label,顯示二個訊息,第幾場 — 第幾回合
- 插圖
回合操作面版
- 骰子圖片 ImageView
- 兩個按鈕,分別是 ”Roll” 和 ”Hold”,在按鈕背後加背景圖強化一下按鍵的樣子。
- 這回合累積的分數 Label
整體的樣貌
插圖跟Icon
這次的美術,是請 Bing 叫 DALL.E.3 幫忙畫一下圖
選一個小圖切出來當 Icon,轉成 1024x1024尺寸。
跑起來的效果看起來還不錯。
就先這樣啦,先標記為 v1 Tag,有空來美化一下UI,還有處理一下人 vs 電腦的部份。
參考
wiki : Pig (dice game)
Pig 是一種簡單的骰子遊戲,由 John Scarne 於 1945 年首次在印刷品中描述。[1] 玩家輪流擲骰子,次數不限,將所有擲骰結果加到總分中,但如果擲出 1,則失去該回合獲得的分數。
影片: How To Play Pig (Dice Game)
數學: The Math of Being a Greedy Pig — Numberphile