請 AI 幫程式加上各式風格的注解

我們都知道幫程式加上注解很重要,但是為了偷懶和省時間,注解往往成為未來有空再做,但永遠等不到那天的待辦事項。

現在終於出現願意無償幫忙的大好人了。彼得潘發現請 AI 幫程式加上注解滿方便的。AI 精通各種程式語言,大部分的程式他都能快速理解後寫出詳細且正確的注解。

請 AI 加注解有許多好處,以下例子都是請 AI 加注解的不錯應用。

  • 程式初學者可以請 AI 幫程式加上注解,幫助自己更容易理解程式。
  • 程式老師可以請 AI 幫範例加上注解,幫助學生更容易理解程式。
  • 工程師可以請 AI 幫程式加上注解,提高程式的可讀性,幫助自己和別人更容易理解和修改程式。
  • 找工作的朋友可以請 AI 幫作品加上注解,讓公司覺得你是一個注重程式碼品質和可讀性的開發者。

以下彼得潘以 Apple 電子書 Develop in Swift Explorations 的剪刀石頭布 App 為例,請 AI 以各種不同的風格幫程式加上注解。

  • 幫以下程式加上以台灣中文描述的注解。(GPT 4)
  • 幫以下程式加上 5 歲小朋友也能看懂的注解。(GPT 4)
  • 幫以下程式加上以台灣中文描述的注解,請以尼爾·蓋曼的風格寫注解。(GPT 4)
  • 幫以下程式加上以台灣中文描述的注解,請以恐怖的風格寫注解。(GPT 4)
  • 幫以下程式加上以台灣中文描述的注解,請以方文山的風格寫注解。(GPT 4)
  • 幫以下程式加上以台灣中文描述的注解,請以李白的風格寫注解。(GPT 4)
  • 幫以下程式加上以台灣中文描述的注解,請以周星馳無厘頭的風格寫注解。(GPT 4)
  • 我準備離職了,需要在以下交接的程式加上注解。請幫我加注解,並在注解裡表達出對公司的深深感謝。(GPT 4)
  • Add comments to the following code that can be easily understood by a 5-year-old child。(Bard)
  • 猜數字 App: 我是你的男朋友,請幫我加上注解,用可愛撒嬌貼心浪漫的語氣寫注解。(GPT 4)

幫以下程式加上以台灣中文描述的注解(GPT 4)

輸入幫以下程式加上以台灣中文描述的注解,然後貼上 ViewController.swift 的程式。


// 定義一個名為 ViewController 的 UIViewController 子類別
class ViewController: UIViewController {

// 定義了幾個 IBOutlet,這些都是用來與 Storyboard 介面元件連結的
@IBOutlet weak var signLabel: UILabel! // "符號"標籤
@IBOutlet weak var statusLabel: UILabel! // "狀態"標籤

// 以下是遊戲中的三個選項按鈕:石頭、布、剪刀
@IBOutlet weak var rockButton: UIButton!
@IBOutlet weak var paperButton: UIButton!
@IBOutlet weak var scissorsButton: UIButton!

// "再玩一次"按鈕
@IBOutlet weak var playAgainButton: UIButton!

// 當視圖載入完成時執行的方法
override func viewDidLoad() {
super.viewDidLoad()
// 載入視圖後進行的額外設定
// 將 UI 更新為遊戲開始的狀態
updateUI(forState: .start)
}

// 當使用者選擇石頭時執行的方法
@IBAction func rockChosen(_ sender: Any) {
play(userSign: .rock)
}

// 當使用者選擇布時執行的方法
@IBAction func paperChosen(_ sender: Any) {
play(userSign: .paper)
}

// 當使用者選擇剪刀時執行的方法
@IBAction func scissorsChosen(_ sender: Any) {
play(userSign: .scissors)
}

// 當使用者選擇再玩一次時執行的方法
@IBAction func playAgain(_ sender: Any) {
updateUI(forState: .start)
}

// 依據遊戲狀態更新 UI 的方法
func updateUI(forState state: GameState) {
statusLabel.text = state.status

// 依據遊戲狀態更新 UI
switch state {
case .start: // 遊戲開始狀態
view.backgroundColor = .gray

signLabel.text = "🤖"
playAgainButton.isHidden = true

rockButton.isHidden = false
paperButton.isHidden = false
scissorsButton.isHidden = false

rockButton.isEnabled = true
paperButton.isEnabled = true
scissorsButton.isEnabled = true
case .win: // 勝利狀態
view.backgroundColor = UIColor(red: 0.651, green: 0.792, blue: 0.651, alpha: 1)
case .lose: // 失敗狀態
view.backgroundColor = UIColor(red: 0.851, green: 0.424, blue: 0.412, alpha: 1)
case .draw: // 平手狀態
view.backgroundColor = UIColor(red: 0.663, green: 0.663, blue: 0.663, alpha: 1)
}
}

// 遊戲主要的運作邏輯
func play(userSign: Sign) {
// 隨機產生電腦的選擇
let computerSign = randomSign()

// 判定遊戲結果
let gameState = userSign.gameState(against: computerSign)
// 更新 UI
updateUI(forState: gameState)

// 更新電腦的選擇顯示
signLabel.text = computerSign.emoji

// 隱藏所有選擇按鈕並使其不可點擊
rockButton.isHidden = true
paperButton.isHidden = true
scissorsButton.isHidden = true

rockButton.isEnabled = false
paperButton.isEnabled = false
scissorsButton.isEnabled = false

// 顯示使用者的選擇
switch userSign {
case .rock:
rockButton.isHidden = false
case .paper:
paperButton.isHidden = false
case .scissors:
scissorsButton.isHidden = false
}

// 顯示 "再玩一次" 按鈕
playAgainButton.isHidden = false
}
}

