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
Table of contents 1. What is virtual dom? 2. Why ...
Configuration file that needs to be loaded when t...
Unlike other types of design, web design has been ...
1 Download and prepare First, we need to download...
Compared with ordinary programs, dynamic link lib...
1. Download Python 3 wget https://www.python.org/...
Redux is a data state management plug-in. When us...
The installation process is omitted (I installed ...
Preface MySQL supports multi-threaded replication...
Table of contents Step 1: Update Packages on Cent...
1. Summary of location usage Location can locate ...
The recommended code for playing background music ...
Native JS implements the click number game for yo...
Table of contents Understanding Prototypes Unders...
Antd+react+webpack is often the standard combinat...