最近更新していませんでした。
勉強はそこそこしていた?ようです。
とりあえずRubyでじゃんけんプログラムを作れるようになったので忘備録
puts("points to win ?")
points = gets()
points_to_win = Integer(points)
PAPER = 1
SCISORS = 2
STONE = 3
com_win = 0
plr_win = 0
while com_win < points_to_win && plr_win < points_to_win
puts("paper=1, scisors=2, stone=3 ?")
choice = gets()
player = Integer(choice)
computer = rand(3) + 1
puts(" computer: #{computer}")
if player == computer
puts(" even")
elsif
player == PAPER && computer == STONE ||
player == SCISORS && computer == PAPER ||
player == STONE && computer == SCISORS
puts(" win")
plr_win += 1
else
puts(" lose")
com_win += 1
end
puts("plr_win: #{plr_win}, com_win: #{com_win}")
end
if plr_win >= 3
puts("You win !")
else
puts("You lose !")
end
じゃんけんができるスクリプトです。
順番的には、何勝したら勝ちになるかを設定した後に、じゃんけんをします。
順次説明をしていくと
最初の
puts("points to win ?")
points = gets()
points_to_win = Integer(points)
では
putsでpoints to win ? を表示 #putsは("")の中を表示させる関数
getsで入力させた数をpointと置いて #gets関数で読み込んだ値をpoint変数に設定
そのpointをpoints_to_win #point変数を引数としてInteger関数に読み込ませ、その値(戻り値)をpoints_to_win変数に設定。
=begin
puts("<設問文>")
<a> = gets()
<b> = Integer(<a>)
のテンプレはよく使う。
ちなみに
<a>…入力された数の適当な名前
<b>…入力された数<a>を後で使いたい時に用いる適当な名前
というイメージ
=end
ちなみに
puts("paper=1, scisors=2, stone=3 ?")
choice = gets()
player = Integer(choice)
の部分も同じ。
じゃんけんの出したい手を1,2,3に置き換えてもらい。考えて出したい手を入力させます。
PAPER = 1
SCISORS = 2
STONE = 3
は、下のじゃんけんをさせるメインの部分で使います。
処理がわかりやすいように1,2,3に置き換えたじゃんけんの手を言葉で処理させる。
if player == computer
puts(" even")
elsif
player == PAPER && computer == STONE ||
player == SCISORS && computer == PAPER ||
player == STONE && computer == SCISORS
puts(" win")
plr_win += 1
else
puts(" lose")
com_win += 1
end
これは、
もし、あいこだったら if player == computer
引き分けと表示 puts(" even")
んで、もしもあいこじゃなくて、 elsif
あなたがパーで、コンピューターがグー または player == PAPER && computer == STONE ||
あなたがチョキで、コンピューターがパー または player == SCISORS && computer == PAPER ||
あなたがグーで、コンピューターがチョキ player == STONE && computer == SCISORS
だったとしたら、
勝ちと表示 puts(" win")
あなたの勝ち数に1を足します。 plr_win += 1
どの条件でもないなら else
負けって表示 puts(" lose")
コンピュータの勝ち数に1を足します。 com_win += 1
って意味。
んで、これを
while com_win < points_to_win && plr_win < points_to_win
の部分が繰り返している。(while 条件文が満たされる限り、以下を続ける)
以上。だいたいざっくりと。
0 件のコメント:
コメントを投稿