Ruby_剪刀石頭布

在看課程範例時,程式碼總好像很自然地「該是那樣」,等到自己要動手練習才發現跟自己想的差太多了(怎麼都跑不起來?)。今天在 Ruby 玩個剪刀石頭布,順便複習基礎運算和流程控制吧!

這次要打造的「剪刀-石頭-布」小遊戲規則為:

  1. 只有兩位參賽者,一個是玩家,另一個是電腦
  2. 只比賽一回合
  3. 玩家要從剪刀 (scissors) ,石頭 (rock) 或布 (paper) 選擇其中之一個
  4. 玩家先輸入一個選擇,電腦再隨機選擇一個
  5. 接著電腦來分辨勝負:剪刀贏布、布贏石頭、石頭贏剪刀
  6. 宣告勝負:玩家贏、電腦贏、或是平手

這是我原本的程式碼 ➫

但是一直跑出詭異的結果,無論輸多少數字進去,都會宣告玩家 Lose,很明顯地在邏輯上有出錯。我最開始是想用 Assign 的 = 把數字跟字串連在一起,輸出後系統顯示 Syntax Error,我的想法是雖然我是想要把電腦隨機丟出來的數字 0, 1, 2 轉換成剪刀石頭布的字串,但因為最開始玩家輸入的內容也是一樣的字串,可能系統會搞錯我的意思。

這是學長姐寫出來的 Code ➫

  • 讓使用者輸入字串是 gets.chomp,整數是 gets.to_i
  • rand(3) = 0, 1, 2,因為學長姐是請使用者輸 1-3,我擅自多加了 1 (看起來是對的?)
  • 學長姐很聰明的是,他們直接先把玩家獲勝的可能性寫完,剩下電腦獲勝的用 else 來解決就好,不用像我一條一條

4 thoughts on “Ruby_剪刀石頭布

Leave a Reply

Your email address will not be published. Required fields are marked *