#!/usr/bin/env ruby # -*- coding: utf-8 -*- def jyanken te = ["グー", "チョキ", "パー"] te[rand(te.length)] #te[rand(3)]となるためjyankenメソッドは、te[0]のグー, te[1]のチョキ, te[2]のパーのいずれかを返す end def taiketsu(x, y) #メソッドを定義してプログラムを短く printf("あなたが出したのは%sです。\n", x) sleep(1) printf("相手が出したのは%sです。\n", y) sleep(1) end while true #プログラム全体のループ puts "じゃんけんスタート! グー または チョキ または パー を入力してください。" #絵文字は環境で異なるため避けた方がよい while true #ジャンケンする部分のループ jibun = gets.chomp aite = jyanken #jyankenと書く度に乱数が発生するため、aiteに代入して値を固定 if jibun == "グー" && aite == "チョキ" || jibun == "チョキ" && aite == "パー" || jibun == "パー" && aite == "グー" taiketsu(jibun, aite) #taiketsuメソッドの仮引数xにjibunが、仮引数yにaiteが代入されて出力 puts "あなたの勝ちです!!" break elsif jibun == "グー" && aite == "パー" || jibun == "チョキ" && aite == "グー" || jibun == "パー" && aite == "チョキ" taiketsu(jibun, aite) puts "あなたの負けです" break elsif jibun == aite taiketsu(jibun, aite) puts "あいこで..." redo else puts "グー, チョキ, パーで答えてください" #誤入力が代入された文を出力しないよう、ここにはtaiketsuメソッドは書かない redo end end puts "もう一度やりますか?" #「やる か やらない で回答」という注意書きでの限定も可 mouitido = gets.chomp if mouitido == "やる" || mouitido == "はい" || mouitido == "YES" #||(または)で条件を増やせば、想定される様々な回答に適応可能 redo else #少し複雑になるため、ここでは「やる」「はい」「YES」以外はbreak break end end