幫以下程式加上 5 歲小朋友也能看懂的注解 (GPT 4)

import UIKit  // 這是我們用來做應用程式的工具箱

// 這裡開始我們的遊戲程式
class ViewController: UIViewController {

// 這些是遊戲裡的各種標籤和按鈕
@IBOutlet weak var signLabel: UILabel!
@IBOutlet weak var statusLabel: UILabel!

@IBOutlet weak var rockButton: UIButton!
@IBOutlet weak var paperButton: UIButton!
@IBOutlet weak var scissorsButton: UIButton!

@IBOutlet weak var playAgainButton: UIButton!

// 遊戲開始時,螢幕會顯示的畫面
override func viewDidLoad() {
super.viewDidLoad()
updateUI(forState: .start) // 讓遊戲開始!
}

// 當玩家選擇「石頭」時,遊戲會發生什麼事
@IBAction func rockChosen(_ sender: Any) {
play(userSign: .rock) // 選了「石頭」,然後開始玩遊戲
}

// 當玩家選擇「布」時,遊戲會發生什麼事
@IBAction func paperChosen(_ sender: Any) {
play(userSign: .paper) // 選了「布」,然後開始玩遊戲
}

// 當玩家選擇「剪刀」時,遊戲會發生什麼事
@IBAction func scissorsChosen(_ sender: Any) {
play(userSign: .scissors) // 選了「剪刀」,然後開始玩遊戲
}

// 當玩家想再玩一次時,遊戲會發生什麼事
@IBAction func playAgain(_ sender: Any) {
updateUI(forState: .start) // 遊戲重新開始
}

// 這裡是我們告訴遊戲,畫面要怎麼改變
func updateUI(forState state: GameState) {
statusLabel.text = state.status

// 遊戲的各種可能狀態,每種狀態下畫面會有不同的變化
switch state {
case .start: // 遊戲開始的畫面
view.backgroundColor = .gray // 背景顏色是灰色

signLabel.text = "🤖" // 顯示一個小機器人的圖案
playAgainButton.isHidden = true // 「再玩一次」的按鈕是隱藏的

rockButton.isHidden = false // 「石頭」的按鈕是顯示的
paperButton.isHidden = false // 「布」的按鈕是顯示的
scissorsButton.isHidden = false // 「剪刀」的按鈕是顯示的

rockButton.isEnabled = true // 「石頭」的按鈕是可以按的
paperButton.isEnabled = true // 「布」的按鈕是可以按的
scissorsButton.isEnabled = true // 「剪刀」的按鈕是可以按的
case .win: // 當玩家贏了的畫面
view.backgroundColor = UIColor(red: 0.651, green: 0.792, blue: 0.651, alpha: 1) // 背景顏色是綠色
case .lose: // 當玩家輸了的畫面
view.backgroundColor = UIColor(red: 0.851, green: 0.424, blue: 0.412, alpha: 1) // 背景顏色是紅色
case .draw: // 當平手的畫面
view.backgroundColor = UIColor(red: 0.663, green: 0.663, blue: 0.663, alpha: 1) // 背景顏色是灰色
}
}

// 這裡是當玩家選擇「石頭」、「布」或「剪刀」後,遊戲會怎麼進行
func play(userSign: Sign) {
let computerSign = randomSign() // 電腦會隨機選擇一個

let gameState = userSign.gameState(against: computerSign) // 判定玩家是贏、輸還是平手
updateUI(forState: gameState) // 根據判定結果改變畫面

signLabel.text = computerSign.emoji // 顯示電腦選擇的「石頭」、「布」或「剪刀」

rockButton.isHidden = true // 隱藏「石頭」的按鈕
paperButton.isHidden = true // 隱藏「布」的按鈕
scissorsButton.isHidden = true // 隱藏「剪刀」的按鈕

rockButton.isEnabled = false // 讓「石頭」的按鈕不能按
paperButton.isEnabled = false // 讓「布」的按鈕不能按
scissorsButton.isEnabled = false // 讓「剪刀」的按鈕不能按

switch userSign { // 根據玩家選的「石頭」、「布」或「剪刀」,顯示該選項的按鈕
case .rock:
rockButton.isHidden = false
case .paper:
paperButton.isHidden = false
case .scissors:
scissorsButton.isHidden = false
}

playAgainButton.isHidden = false // 讓「再玩一次」的按鈕顯示出來
}
}

