第二遍從頭改過:
- 想法一:想用輸入數字,印出數字對應的拳。然後用數字做比對,得出贏家,但得不出結果。
- 想法二:改回直接印出文字,且用文字做比對,得出輸贏。
- 這裡學會了可以先列出array和使用i=rand(0..2),然後把i帶入array裡,變com[i]。
- 原來rand(0..2) 和 rand(3)會得出一樣的結果。
- 這裡遇到的困難點是:前面都跑得起來,但在if…end裡,設置有錯,所以一直error。解法是分段後,把每段if(elsif改回if)…else…end拆下來試。全部都跑得起來,再全部合起來跑。
第三次修改,加上輸入非rock、 paper、 scissors的因素。因為發現如果使用者輸入非rock、 paper、 scissors,會出現error,所以加上while迴圈。
結果:若是一開始輸入非rock、 paper、 scissors後,再輸入rock、 paper、 scissors,則程式表現正常。但若一開始輸入rock、 paper、 scissors,則會出現error…,需再輸入一遍rock、 paper、 scissors才能正常表現。目前不懂問題出在哪邊。
第四次修改:在while迴圈前,再加一遍if…end,這樣結果就是正常的了。
第五次修改:覺得重複的code太多,於是做value的設定。但如果設置一個value = “You are “ + player,然後puts value,player會出現最先輸入的值,而不是最後的值,但不影響結果。是個奇怪的點!
總結:
- 若是code很長,跑起來出錯。則拆段跑,跑得起來,再全部合起來跑。
- 永遠要記得反著想!才能找出盲點!
- 修改前,要開新檔案,之後才有依據做對照!
- 應該還能再更優化,加油!