暇つぶし:シェルでじゃんけんポン!

スポンサーリンク
#!/bin/bash

# 第一引数を自分の手(MyHand)とする
case $1 in
 gu)
 MH=0
 ;;
 choki)
 MH=1
 ;;
 pa)
 MH=2
 ;;
 *)
 echo "Error: chose from "gu" or "choki" or "pa""
 exit 1
esac

# RANDOM変数から0~2の3つの値(OpponetHand)をとる
OH=`expr $RANDOM % 3`

# OHを数字から名前に変更
case $OH in
 0)
 OHN=gu
 ;;
 1)
 OHN=choki
 ;;
 2)
 OHN=pa
esac

# お互いに出したものを表示
echo "Your hand       : $1";
echo "Opponent's hand : $OHN";

# 勝敗は!?
echo -n "Result          : "

# MH = 0(gu),1(choki),2(pa)
# OH = 0(gu),1(choki),2(pa)

# 勝つ条件は以下の通り
# MH:OH
# 0:1
# 1:2
# 2:0

# 同じ値ならあいこ
if [ $MH -eq $OH ];
then
 echo aiko
# 上記から[MH+1=OH]という条件と[MH=2 & OH=0]という条件時には勝利とする
elif [ `expr $MH + 1` -eq $OH ] || [ $MH -eq 2 -a $OH -eq 0 ]; then
then
 echo "you win"
else
# それ以外、負け
 echo "you lose"
fi

実際にじゃんけんしてみる

$ ./janken.sh
Error: chose from "gu" or "choki" or "pa"
$
$ ./janken.sh pa
Your hand       : pa
Opponent's hand : gu
Result          : you win
$ 
$ ./janken.sh pa
Your hand       : pa
Opponent's hand : choki
Result          : you lose
$ 
$ ./janken.sh pa
Your hand       : pa
Opponent's hand : pa
Result          : aiko
$ 
$ ./janken.sh gu
Your hand       : gu
Opponent's hand : pa
Result          : you lose
$ ./janken.sh choki
Your hand       : choki
Opponent's hand : choki
Result          : aiko
$ 
$ ./janken.sh choki
Your hand       : choki
Opponent's hand : gu
Result          : you lose
$

コメント

タイトルとURLをコピーしました