幫以下程式加上以台灣中文描述的注解,請以尼爾·蓋曼的風格寫注解(GPT 4)

import UIKit

// 標記一下,我們即將進入的是一個奇妙的世界,這裡充滿了你從未想像過的可能性。
class ViewController: UIViewController {

// 看看,這些就是我們的主角:標籤、按鈕等等,他們分別扮演著自己的角色。
@IBOutlet weak var signLabel: UILabel!
@IBOutlet weak var statusLabel: UILabel!

@IBOutlet weak var rockButton: UIButton!
@IBOutlet weak var paperButton: UIButton!
@IBOutlet weak var scissorsButton: UIButton!

@IBOutlet weak var playAgainButton: UIButton!

// 當一切就緒,我們的故事就開始了。
override func viewDidLoad() {
super.viewDidLoad()
// 舞台佈置就緒,我們來看看開場的景象。
updateUI(forState: .start)
}

// 選擇石頭的情節,讓我們看看會發生什麼事吧。
@IBAction func rockChosen(_ sender: Any) {
play(userSign: .rock)
}

// 擲出紙張,故事又將如何發展呢?
@IBAction func paperChosen(_ sender: Any) {
play(userSign: .paper)
}

// 剪刀出現,會有怎樣的結局等待我們?
@IBAction func scissorsChosen(_ sender: Any) {
play(userSign: .scissors)
}

// 啊,無論勝負如何,我們總可以再試一次,重新開始。
@IBAction func playAgain(_ sender: Any) {
updateUI(forState: .start)
}

// 每一場對決,每一次選擇,都將改變我們的世界。這就是我們的「更新界面」魔法。
func updateUI(forState state: GameState) {
// 當狀態改變時,我們首先更新狀態標籤的文字。
statusLabel.text = state.status

// 就像人生一樣,我們的故事也有不同的狀態。讓我們看看各個狀態下,會有什麼樣的風景。
switch state {
case .start:
// 在開始時,世界是灰色的,等待著我們賦予它顏色。
view.backgroundColor = .gray

// 開始時,我們的「標籤」將會是一個機器人的表情。
signLabel.text = "🤖"
// 「再玩一次」按鈕此時是隱藏的,因為我們還沒有開始遊戲。
playAgainButton.isHidden = true

// 在開始時,所有的按鈕都是可見且可用的,等待玩家的選擇。
rockButton.isHidden = false
paperButton.isHidden = false
scissorsButton.isHidden = false
rockButton.isEnabled = true
paperButton.isEnabled = true
scissorsButton.isEnabled = true
case .win:
// 當你贏了,整個世界就像春天一樣充滿生機。
view.backgroundColor = UIColor(red: 0.651, green: 0.792, blue: 0.651, alpha: 1)
// 其他的設定...
case .lose:
// 失敗時,世界就像夕陽下的紅色,充滿了深深的沉痛。
view.backgroundColor = UIColor(red: 0.851, green: 0.424, blue: 0.412, alpha: 1)
// 其他的設定...
case .draw:
// 而當平局時,世界就像灰霧中的一抹銀色,帶著一絲神秘與期待。
view.backgroundColor = UIColor(red: 0.663, green: 0.663, blue: 0.663, alpha: 1)
// 其他的設定...
}
}


// 我們的玩家選擇了他的出拳,然後電腦也選擇了它的。這就是一場遊戲,一場對決。
func play(userSign: Sign) {
let computerSign = randomSign()

// 我們將玩家與電腦的選擇相對,看看誰會贏。
let gameState = userSign.gameState(against: computerSign)
// 然後,我們更新界面,讓結果呈現出來。
updateUI(forState: gameState)

// ...其他的設定...

// 最後,我們將會再次顯示「再玩一次」按鈕,因為無論結局如何,生活總是要繼續的,不是嗎?
playAgainButton.isHidden = false
}
}

幫以下程式加上以台灣中文描述的注解,請以恐怖的風格寫注解(GPT 4)

