A simple Linux guessing game source code Game rules: The number guessing game is usually played by two people, one person gives a number and the other guesses. The person who gives the numbers must think of a set of 4 numbers without any repeated digits, and must not let the person who is guessing know the numbers. The person who guesses can start guessing. Every time a number is guessed, the person who gives the number must give a number of A and B based on this number, where the numbers before A represent the number of numbers in the correct position, and the numbers before B represent the number of numbers that are correct but in the wrong position. If the correct answer is 5234, and the guesser guesses 5346, then it is 1A2B, where one 5 is in the correct position, so it is recorded as 1A, and the numbers 3 and 4 are correct but not in the correct position, so it is recorded as 2B, which together is 1A2B. The next person to guess continues to guess based on the A and B numbers given by the person who asked the question until he guesses correctly (that is, 4A0B). The person who guesses has 8 chances. For example: B gives a number and A guesses it. Source code: #!/bin/bash clear echo echo "# ... echo "# this is a bash-shell game written by lee #" echo "# this game is infinite frequency guess the number#" echo "# version 2.1.1.20200421 #" echo "# ... echo -e "\n\n" declare INPUT declare PASSWORD declare LEN_PWD declare A declare B declare LOOP #this function is to create a random number random_number() { PASSWORD=$RANDOM LEN_PWD=`echo $PASSWORD | wc -L` if [[ $LEN_PWD -ne 4 ]] then random_number else #Output standard value, required for testing, comment out echo $PASSWORD after development input fi } #this function is to accept the input from the user's keyboard input() { read -n4 -p "please input a number between 0000-9999:" input # 10#${input} base conversionif [[ 10#${input} -eq 10#${PASSWORD} ]] then echo -e "\n" echo "###################################################" echo "#congratulations!You have tried $LOOP times!#" echo "# The password is $PASSWORD ! #" echo "###################################################" exit elif [[ $LOOP -eq 6 ]] then echo -e "\n" echo "You have tried $LOOP times!Game over!" exit else A=0 B=0 count_a count_b echo -e "\n" echo "********************************" echo "* "$A"A"$B"B *" echo "********************************" echo "You have tried $LOOP times! You left `expr 6 - $LOOP` times!" LOOP=`expr $LOOP + 1` input fi } #this function is count the variable A's value count_a() { for i in `seq 4` do VAR_INPUT=`expr substr $input $i 1` for j in `seq 4` do VAR_PASSWORD=`expr substr $PASSWORD $j 1` if [[ $VAR_INPUT -eq $VAR_PASSWORD ]] && [[ $i -eq $j ]] then A=`expr $A + 1` fi done done } #this function is count the variable B's value count_b() { for i in `seq 4` do VAR_INPUT=`expr substr $input $i 1` for j in `seq 4` do VAR_PASSWORD=`expr substr $PASSWORD $j 1` if [[ $VAR_INPUT -eq $VAR_PASSWORD ]] && [[ $i -ne $j ]] then B=`expr $B + 1` fi done done } LOOP=1 random_number The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM. You may also be interested in:
|
<<: Practical skills that must be mastered in calling UNI-APP components in the easycom mode
>>: MySQL 8.0.18 uses clone plugin to rebuild MGR implementation
Suppose a user management system where each perso...
Table of contents Install vim plugin manager Add ...
Table of contents 1. Connect to Tencent Cloud Ser...
Table of contents Overview Type Assertions in syn...
I recently started learning about database knowle...
ENV: [root@centos7 ~]# uname -r 3.10.0-514.el7.x8...
1. Overview Redis Cluster enables high availabili...
Previously, I introduced several ways to achieve ...
Preface We all know that MySQL query uses the sel...
The tutorial for installing OpenStack Ussuri with...
Table of contents 2. Purpose 2.1 Adding propertie...
One line command docker run -d \ -v /share:/home/...
The table structure is as follows: id varchar(32)...
The solutions to the problems encountered during x...
1. Install SVN server yum install subversion 2. C...