Linux implements the source code of the number guessing game

Linux implements the source code of the number guessing game

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.
A and B
1234 1A0B
5678 2A1B
5674 1A1B
5638 1A1B
2678 2A2B
6278 4A0B (Guess)

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:
  • 101 shell script guessing game codes
  • Shell script to implement the number guessing game

<<:  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

Recommend

About Vue virtual dom problem

Table of contents 1. What is virtual dom? 2. Why ...

Add a startup method to Linux (service/script)

Configuration file that needs to be loaded when t...

Web Design Experience: 5 Excellent Web Design Concepts Full Analysis (Pictures)

Unlike other types of design, web design has been ...

Tutorial on installing Tomcat server under Windows

1 Download and prepare First, we need to download...

Use of Linux dynamic link library

Compared with ordinary programs, dynamic link lib...

Detailed steps to install python3.7 on CentOS6.5

1. Download Python 3 wget https://www.python.org/...

Understand the initial use of redux in react in one article

Redux is a data state management plug-in. When us...

Detailed explanation of location and rewrite usage in nginx

1. Summary of location usage Location can locate ...

Native JS to implement click number game

Native JS implements the click number game for yo...

Detailed explanation of the solution for migrating antd+react projects to vite

Antd+react+webpack is often the standard combinat...