案例讲解
实现猜拳游戏的脚本程序设计
案例介绍:用脚本实现小时候玩过的游戏石头、剪刀和布PK
,三局两胜。
案例设计:循环接受用户的“出招”输入;
比较判断胜方为用户还是电脑,并输出胜方;
统计胜利次数,率先赢得两次,即最终获胜。
思路:游戏算法,赢的判断(需求分析)
j<s s<b b<j 三个回合 三局两胜
每一回合的比赛:用户的出招(输入) 循环验证 验证输入
电脑出招(随机)
两者出招比较
比较统计结果: 统计赢的 赢两句先赢
赢的多的算赢
#!/bin/bash
#------------------------------
#--剪刀,石头和布的游戏脚本实践
#------------------------------
Input()
{
#这里的冒号代表空语句,都也是个循环,竖杠代表或者的意思
while :
do
#clear;echo " -- 剪刀、石头和布游戏 -- "
echo "请选择输入剪刀(J)、石头(S)、或布(B)"
read Choice
case $Choice in
J|j)
echo -n "您选择的是\"$Choice\"剪刀,"
userChoice=0
break
;;
S|s)
echo -n "您选择的是\"$Choice\"石头,"
userChoice=1
break
;;
B|b)
echo -n "您选择的是\"$Choice\"布匹,"
userChoice=2
break
;;
*)
#echo ${Choice:?"您未输入"} >/dev/null
echo "您的输入不正确,请重新输入!"
sleep
;;
esac
done
}
function Judge()
{
#echo "Now --judge--"
let Num=$RANDOM%3
[ $Num -eq 0 ] && echo "电脑选择的是\"J\"剪刀"
[ $Num -eq 1 ] && echo "电脑选择的是\"S\"石头"
[ $Num -eq 2 ] && echo "电脑选择的是\"B\"布匹"
let ${User:=0}; let ${Comp:=0}
if [ $1 -eq $Num ];then
echo "本局平局!"
elif [ $1 -eq 0 ];then
if [ $Num -eq 2 ];then
echo "本局你赢!" ;let User++
else
echo "本局你输!" ;let Comp++
fi
elif [ $Num -eq 0 ];then
if [ $1 -eq 2 ];then
echo "本局你输!" ;let User++
else
echo "本局你赢!" ;let Comp++
fi
elif [ $1 -gt $Num ];then
echo "本局你赢!" ;let User++
else
echo "本局你输!" ;let Comp++
fi
}
#-- main program --
clear;echo "欢迎来到剪刀、石头和布游戏!"
sleep 2;User=0;Comp=0;Round=1
while [ $Round -le 3 ] ;do
sleep 2;clear
echo ">> 剪刀、石头和布第$Round回合比赛 <<"
Input
Judge $userChoice
let Round++
[ $User -ge 2 ] && echo "恭喜,你赢得了整个比赛!" \
&& exit
[ $Comp -ge 2 ] && echo "遗憾,电脑赢得了整个比赛!" \
&& exit
done
echo "不错,你平了整个比赛"
实现猜拳游戏的脚本程序设计
案例介绍:用脚本实现小时候玩过的游戏石头、剪刀和布PK
,三局两胜。
案例设计:循环接受用户的“出招”输入;
比较判断胜方为用户还是电脑,并输出胜方;
统计胜利次数,率先赢得两次,即最终获胜。
思路:游戏算法,赢的判断(需求分析)
j<s s<b b<j 三个回合 三局两胜
每一回合的比赛:用户的出招(输入) 循环验证 验证输入
电脑出招(随机)
两者出招比较
比较统计结果: 统计赢的 赢两句先赢
赢的多的算赢
#!/bin/bash
#------------------------------
#--剪刀,石头和布的游戏脚本实践
#------------------------------
Input()
{
#这里的冒号代表空语句,都也是个循环,竖杠代表或者的意思
while :
do
#clear;echo " -- 剪刀、石头和布游戏 -- "
echo "请选择输入剪刀(J)、石头(S)、或布(B)"
read Choice
case $Choice in
J|j)
echo -n "您选择的是\"$Choice\"剪刀,"
userChoice=0
break
;;
S|s)
echo -n "您选择的是\"$Choice\"石头,"
userChoice=1
break
;;
B|b)
echo -n "您选择的是\"$Choice\"布匹,"
userChoice=2
break
;;
*)
#echo ${Choice:?"您未输入"} >/dev/null
echo "您的输入不正确,请重新输入!"
sleep
;;
esac
done
}
function Judge()
{
#echo "Now --judge--"
let Num=$RANDOM%3
[ $Num -eq 0 ] && echo "电脑选择的是\"J\"剪刀"
[ $Num -eq 1 ] && echo "电脑选择的是\"S\"石头"
[ $Num -eq 2 ] && echo "电脑选择的是\"B\"布匹"
let ${User:=0}; let ${Comp:=0}
if [ $1 -eq $Num ];then
echo "本局平局!"
elif [ $1 -eq 0 ];then
if [ $Num -eq 2 ];then
echo "本局你赢!" ;let User++
else
echo "本局你输!" ;let Comp++
fi
elif [ $Num -eq 0 ];then
if [ $1 -eq 2 ];then
echo "本局你输!" ;let User++
else
echo "本局你赢!" ;let Comp++
fi
elif [ $1 -gt $Num ];then
echo "本局你赢!" ;let User++
else
echo "本局你输!" ;let Comp++
fi
}
#-- main program --
clear;echo "欢迎来到剪刀、石头和布游戏!"
sleep 2;User=0;Comp=0;Round=1
while [ $Round -le 3 ] ;do
sleep 2;clear
echo ">> 剪刀、石头和布第$Round回合比赛 <<"
Input
Judge $userChoice
let Round++
[ $User -ge 2 ] && echo "恭喜,你赢得了整个比赛!" \
&& exit
[ $Comp -ge 2 ] && echo "遗憾,电脑赢得了整个比赛!" \
&& exit
done
echo "不错,你平了整个比赛"
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31453498/viewspace-2138186/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31453498/viewspace-2138186/