↓↓クリックして頂けると励みになります。
<<前 [TOP] 次>>
メモ帳を開いて次のプログラムを作ってみましょう。
【saikoro1.rb】
# saikoro1.rb def throwDices(score) me1 = rand(0..5).to_i me2 = rand(0..5).to_i showDices( me1, me2 ) score = checkPoints( me1, me2, score ) return score end def showDices( a, b ) diceStrings = ['| * |', '| : |', '|...|', '|: :|','|:.:|','|:::|'] puts '' puts (diceStrings[a]).to_s + ' ' + (diceStrings[b]).to_s puts '' end def checkPoints( a, b, score ) bet = 5 c = a + b + 2 if ( c%2 == 0 ) then if ( a == b ) then score += bet*2 puts 'あなたは ' + (bet*2).to_s + '$ 勝ちました。' else score += bet puts 'あなたは ' + bet.to_s + '$ 勝ちました。' end else if( c == 7 ) score -= bet*15 puts 'あなたは ' + (bet*15).to_s + '$ 負けました。' else score -= bet*10 puts 'あなたは ' + (bet*10).to_s + '$ 負けました。' end end puts 'あなたの持ち金は' + score.to_s + '$ です。' return score end def keyInput() begin gets rescue end end def main() score = 100 round = 1 while ( score > 0 ) do puts '' puts 'エンターキーを押してください。' keyInput() puts '' puts 'ラウンド:' + round.to_s score = throwDices(score) round += 1 end puts 'あなたのお金はなくなりました。ゲームオーバーです。' end main()
まず最初に次の文を見てください。
diceStrings = ['| * |', '| : |', '|...|', '|: :|','|:.:|','|:::|']
これは、サイコロを記号で作っています。
シングルコーテーション(')で囲まれた部分が配列の箱一つに入ります。
mainメソッドでは、while文を使ってscoreが0になるまでループを行っています。
呼び出されるメソッドはkeyInput()とthrowDices()です。
まずは、keyInputメソッドから説明します。
def keyInput() begin gets rescue end end
ここでは、begin,rescueの構文を使っています。
begin 実行文 rescue 実行文 end
まず、beginの実行文には「何をしたときに」というのが入ります。
今回は、gets「キーボードからの入力があった時に」という形になります。
getsは標準入力といいます。
今回のプログラムでは、何か入力があるまで待機するといった処理を行います。
何か入力があれば次の処理に進みます。
一時停止みたいなものです。
rescueは「もし入力にエラーが生じたら、rescueの実行文の内容を行いなさい」という意味になります。
今回は、実行文がありませんので実際にエラーがあっても何も起きません。
rand(0..5)という記述で、0から5までの整数がランダムに出ます。
ここで得られた2つの変数は、showDices()とcheckPoints()の二つのメソッドに引数として渡されます。
showDices()は、渡された2つの数字をサイコロにして表示しています。
checkPoints()は与えられた数字に対して、配当を決めています。
今回のプログラムの勝敗は、偶数か奇数か、同じ目が出たかどうかしか判定していません。
条件によって変数scoreに数字が足し引きされreturnで返しています。
実行してみましょう。
メモ帳を開いて次のプログラムを作ってみましょう。
【saikoro2.rb】
# saikoro2.rb @score = 100 @bet = 5 @round = 1 @choice = 0 def throwDices() me1 = rand(0..5).to_i me2 = rand(0..5).to_i showDices( me1, me2 ) checkPoints( me1, me2) end def showDices( a, b ) diceStrings = ['| * |', '| : |', '|...|', '|: :|','|:.:|','|:::|'] puts '' puts (diceStrings[a]).to_s + ' ' + (diceStrings[b]).to_s puts '' end def checkPoints( a, b ) c = a + b + 2 d = 0 if( c%2 == @choice ) then if ( a == b || c == 7 ) then d = @bet*2 else d = @bet end print 'あなたは' print d.to_i puts '$を手に入れました!' @score = @score + d.to_i else if ( a == b || c == 7 ) then d = @bet*2 else d = @bet end print 'あなたは' print d.to_i puts '$負けました。' @score = @score - d.to_i end puts 'あなたの持ち金は ' + @score.to_s + '$です。' end def keyInput() begin s = gets rescue puts '予期しないエラーが起きました' end return s end def choice() puts '' puts '偶数か奇数かを選んでエンターを押してください。' puts '偶数ならEVEN 奇数ならODDと入力してください。' print 'EVEN or ODD-> ' str = keyInput() if ( str[0] ='e' || str[0] = 'E' ) then @choice = 0 else @choice = 1 end end def bet() puts '' puts '掛け金を入力してください' print '-> ' @bet = keyInput() end def main() while ( @score > 0 ) do puts '' puts 'ラウンド:' + @round.to_s choice() bet() throwDices() @round += 1 end puts 'あなたのお金はなくなりました。ゲームオーバーです。' end main()
このプログラムでは、「インスタンス変数」というものを使用しています。
インスタンス変数は変数名の前に「@」が付きます。
@score = 100 @bet = 5 @round = 1 @choice = 0
インスタンス変数を使用すると、プログラムの中で値を保持し続ける事が出来ます。
プログラム内の全メソッドで共通して使用することが出来るのでとても便利です。
checkPoint()メソッドを見てみます。
c = a + b + 2
最後に2を足しているのは、次の条件に理由があります。
if ( a == b || c == 7 ) then
このc == 7に当てはめる確率を上げています。
2を足さなければ、1と6の組み合わせしかありません。
str = keyInput() if ( str[0] ='e' || str[0] = 'E' ) then
これは、strの最初の文字がeかEならばという意味です。
出力結果を見てみましょう。
↓↓クリックして頂けると励みになります。