第66回 Perlでじゃんけんゲーム
Perlでじゃんけんゲームをつくりました。
勝敗を決めるアルゴリズムが違う2パターン作りました。
じゃんけんプログラム その1
使い方
プログラムの引数に、
グー,
チョキ,
パー
のいずれかの文字を与えて起動
勝負の判定方法
勝負の全パターンを書いて場合わけ
ソース 1
use strict; ################################### # 入力チェック ################################### if( 1 != int @ARGV ){ die '引数の数が正しくありません'; } if( !( ( $ARGV[0] eq 'グー' ) || ( $ARGV[0] eq 'チョキ') || ( $ARGV[0] eq 'パー') ) ){ die q{引数は、'グー', 'チョキ', 'パー'でなければいけません}; } ################################### # $battle->{人}->{COM} の形で使う ################################### my $battle = {}; $battle->{'グー'}->{'グー'} = 'ひきわけ'; $battle->{'グー'}->{'チョキ'} = '勝ち'; $battle->{'グー'}->{'パー'} = '負け'; $battle->{'チョキ'}->{'グー'} = '負け'; $battle->{'チョキ'}->{'チョキ'} = 'ひきわけ'; $battle->{'チョキ'}->{'パー'} = '勝ち'; $battle->{'パー'}->{'グー'} = '勝ち'; $battle->{'パー'}->{'チョキ'} = '負け'; $battle->{'パー'}->{'パー'} = 'ひきわけ'; #################################### # 人の手を入手 #################################### my $human = {}; $human->{'num'} = {'グー'=>0, 'チョキ'=>1, 'パー'=>2}->{$ARGV[0]}; $human->{'hand'} = $ARGV[0]; #################################### # COMの手を生成 #################################### my $com = {}; $com->{'num'} = int rand(3); $com->{'hand'} = {'0'=>'グー', '1'=>'チョキ', '2'=>'パー'}->{$com->{'num'}}; #################################### # 勝負 #################################### print '人 : ' . $human->{'hand'}, "\n"; print 'COM: ' . $com->{'hand'}, "\n"; print 'あなたの ' . $battle->{$human->{'hand'}}->{$com->{'hand'}} . ' です', "\n";
じゃんけんプログラム その2
使い方
プログラムの引数に、
グー,
チョキ,
パー
のいずれかの文字を与えて起動
※ その1と同じ
勝負の判定方法
グー, チョキ, パー を
0, 1, 2 とみなし、
勝負の結果は、
3x+0, 3x+1, 3x+2
のどれかのパターンになることから導きだす。
ソース 2
use strict; ################################### # 入力チェック ################################### if( 1 != int @ARGV ){ die '引数の数が正しくありません'; } if( !( ( $ARGV[0] eq 'グー' ) || ( $ARGV[0] eq 'チョキ') || ( $ARGV[0] eq 'パー') ) ){ die q{引数は、'グー', 'チョキ', 'パー'でなければいけません}; } #################################### # 人の手を入手 #################################### my $human = {}; $human->{'num'} = {'グー'=>0, 'チョキ'=>1, 'パー'=>2}->{$ARGV[0]}; $human->{'hand'} = $ARGV[0]; #################################### # COMの手を生成 #################################### my $com = {}; $com->{'num'} = int rand(3); $com->{'hand'} = {'0'=>'グー', '1'=>'チョキ', '2'=>'パー'}->{$com->{'num'}}; #################################### # 勝負 #################################### print '人 : ' . $human->{'hand'}, "\n"; print 'COM: ' . $com->{'hand'}, "\n"; my $message = { '0' => 'ひきわけ', '1' => '勝ち', '2' => '負け' }->{ ($com->{'num'} - $human->{'num'}) % 3 }; print 'あなたの ' . $message . ' です', "\n";
一応参考までに
ビンゴ中西のほげほげじゃんけんの問題がやっとわかった
(たんなる覚え書きです)