linux实现猜数字小游戏源码
一个简单的linux猜数字小游戏源码
游戏规则:
猜数字游戏通常由两个人玩,一方出数字,一方猜。出数字的人要想好一个没有重复数字的4个数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。如正确答案为5234,而猜的人猜5346,则是1A2B,其中有一个5的位置对了,记为1A,而3和4这两个数字对了,而位置没对,因此记为2B,合起来就是1A2B。接着猜的人再根据出题者的几A几B继续猜,直到猜中(即4A0B)为止。
猜的人有8次机会。
例如:
乙出一个数字,甲猜。
甲乙
12341A0B
56782A1B
56741A1B
56381A1B
26782A2B
62784A0B(猜中)
源码:
#!/bin/bash
clear
echo
echo"###################################################################"
echo"#thisisabash-shellgamewritebylee#"
echo"#thisgameisinfinitefrequency猜数字#"
echo"#version2.1.1.20200421#"
echo"###################################################################"
echo-e"\n\n"
declareINPUT
declarePASSWORD
declareLEN_PWD
declareA
declareB
declareLOOP
#thisfunctioniscreaterandomnumber
random_number()
{
PASSWORD=$RANDOM
LEN_PWD=`echo$PASSWORD|wc-L`
if[[$LEN_PWD-ne4]]
then
random_number
else
#输出标准值,测试需要,开发完成注释掉
echo$PASSWORD
input
fi
}
#thisfunctionisaccepttheinputfromuser'skeyboard
input()
{
read-n4-p"pleaseinputanumberbetween0000-9999:"input
#10#${input}进制转换
if[[10#${input}-eq10#${PASSWORD}]]
then
echo-e"\n"
echo"#############################################"
echo"#congratulations!Youhavetried$LOOPtimes!#"
echo"#Thepasswordis$PASSWORD!#"
echo"#############################################"
exit
elif[[$LOOP-eq6]]
then
echo-e"\n"
echo"Youhavetried$LOOPtimes!Gameover!"
exit
else
A=0
B=0
count_a
count_b
echo-e"\n"
echo"****************************"
echo"*"$A"A"$B"B*"
echo"****************************"
echo"Youhavetried$LOOPtimes!Youleft`expr6-$LOOP`times!"
LOOP=`expr$LOOP+1`
input
fi
}
#thisfunctioniscountthevariableA'svalue
count_a()
{
foriin`seq4`
do
VAR_INPUT=`exprsubstr$input$i1`
forjin`seq4`
do
VAR_PASSWORD=`exprsubstr$PASSWORD$j1`
if[[$VAR_INPUT-eq$VAR_PASSWORD]]&&[[$i-eq$j]]
thenA=`expr$A+1`
fi
done
done
}
#thisfunctioniscountthevariableB'svalue
count_b()
{
foriin`seq4`
do
VAR_INPUT=`exprsubstr$input$i1`
forjin`seq4`
do
VAR_PASSWORD=`exprsubstr$PASSWORD$j1`
if[[$VAR_INPUT-eq$VAR_PASSWORD]]&&[[$i-ne$j]]
thenB=`expr$B+1`
fi
done
done
}
LOOP=1
random_number
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。