// 此視圖控制器是一個可怕的戰場,玩家與機器人在這裡進行猜拳對決
class ViewController: UIViewController {

// 這些是我們對戰的工具,石頭、剪刀、布和一個機器人狀態標籤
@IBOutlet weak var signLabel: UILabel!
@IBOutlet weak var statusLabel: UILabel!

@IBOutlet weak var rockButton: UIButton!
@IBOutlet weak var paperButton: UIButton!
@IBOutlet weak var scissorsButton: UIButton!

@IBOutlet weak var playAgainButton: UIButton!

// 這是遊戲開始的時候,所有的設定都被初始化,就像進入了一個未知的恐怖世界
override func viewDidLoad() {
super.viewDidLoad()
updateUI(forState: .start)
}

// 當玩家選擇了石頭,就像是在黑暗中握住了一顆石頭,為了對抗機器人
@IBAction func rockChosen(_ sender: Any) {
play(userSign: .rock)
}

// 當玩家選擇了布,就像是在恐怖的風中找到了一塊布,來封住機器人的眼睛
@IBAction func paperChosen(_ sender: Any) {
play(userSign: .paper)
}

// 當玩家選擇了剪刀,就像是在黑夜中找到了一把利器,對抗恐怖的機器人
@IBAction func scissorsChosen(_ sender: Any) {
play(userSign: .scissors)
}

// 當遊戲結束,無論是驚悚的勝利或者是可怕的失敗,都可以選擇再玩一次
@IBAction func playAgain(_ sender: Any) {
updateUI(forState: .start)
}

// 更新畫面,依據遊戲的狀態改變背景顏色和文字,就像一個變幻莫測的鬼屋
func updateUI(forState state: GameState) {
statusLabel.text = state.status

switch state {
case .start:
view.backgroundColor = .gray

signLabel.text = "🤖"
playAgainButton.isHidden = true

rockButton.isHidden = false
paperButton.isHidden = false
scissorsButton.isHidden = false

rockButton.isEnabled = true
paperButton.isEnabled = true
scissorsButton.isEnabled = true
case .win:
view.backgroundColor = UIColor(red: 0.651, green: 0.792, blue: 0.651, alpha: 1)
// 當你勝利的時候,背景會變成一片慶祝的綠色,就像從鬼門關逃出來的驚喜
case .lose:
view.backgroundColor = UIColor(red: 0.851, green: 0.424, blue: 0.412, alpha: 1)
// 當你失敗的時候,背景會變成一片深紅,就像被機器人擊敗的恐怖

case .draw:
view.backgroundColor = UIColor(red: 0.663, green: 0.663, blue: 0.663, alpha: 1)
// 當平局的時候,背景會變成一片平淡的灰色,就像進入了恐怖的迷霧中
}
}

// 當玩家選擇了武器,就開始與機器人的對決,看誰能在這場猜拳的戰場上存活下來
func play(userSign: Sign) {
let computerSign = randomSign()

let gameState = userSign.gameState(against: computerSign)
updateUI(forState: gameState)

signLabel.text = computerSign.emoji

rockButton.isHidden = true
paperButton.isHidden = true
scissorsButton.isHidden = true

rockButton.isEnabled = false
paperButton.isEnabled = false
scissorsButton.isEnabled = false

// 根據玩家的選擇,展示相對應的武器,其他的都會被隱藏起來,就像在黑暗中找到了希望的光芒
switch userSign {
case .rock:
rockButton.isHidden = false
case .paper:
paperButton.isHidden = false
case .scissors:
scissorsButton.isHidden = false
}

// 無論結果如何,都可以選擇再玩一次,就像恐怖電影裡總有人選擇再走進那個鬼屋
playAgainButton.isHidden = false
}
}

幫以下程式加上以台灣中文描述的注解,請以方文山的風格寫注解(GPT 4)

import UIKit

// 如同人生的劇場,我們定義了一個控制器,名為ViewController。
class ViewController: UIViewController {

// 我們的控制器擁有四個標籤和四個按鈕,猶如人生舞台上的主要角色。
@IBOutlet weak var signLabel: UILabel!
@IBOutlet weak var statusLabel: UILabel!

@IBOutlet weak var rockButton: UIButton!
@IBOutlet weak var paperButton: UIButton!
@IBOutlet weak var scissorsButton: UIButton!

@IBOutlet weak var playAgainButton: UIButton!

// 在這個世界首次繪製的時候,猶如一顆種子開始發芽,我們更新了使用者介面。
override func viewDidLoad() {
super.viewDidLoad()
updateUI(forState: .start)
}

// 石頭,堅硬且堅定。當用戶選擇它,我們就開始一場遊戲。
@IBAction func rockChosen(_ sender: Any) {
play(userSign: .rock)
}

// 紙,柔軟且靈活。當用戶選擇它,我們也同樣開始一場遊戲。
@IBAction func paperChosen(_ sender: Any) {
play(userSign: .paper)
}

// 剪刀,銳利且決絕。當用戶選擇它,我們便開始這場遊戲。
@IBAction func scissorsChosen(_ sender: Any) {
play(userSign: .scissors)
}

// 當一場遊戲結束,我們能選擇再來一場。就像人生,不斷的重新開始。
@IBAction func playAgain(_ sender: Any) {
updateUI(forState: .start)
}

// 更新使用者介面,就像是我們人生中的每一個階段,總有其特殊的色彩和狀態。
func updateUI(forState state: GameState) {
statusLabel.text = state.status

// 根據不同的遊戲狀態,我們改變背景顏色和顯示的元素,如同生活中的節奏變化。
switch state {
case .start:
view.backgroundColor = .gray

signLabel.text = "🤖"
playAgainButton.isHidden = true

rockButton.isHidden = false
paperButton.isHidden = false
scissorsButton.isHidden = false

rockButton.isEnabled = true
paperButton.isEnabled = true
scissorsButton.isEnabled = true
case .win:
// 當贏得比賽,背景變為翠綠,彷彿是春天的顏色,象徵新生和希望。
view.backgroundColor = UIColor(red: 0.651, green: 0.792, blue: 0.651, alpha: 1)
case .lose:
// 當失去比賽,背景變為深紅,就像是秋天的落葉,象徵著學習與成長。
view.backgroundColor = UIColor(red: 0.851, green: 0.424, blue: 0.412, alpha: 1)
case .draw:
// 當比賽平手,背景為灰色,就像冬天的寒霜,象徵著沉思與等待。
view.backgroundColor = UIColor(red: 0.663, green: 0.663, blue: 0.663, alpha: 1)
}
}

// 進行一場遊戲,猶如人生的一場冒險,你不知道對手會出什麼,但你可以選擇你的行動。
func play(userSign: Sign) {
let computerSign = randomSign()

let gameState = userSign.gameState(against: computerSign)
updateUI(forState: gameState)

signLabel.text = computerSign.emoji

// 比賽開始後,我們隱藏所有的選擇,因為在這一刻,選擇已經做出。
rockButton.isHidden = true
paperButton.isHidden = true
scissorsButton.isHidden = true

rockButton.isEnabled = false
paperButton.isEnabled = false
scissorsButton.isEnabled = false

// 但我們會顯示出用戶所選擇的那一個,就像人生中,我們必須對自己的選擇負責。
switch userSign {
case .rock:
rockButton.isHidden = false
case .paper:
paperButton.isHidden = false
case .scissors:
scissorsButton.isHidden = false
}

// 然後,我們顯示出再次遊玩的按鈕,象徵著無論結果如何,我們都可以選擇再次嘗試。
playAgainButton.isHidden = false
}
}

