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

Detailed Analysis of the Selection of MySQL Common Index and Unique Index

Suppose a user management system where each perso...

Introduction to vim plugin installation under Linux system

Table of contents Install vim plugin manager Add ...

A detailed introduction to setting up Jenkins on Tencent Cloud Server

Table of contents 1. Connect to Tencent Cloud Ser...

Detailed explanation of type protection in TypeScript

Table of contents Overview Type Assertions in syn...

Detailed explanation of the solution to forget the password in MySQL 5.7

ENV: [root@centos7 ~]# uname -r 3.10.0-514.el7.x8...

Example of building a redis-sentinel cluster based on docker

1. Overview Redis Cluster enables high availabili...

Ideas for creating wave effects with CSS

Previously, I introduced several ways to achieve ...

Analysis of the Poor Performance Caused by Large Offset of LIMIT in MySQL Query

Preface We all know that MySQL query uses the sel...

Detailed explanation of the usage of Object.assign() in ES6

Table of contents 2. Purpose 2.1 Adding propertie...

Two query methods when the MySQL query field type is json

The table structure is as follows: id varchar(32)...

Solutions to the Problem of Creating XHTML and CSS Web Pages

The solutions to the problems encountered during x...

Alibaba Cloud Centos7 installation and configuration of SVN

1. Install SVN server yum install subversion 2. C...