じゃんけんゲーム

シェル名 引数 リストファイル リストファイルの内容
janken_game.sh なし なし -

#!/bin/bash

###########################################################
#
# じゃんけんゲーム
# ルール: 普通のじゃんけんゲーム
# 何回勝負にするか設定可能
# 引数:なし
#
# 作成日:2013/06/23
# 作成者:
#
###########################################################

#何回勝負
HOW_MANY_TIMES=3

#初期値代入
COUNT=1
PLAYER_WIN=0
CPU_WIN=0


#ゲーム説明
echo "じゃんけんゲームを開始します"
echo "先に${HOW_MANY_TIMES}回勝った方が勝ちです"
echo

sleep 3

echo "それではじゃんけんゲームを開始します"
echo

sleep 3

#メイン処理
while [ ${PLAYER_WIN} -lt ${HOW_MANY_TIMES} -a ${CPU_WIN} -lt ${HOW_MANY_TIMES} ]
do

  NG_FLAG=1

  #プレイヤー入力値チェックのループ処理
  while [ ${NG_FLAG} -eq 1 ]
  do

     echo
     echo "${COUNT}回戦!!"
     echo
     sleep 2


     echo "じゃん"
     sleep 1
     echo "けん、"
     echo
     sleep 1

     #プレイヤーの手を決定
     echo "数字を入力してください"
     echo "0:グー  1:チョキ  2:パー"
     read PLAYER_NUM
     echo

     #入力値が正しいか判別
     case ${PLAYER_NUM} in
        0) NG_FLAG=0
        ;;
        1) NG_FLAG=0
        ;;
        2) NG_FLAG=0
        ;;
        *) echo "正しい数字を入力してください"
        ;;
     esac
  done

  #コンピュータの手を決定
  CPU_NUM=`expr $RANDOM % 3`

  case ${PLAYER_NUM} in
     0) PLAYER_HAND="グー"
     ;;
     1) PLAYER_HAND="チョキ"
     ;;
     2) PLAYER_HAND="パー"
     ;;
  esac

  case ${CPU_NUM} in
     0) CPU_HAND="グー"
     ;;
     1) CPU_HAND="チョキ"
     ;;
     2) CPU_HAND="パー"
     ;;
  esac

  #勝敗判定
  if [ ${CPU_NUM} -eq $((PLAYER_NUM+1)) ]; then
     #プレイヤーの勝ち数加算
     PLAYER_WIN=`expr ${PLAYER_WIN} + 1`
     JUDGE=0
  elif [ ${CPU_NUM} -eq 0 -a ${PLAYER_NUM} -eq 2 ]; then
     #プレイヤーの勝ち数加算
     PLAYER_WIN=`expr ${PLAYER_WIN} + 1`
     JUDGE=0
  elif [ ${CPU_NUM} -eq ${PLAYER_NUM} ]; then
     #引き分け
     JUDGE=2
  else
     #CPUの勝ち数加算
     CPU_WIN=`expr ${CPU_WIN} + 1`
     JUDGE=1
  fi

  #結果を表示
  case ${JUDGE} in
     0) echo "YOU: ${PLAYER_HAND}"
        echo "CPU: ${CPU_HAND}"
        echo "あなたの勝ち !!"
        COUNT=`expr ${COUNT} + 1`
     ;;
     1) echo "YOU: ${PLAYER_HAND}"
        echo "CPU: ${CPU_HAND}"
        echo "あなたの負け !!"
        COUNT=`expr ${COUNT} + 1`
     ;;
     2) echo "YOU: ${PLAYER_HAND}"
        echo "CPU: ${CPU_HAND}"
        echo "あいこです"
     ;;
  esac

  echo "${PLAYER_WIN}勝${CPU_WIN}負"
  echo
  sleep 1
done

if [ ${PLAYER_WIN} -eq ${HOW_MANY_TIMES} ]; then
  echo "おめでとう、あなたの勝ちです!"
else
  echo "あなたの負けです"
fi
最終更新:2014年01月26日 12:46