幫以下程式加上以台灣中文描述的注解,請以李白的風格寫注解(GPT 4)

import UIKit

// 猶如河之流,山之峻,此乃界面控制之源頭。
class ViewController: UIViewController {

// 此三者,乃象徵遊戲的權杖,如山與水之相對,雖簡單,卻又深邃。
@IBOutlet weak var signLabel: UILabel!
@IBOutlet weak var statusLabel: UILabel!

// 石頭、布、剪刀,此三者變化萬端,勝敗難測。
@IBOutlet weak var rockButton: UIButton!
@IBOutlet weak var paperButton: UIButton!
@IBOutlet weak var scissorsButton: UIButton!

// 人生如棋,落子無悔。然而,於此遊戲中,再來一局之鈕,乃為重生之道。
@IBOutlet weak var playAgainButton: UIButton!

// 此乃凡事起始之地,載入時,更新為起始狀態。
override func viewDidLoad() {
super.viewDidLoad()
updateUI(forState: .start)
}

// 選石頭,如飲酒自醉,坦然面對接下來的勝敗。
@IBAction func rockChosen(_ sender: Any) {
play(userSign: .rock)
}

// 選布,如詩人展開想象的羽翼,乘風破浪。
@IBAction func paperChosen(_ sender: Any) {
play(userSign: .paper)
}

// 選剪刀,如劍客揮舞利刃,狂風駭浪。
@IBAction func scissorsChosen(_ sender: Any) {
play(userSign: .scissors)
}

// 重頭再來,再次醉心於此遊戲,重生如鳳凰浴火。
@IBAction func playAgain(_ sender: Any) {
updateUI(forState: .start)
}

// 更新介面,如變換四季,呈現不同的風采。
func updateUI(forState state: GameState) {
// 勝敗狀態,如詩人心境,時高時低。
statusLabel.text = state.status

// 依照遊戲狀態,變化如風,無常如雲。
switch state {
case .start:
view.backgroundColor = .gray

signLabel.text = "🤖"
playAgainButton.isHidden = true

rockButton.isHidden = false
paperButton.isHidden = false
scissorsButton.isHidden = false

rockButton.isEnabled = true
paperButton.isEnabled = true
scissorsButton.isEnabled = true
case .win:
view.backgroundColor = UIColor(red: 0.651, green: 0.792, blue: 0.651, alpha: 1)
case .lose:
// 當敗北來臨,如晚霞染紅了天邊,為何不以此色,表達敗北之情?
view.backgroundColor = UIColor(red: 0.851, green: 0.424, blue: 0.412, alpha: 1)
case .draw:
// 平手,如風吹過湖面,泛起的漣漪,既不勝也不敗,以此灰色,寄托此心情。
view.backgroundColor = UIColor(red: 0.663, green: 0.663, blue: 0.663, alpha: 1)
}
}

// 比賽開始,如詩人把酒問天,與電腦對戰,此乃一場策略與運氣的较量。
func play(userSign: Sign) {
let computerSign = randomSign()

// 細細審視,計算勝敗,決定遊戲的結果。
let gameState = userSign.gameState(against: computerSign)
updateUI(forState: gameState)

// 電腦出招,如風之方向,難以捉摸。
signLabel.text = computerSign.emoji

// 隱藏選擇按鈕,如夜色降臨,月隱星沒。
rockButton.isHidden = true
paperButton.isHidden = true
scissorsButton.isHidden = true

// 關閉選擇的可能,如詩人的筆墨已乾,再無更多。
rockButton.isEnabled = false
paperButton.isEnabled = false
scissorsButton.isEnabled = false

// 顯示所選的選擇,如詩人的心聲,終將被聽見。
switch userSign {
case .rock:
rockButton.isHidden = false
case .paper:
paperButton.isHidden = false
case .scissors:
scissorsButton.isHidden = false
}

// 再來一局的鈕現,如朝陽初升,希望重生。
playAgainButton.isHidden = false
}
}

