実現したいこと
じゃんけんで自分が出す手を画面入力で選ぶことができる
相手プレーヤーが出す手をランダムで出力させる
じゃんけんで勝った側があっち向いてホイです指を差す方向を決める
じゃんけんで負けた側があっち向いてホイで顔を向ける方向を決める
勝負がついた場合はどちらが勝者かわかるように文字列などで出力する
あっち向いてホイまでの勝敗がついた際はプログラムを終了する(勝敗がつくまでは処理を繰り返す)
指定された数字以外の入力があった場合は「0~3の数字を入力してください」や「不正な値です」等のメッセージを表示して再入力を促す処理ができる
発生している問題・分からないこと
あっち向いてほいアプリを開発中ですが、ターミナルで指定のファイルを打ち込んでも、アプリが起動しない状況になります。
エラーメッセージ
error
1そもそも表示されない
該当のソースコード
equire "csv" puts "あっち向いてホイゲームを始めます" $case_pattern = nil class Janken def initialize() #繰り返し def initialize(draw = "あいこ", lose ="負け", win ="勝ち") @draw = draw @lose = lose @win = win end puts "最初はグー、じゃんけん・・・" #出力 puts "グーなら0、チョキなら1、パーなら2、を入力してください。"#定義 @input = gets.chomp.to_i while @input > 2 puts "入力が間違っています。" puts "グーなら0、チョキなら1、パーなら2、を入力してください。" @input = gets.chomp.to_i end end def judgement hand_type = ["グー","チョキ","パー"] my_hand = @input pc_hand = rand(0..2) puts "あなたは#{hand_type[my_hand]}です。" puts "コンピューターは#{hand_type[pc_hand]}です。" if my_hand == pc_hand puts "あいこで" elsif (my_hand == 0 && pc_hand == 1) || (my_hand == 1 && pc_hand == 2) || (my_hand == 2 && pc_hand == 0) puts "あっち向いて向いて" $case_pattern = "win" attimuite_hoi elsif (my_hand == 0 && pc_hand == 2) || (my_hand == 1 && pc_hand == 0) || (my_hand == 2 && pc_hand == 1) puts "あっち向いて" $case_pattern = "lose" attimuite_hoi end end def attimuite_hoi puts "0(上)1(下)2(左)3(右)" player = gets.to_i program =rand(3) directions = ["上","下","左","右"] puts "ほいっ" puts "あなたは#{directions[player]}を出しました" puts "相手は#{directions[program]}を出しました" if $case_pattern == "win" case when player == program puts"あなたの勝ちです" exit return false else puts"引き分けです" janken return true end end if $case_pattern == "lose" case when player == program puts"あなたの負けです" return false else puts"引き分けです" janken return true end end end next_game = true while next_game next_game = Janken end end
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
同様のエラーを検索し、コードを打ち込む等試してみましたが、解決に至りませんでした。
補足
特になし
![guest](/img/icon/icnUserSample.jpg)
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/06/15 11:03
2024/06/15 11:12