2011年11月21日月曜日

じゃんけんをする。

最近更新していませんでした。

勉強はそこそこしていた?ようです。
とりあえず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 件のコメント:

コメントを投稿