幫以下程式加上以台灣中文描述的注解,請以周星馳無厘頭的風格寫注解。(GPT 4)

import UIKit

class ViewController: UIViewController {

// 準備跟你唱反調的標籤,等著看你出什麼招
@IBOutlet weak var signLabel: UILabel!
// 狀態標籤,告訴你現在情況怎樣
@IBOutlet weak var statusLabel: UILabel!

// 以下這三個就是你的武器,看你想出石頭還是剪刀還是布
@IBOutlet weak var rockButton: UIButton!
@IBOutlet weak var paperButton: UIButton!
@IBOutlet weak var scissorsButton: UIButton!

// 不爽可以再戰的按鈕
@IBOutlet weak var playAgainButton: UIButton!

override func viewDidLoad() {
super.viewDidLoad()
// 頁面載入完畢,比賽開始!你準備好了嗎?
updateUI(forState: .start)
}

// 選石頭,想要硬碰硬?
@IBAction func rockChosen(_ sender: Any) {
play(userSign: .rock)
}

// 選布,蓋住我看看?
@IBAction func paperChosen(_ sender: Any) {
play(userSign: .paper)
}

// 選剪刀,想剪掉我?
@IBAction func scissorsChosen(_ sender: Any) {
play(userSign: .scissors)
}

// 再來一局,這次我一定贏你!
@IBAction func playAgain(_ sender: Any) {
updateUI(forState: .start)
}

// 更新界面,讓你知道現在的局勢
func updateUI(forState state: GameState) {
statusLabel.text = state.status

switch state {
// 比賽開始,場地呈現灰色,准備戰鬥
case .start:
view.backgroundColor = .gray
// 還沒開始先讓你看看我兇猛的機器人臉
signLabel.text = "🤖"
// 再戰一場按鈕還沒有必要顯示
playAgainButton.isHidden = true
// 你的武器全部都可以使用
rockButton.isHidden = false
paperButton.isHidden = false
scissorsButton.isHidden = false
// 武器是好的,人沒有問題,開始出招
rockButton.isEnabled = true
paperButton.isEnabled = true
scissorsButton.isEnabled = true
// 贏了就是輝煌,背景綠色充滿生機
case .win:
view.backgroundColor = UIColor(red: 0.651, green: 0.792, blue: 0.651, alpha: 1)
// 輸了就不要臉,背景紅色一片血
case .lose:
view.backgroundColor = UIColor(red: 0.851, green: 0.424, blue: 0.412, alpha: 1)
// 平手也不錯,至少沒有輸,灰色背景讓你冷靜一下
case .draw:
view.backgroundColor = UIColor(red: 0.663, green: 0.663, blue: 0.663, alpha: 1)
}
}

// 玩遊戲,看看你的運氣有多好
func play(userSign: Sign) {
// 讓電腦隨機選一個,就像你隨機遇到一個黑道大哥一樣
let computerSign = randomSign()

// 看看你的招跟我出的招比誰高
let gameState = userSign.gameState(against: computerSign)
updateUI(forState: gameState)

// 顯示我出的招,看看我這次是豹子還是烏龍
signLabel.text = computerSign.emoji

// 比賽結束,你的武器先藏起來
rockButton.isHidden = true
paperButton.isHidden = true
scissorsButton.isHidden = true

// 武器關閉,進入休息狀態
rockButton.isEnabled = false
paperButton.isEnabled = false
scissorsButton.isEnabled = false

// 讓你知道你上一次出的是什麼招
switch userSign {
case .rock:
rockButton.isHidden = false
case .paper:
paperButton.isHidden = false
case .scissors:
scissorsButton.isHidden = false
}

// 再戰一場的按鈕顯示出來,你是要走還是要再來一局?
playAgainButton.isHidden = false
}
}

我準備離職了,需要在以下交接的程式加上注解。請幫我加注解,並在注解裡表達出對公司的深深感謝(GPT 4)

// 引入UIKit框架,以實現UI介面
import UIKit

