#!/bin/bash txt=quiz3.txt #出力先のファイルを指定します echo Do you take a card?[Y/n] read a #カードを引くかどうか尋ね Yかnを $a として読み込む card=`expr $RANDOM % 13` #乱数を13で割った数の余りとして 0〜12の乱数を発生させて $card とする case $card in 1) m=1 ;; 2) m=2 ;; 3) m=3 ;; 4) m=4 ;; 5) m=5 ;; 6) m=6 ;; 7) m=7 ;; 8) m=8 ;; 9) m=9 ;; [1]* | 0) m=10 ;; esac #$cardが1〜9の場合はそれぞれm=1〜9とおき $cardが0,10,11,12の場合はm=10とおく #こうすることでm=1〜9の確率をそれぞれ13分の1、m=10の確率を13分の4とできる if test $a = Y ;then echo Your card is $m. echo Now, your score is $m. echo -n "score: $m" > $txt #$aがYならば(カードを引くならば) 1〜10の乱数$mを引いたカードとして 更に合計値としても表示させる #quiz3.txtにも引いたカードを出力させる elif test $a = n ;then echo Now, your score is 0 and finish! echo -e "score: 0 \n total: 0" > $txt exit #$aがnならば(カードを引かないならば) 合計値はゼロだということを表示させる #さらにその旨をquiz3.txtに出力させ スクリプトを終了させる else echo Error! exit #ユーザーがYかn以外の文字を入力した場合は Error! と表示させ スクリプトを終了させる fi until [ $m -ge 22 ] do #合計値が22以上にならない限りは以下が繰り返し実行される echo Do you take a card?[Y/n] read a #カードを引くかどうか尋ね Yかnを $a として読み込む if test $a = Y ;then #$aがYならば(カードを引くならば)以下が実行される card=`expr $RANDOM % 13` case $card in 1) n=1 ;; 2) n=2 ;; 3) n=3 ;; 4) n=4 ;; 5) n=5 ;; 6) n=6 ;; 7) n=7 ;; 8) n=8 ;; 9) n=9 ;; [1]* | 0) n=10 ;; esac #上と同様にして1〜10の乱数$nを発生させる echo Your card is $n. echo -n ", $n" >> $txt #1〜10の乱数$nを表示させ quiz3.txtに追記させる m=`expr $n + $m` echo Now, your score is $m. #合計値$mを [今までの合計値$mと新たに引いた数$nを足し合わせた数] に定義しなおして表示させる if test $m -ge 22 ;then echo So, your score is over 21. echo GAME OVER!! echo -e "\n total: $m" >> $txt exit #この時点で合計値$mが22以上であれば 21を超えてしまった旨と GAME OVER を表示させる #合計値$mをquiz3.txtに追記させ スクリプトを終了させる elif test $m -eq 21 ;then echo Congraturations!! You are BLACKJACK!! echo -e "\n total: $m" >> $txt exit fi #この時点で合計値$mがちょうど21になれば Congraturations!! を表示させる #またその合計値$mをquiz3.txtに追記させ スクリプトを終了させる elif test $a = n ;then echo Now, your score is $m and finish! echo -e "\n total: $m" >> $txt exit #$aがnならば(カードを引かないならば) ここで合計値が$mであることとゲームを終えることを表示させる #合計値$mをquiz3.txtに追記させ スクリプトを終了させる else echo Error! echo " " > $txt exit #ユーザーがYかn以外の文字を入力した場合は Error! と表示させる #Errorなので今までquiz3.txtに出力してきた事柄をすべて最後に消してスクリプトを終了させる fi done