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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。