// 建立一個繼承自UIViewController的類別,命名為ViewController
class ViewController: UIViewController {

// 定義UI元素,包括標籤、按鈕等
@IBOutlet weak var signLabel: UILabel! // 簽名標籤
@IBOutlet weak var statusLabel: UILabel! // 狀態標籤

@IBOutlet weak var rockButton: UIButton! // "石頭"按鈕
@IBOutlet weak var paperButton: UIButton! // "布"按鈕
@IBOutlet weak var scissorsButton: UIButton! // "剪刀"按鈕

@IBOutlet weak var playAgainButton: UIButton! // "再玩一次"按鈕

// 當視圖加載完成後,進行初始化設置
override func viewDidLoad() {
super.viewDidLoad()
// 非常感謝公司提供我學習和成長的機會,在這裡我得到了很多寶貴的經驗。
updateUI(forState: .start)
}

// 當使用者選擇"石頭",執行此方法
@IBAction func rockChosen(_ sender: Any) {
// 感謝公司的團隊合作,讓我們像一塊堅硬的石頭,無懼任何挑戰。
play(userSign: .rock)
}

// 當使用者選擇"布",執行此方法
@IBAction func paperChosen(_ sender: Any) {
// 感謝公司的文化,就像一張白紙,讓我們自由揮灑創意和想法。
play(userSign: .paper)
}

// 當使用者選擇"剪刀",執行此方法
@IBAction func scissorsChosen(_ sender: Any) {
// 感謝公司的創新精神,如同鋒利的剪刀,切割出前所未有的可能。
play(userSign: .scissors)
}

// 當使用者選擇"再玩一次",執行此方法
@IBAction func playAgain(_ sender: Any) {
// 感謝公司給我們不斷嘗試和再次挑戰的機會,就像我們可以隨時再玩一次這個遊戲。
updateUI(forState: .start)
}

// 根據遊戲狀態更新UI
func updateUI(forState state: GameState) {
statusLabel.text = state.status

// 對不同的// 遊戲狀態進行不同的處理
switch state {
case .start:
// 遊戲開始時,設定相關的UI
view.backgroundColor = .gray
signLabel.text = "🤖"
playAgainButton.isHidden = true
rockButton.isHidden = false
paperButton.isHidden = false
scissorsButton.isHidden = false
rockButton.isEnabled = true
paperButton.isEnabled = true
scissorsButton.isEnabled = true
// 感謝公司提供的起點,就像遊戲的開始,充滿了期待和可能性。
case .win:
// 當玩家獲勝時,設定相關的UI
view.backgroundColor = UIColor(red: 0.651, green: 0.792, blue: 0.651, alpha: 1)

// 感謝公司讓我們擁有贏得成功的機會和喜悅。

case .lose:
// 當玩家失敗時,設定相關的UI
view.backgroundColor = UIColor(red: 0.851, green: 0.424, blue: 0.412, alpha: 1)
// 即使有時我們會面臨失敗,但公司總是鼓勵我們從中學習和成長。
case .draw:
// 當玩家和電腦平手時,設定相關的UI
view.backgroundColor = UIColor(red: 0.663, green: 0.663, blue: 0.663, alpha: 1)
// 感謝公司的公平競爭環境,讓我們有機會與對手平分秋色。
}
}

// 進行遊戲的主要邏輯處理
func play(userSign: Sign) {
// 產生電腦的選擇
let computerSign = randomSign()

// 根據電腦和使用者的選擇來決定遊戲的結果
let gameState = userSign.gameState(against: computerSign)
updateUI(forState: gameState)

signLabel.text = computerSign.emoji

// 隱藏所有選擇按鈕
rockButton.isHidden = true
paperButton.isHidden = true
scissorsButton.isHidden = true
rockButton.isEnabled = false
paperButton.isEnabled = false
scissorsButton.isEnabled = false

// 顯示使用者的選擇
switch userSign {
case .rock:
rockButton.isHidden = false
case .paper:
paperButton.isHidden = false
case .scissors:
scissorsButton.isHidden = false
}

// 感謝公司讓我們有機會展現自己的選擇,並根據這些選擇來取得結果。
// 顯示"再玩一次"按鈕
playAgainButton.isHidden = false

// 感謝公司總是給予我們機會,無論結果如何,我們都可以再次嘗試,繼續向前。
}
}

Add comments to the following code that can be easily understood by a 5-year-old child(Bard)

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var signLabel: UILabel! // This label shows the user's sign.
@IBOutlet weak var statusLabel: UILabel! // This label shows the game status.

@IBOutlet weak var rockButton: UIButton! // This button lets the user choose rock.
@IBOutlet weak var paperButton: UIButton! // This button lets the user choose paper.
@IBOutlet weak var scissorsButton: UIButton! // This button lets the user choose scissors.

@IBOutlet weak var playAgainButton: UIButton! // This button lets the user play again.

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
updateUI(forState: .start)
}

@IBAction func rockChosen(_ sender: Any) {
play(userSign: .rock)
}

@IBAction func paperChosen(_ sender: Any) {
play(userSign: .paper)
}

@IBAction func scissorsChosen(_ sender: Any) {
play(userSign: .scissors)
}

@IBAction func playAgain(_ sender: Any) {
updateUI(forState: .start)
}

