echo " BlaCk JacK!!" rum01=$(((RANDOM % 10) + 1)) rum02=$(((RANDOM % 10) + 1)) c=`expr $rum01 + $rum02` echo You have cards: $rum01 $rum02 ;echo -n "You had cards: $rum01 $rum02 " > quiz3.txt #最初に配られる二枚のカードは1〜10よりランダムに選ばれる #cをrum01とrum02の和とする #配られた二枚のカードの数字を表示。またquiz3.txtに書き込み #並列表記されるよう指定する。 if [ \( $rum01 = 1 -a $rum02 = 10 \) -o \( $rum01 = 10 -a $rum02 = 1 \) ] then echo BLACK JACK!You Win!! ;echo -e BLACK JACK! You Win!! >> quiz3.txt c="21" fi #最初に配られた二枚が1,10ならばBLACK JACKと表示し、 #自動的に勝ちとする。 if [ $rum01 = 1 -a $rum02 -ne 10 ] #最初に配れたカードが1で、二枚目が10以外だった場合 then echo You got an Ace. Make a choice which number will you take,1or11 read "rum01" #Aを1と取るか11と取るかの選択を促し、 #入力された数字をrum01として読み込む while [ ! \( $rum01 = 1 -o $rum01 = 11 \) ] do echo Error echo You got an Ace. Make a choice which number will you take,1or11 read "rum01" #1,11以外を入力するとエラーと表示し、 done #1,11を入力するよう促す c=`expr $rum01 + $rum02` echo "Now you have: $rum01 $rum02 Tot: $c " echo " " >> quiz3.txt echo -n "Then you had: $rum01 $rum02 " >> quiz3.txt #読み取った結果によりrum01が1か11に変わり、 fi #プレイヤーが所持するカードが表示される。 #同時に現時点での合計点を表示 if [ $rum02 = 1 -a $rum01 -ne 10 ] #最初に配られたカードが10以外で、二枚目が1であった場合 #(過程の説明は一つ前のIF節と同じなので省略) then echo You got an Ace. Make a choice which number will you take,1or11 read "rum02" while [ ! \( $rum02 = 1 -o $rum02 = 11 \) ] do echo Error echo You got an Ace. Make a choice which number will you take,1or11 read "rum02" done c=`expr $rum01 + $rum02` echo "Now you have: $rum01 $rum02 Tot: $c " echo " " >> quiz3.txt echo -n "then you have: $rum01 $rum02 " >> quiz3.txt fi #同上 if [ $c -le "20" ] then echo Do you need another card ? Yes-press 0. No-press 1 #もう一枚カードを引くか引かないかをプレイヤーにたずねる a=$a read a while [ ! \( $a = 0 -o $a = 1 \) ] do echo ERROR! Type Yes-press 0. No-press 1 read a done #0,1以外の数字を入力するとエラーと表示し、 #0または1を入力するよう促す。 c=`expr $rum01 + $rum02` #入力結果をaとして読み込み、cをrum01とrum02の和とする。 while [ $a = 0 ] #『カードを引く』を選択する限り以下のことを繰り返す do if [ $a = 0 ] then rum03=$(((RANDOM % 10) + 1)) ;echo You got: $rum03 #『カードを引く』ならば、 #新しく『rum3(ランダムで1〜10)を得ました』と表記 if [ $rum03 = "1" ] then echo You got an Ace. Make a choice which number will you take, 1 or 11 read "rum03" #rum03が1であるならば1又は11の選択を促し、 #結果を再びrum03として読み込む while [ ! \( $rum03 = 1 -o $rum03 = 11 \) ] do echo Error echo You got an Ace. Make a choice which number will you take,1or11 read "rum03" done fi #同上 echo -n "$rum03 " >> quiz3.txt c=`expr $c + $rum03` echo Tot $c #cを新たにrum01とrum02にrum03を足したものとする。 #(つまりcは引いたすべてのカードの数字の合計) if [ $c -le "20" ] then echo Do you take one more card? Yes-press 0. No-press 1 read a #c≦20ならば、もう一枚カードを引くかをたずね、 #結果をaとして読み込む while [ ! \( $a = 0 -o $a = 1 \) ] do echo ERROR! Type Yes-press 0. No-press 1 read a done #同上 fi if [ $c -ge "22" ] then echo Over 21. You bust... ;echo " " >> quiz3.txt ;echo "Over 21. You Bust..." >> quiz3.txt a="1" #c≧22ならば、『21以上。あなたの負け』と表示し、 #a=1と読み込み、終了。 #while節の終了 fi if [ $c = "21" ] then echo Your total number is 21 ! Congratulation!! a="1" #c=21ならば『21になりました。おめでとぅ!』と表示し、 #a=1を自動的に読み込み、終了。プレイヤーの勝ちとする。 fi fi done fi echo "Your Total number is $c " echo " " >> quiz3.txt ;echo "Your Total number was $c " >> quiz3.txt #終了する前に最終的なプレイヤーの点数を表示