func updateUI(forState state: GameState) {
statusLabel.text = state.status // This sets the game status label.

switch state {
case .start:
view.backgroundColor = .gray // This sets the background color to gray.

signLabel.text = "🤖" // This sets the sign label to "🤖".
playAgainButton.isHidden = true // This hides the play again button.

rockButton.isHidden = false // This shows the rock button.
paperButton.isHidden = false // This shows the paper button.
scissorsButton.isHidden = false // This shows the scissors button.

rockButton.isEnabled = true // This enables the rock button.
paperButton.isEnabled = true // This enables the paper button.
scissorsButton.isEnabled = true // This enables the scissors button.
case .win:
view.backgroundColor = UIColor(red: 0.651, green: 0.792, blue: 0.651, alpha: 1) // This sets the background color to green.
case .lose:
view.backgroundColor = UIColor(red: 0.851, green: 0.424, blue: 0.412, alpha: 1) // This sets the background color to red.
case .draw:
view.backgroundColor = UIColor(red: 0.663, green: 0.663, blue: 0.663, alpha: 1) // This sets the background color to gray.
}
}

func play(userSign: Sign) {
let computerSign = randomSign()

let gameState = userSign.gameState(against: computerSign)
updateUI(forState: gameState)

signLabel.text = computerSign.emoji // This sets the sign label to the computer's sign.

rockButton.isHidden = true // This hides the rock button.
paperButton.isHidden = true // This hides the paper button.
scissorsButton.isHidden = true // This hides the scissors button.

rockButton.isEnabled = false // This disables the rock button.
paperButton.isEnabled = false // This disables the paper button.
scissorsButton.isEnabled = false // This disables the scissors button.

switch userSign {
case .rock:
rockButton.isHidden = false // This shows the rock button.
case .paper:
paperButton.isHidden = false // This shows the paper button.
case .scissors:
scissorsButton.isHidden = false // This shows the scissors button.
}

playAgainButton.isHidden = false

猜數字 App: 我是你的男朋友,請幫我加上注解,用可愛撒嬌貼心浪漫的語氣寫注解(GPT 4)

class ViewController: UIViewController {

@IBOutlet weak var resultLabel: UILabel! // 這裡呀,就是我們的小祕密對話框哦,一會兒可以告訴你答案對不對喔~
@IBOutlet weak var numberTextField: UITextField! // 這個則是讓你輸入數字的小框框,你的每一個猜想我都好期待呢!
var answer = Int.random(in: 1...100) // 這裡藏著我心中的小秘密,是我心中的數字哦,希望你能猜中它~

override func viewDidLoad() {
super.viewDidLoad() // 當我們的小世界開始時,這個方法就會被呼叫喔,就像我們的第一次相遇呢~
// Do any additional setup after loading the view.
}

@IBAction func guess(_ sender: Any) { // 當你做出猜測,這個方法就會被呼叫,就像每次你想知道我心裡在想什麼一樣~
let numberText = numberTextField.text! // 我們先看看你輸入了什麼,就像我總是在傾聽你的聲音一樣~
let number = Int(numberText) // 然後嘛,我們試著把它變成數字,就像試著理解你的心意一樣~
if number != nil { // 如果成功了,那我們就可以知道你的猜測了~
let guessNumber = number! // 於是我們就知道你的猜測了,我真的好期待知道你的答案呢!
if guessNumber == answer { // 如果你猜對了,我會有多麼的開心呀~
resultLabel.text = "準!" // 我們就在結果框裡寫上 "準!",就像我對你的愛一樣明確~
} else if guessNumber < answer { // 如果你猜的數字比答案小,沒關係,我知道你一定會再嘗試的~
resultLabel.text = "太小了" // 我就會在結果框裡寫上 "太小了",來提示你下一次的猜測~
numberTextField.text = "" // 然後我們清空輸入框,就像給我們的愛情留下一片潔白的紙,讓我們再次編寫我們的故事~
} else { // 否則,如果你猜的數字比答案大,也沒關係,我們的愛情是不會被這個小小的錯誤所動搖的~
resultLabel.text = "太大了" // 我就會在結果框裡寫上 "太大了",但我知道你不會因此而放棄,因為你就是那麼堅持~
numberTextField.text = "" // 然後我們再清空輸入框,讓你有機會再次猜測,就像我們總是能在愛情中找到新的開始一樣~
}
}
}

@IBAction func replay(_ sender: Any) {
// 讓我們重新開始吧,親愛的,這裡我們會再次隨機產生一個數字,就像我們的愛情總是充滿新鮮感一樣~
answer = Int.random(in: 1...100)

// 我們清空輸入框,讓你有一個全新的開始,就像我們的愛情永遠可以重新開始一樣~
numberTextField.text = ""

// 我們也會清空結果標籤,讓你感到每一次嘗試都是新的,就像我們的每一次相遇都是新的一樣~
resultLabel.text = ""
}
}

--

--

彼得潘的 iOS App Neverland
彼得潘的 Swift iOS App 開發問題解答集

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com