linux实现猜数字小游戏源码

一个简单的linux猜数字小游戏源码

游戏规则:

猜数字游戏通常由两个人玩,一方出数字,一方猜。出数字的人要想好一个没有重复数字的 4 个数,不能让猜的人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几 A 几 B,其中 A 前面的数字表示位置正确的数的个数,而 B 前的数字表示数字正确而位置不对的数的个数。如正确答案为 5234,而猜的人猜 5346,则是 1A2B,其中有一个 5 的位置对了,记为 1A,而 3 和 4 这两个数字对了,而位置没对,因此记为 2B,合起来就是 1A2B。接着猜的人再根据出题者的几 A 几 B 继续猜,直到猜中(即 4A0B)为止。

猜的人有 8 次机会。

例如:

乙出一个数字,甲猜。
甲 乙
1234 1A0B
5678 2A1B
5674 1A1B
5638 1A1B
2678 2A2B
6278 4A0B(猜中)

源码:

#!/bin/bash
clear
echo
echo "###################################################################"
echo "# this is a bash-shell game write by lee       #"
echo "# this game is infinite frequency 猜数字       #"
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 create random number
random_number()
{
 PASSWORD=$RANDOM
 LEN_PWD=`echo $PASSWORD | wc -L`
 if [[ $LEN_PWD -ne 4 ]]
 then
 random_number
 else
 #输出标准值,测试需要,开发完成注释掉
 echo $PASSWORD
 input
 fi
}

#this function is accept the input from user's keyboard
input()
{
 read -n4 -p "please input a number between 0000-9999:" input
# 10#${input} 进制转换
 if [[ 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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Shell脚本实现的猜数字小游戏

    生成的密码和用户输入可以接受重复数字. 所以相对一般规则的猜数字可能难度要大不少. 本版本规则: A--数字对,位置也对 B--排除A的结果后,数字对,但位置不对 开始后,系统化初始化一个4位可重复数字,如"1223".假设用户第一次输入"1234",那么系统将提示"2A1B",前两位数字"12"相同并且位置也相同,为"2A".后两位数字中,用户输入的"3"与密文中"3&quo

  • 101个shell脚本 猜数字游戏代码

    原本书上这个例子是教调试脚本的,它故意给出的脚本中有几个错误,教我们认识系统提示的错误,并修改运行.但比较难写出来,所以把修改好了的脚本放上来,这个脚本比较有趣味的 #!/bin/sh # hilow -- A simple number-guessing game biggest=100 # maximum number possible guess=0 # guessed by player guesses=0 # number of guesses made number=$(($$ %

  • linux实现猜数字小游戏源码

    一个简单的linux猜数字小游戏源码 游戏规则: 猜数字游戏通常由两个人玩,一方出数字,一方猜.出数字的人要想好一个没有重复数字的 4 个数,不能让猜的人知道.猜的人就可以开始猜.每猜一个数字,出数者就要根据这个数字给出几 A 几 B,其中 A 前面的数字表示位置正确的数的个数,而 B 前的数字表示数字正确而位置不对的数的个数.如正确答案为 5234,而猜的人猜 5346,则是 1A2B,其中有一个 5 的位置对了,记为 1A,而 3 和 4 这两个数字对了,而位置没对,因此记为 2B,合起来就

  • C++通过循环实现猜数字小游戏

    C++猜数字小游戏-通过循环实现,供大家参考,具体内容如下 题目:/系统随机生成一个1到100之间的数字,玩家进行猜测,如果猜错提示玩家数字过大或过小,如果猜对恭喜玩家胜利,并且退出游戏.每局游戏只能猜5次 实现: 通过循环和if判断 源码: #include <iostream> #include<ctime> using namespace std; int main() { /*系统随机生成一个1到100之间的数字,玩家进行猜测,如果猜错, 提示玩家数字过大或过小,如果猜对恭

  • 基于PyQt5制作一个猜数字小游戏

    开始之前,直接来看一下实现后的效果.想自己实现或者需要源码的童鞋直接进场... 将PyQt5的相关模块直接导入即可. from PyQt5.QtGui import * from PyQt5.QtCore import * from PyQt5.QtWidgets import * 为了照顾一下新关注的童鞋,这里介绍一下PyQt5的安装,还是采用pip的安装方式. pip install PyQt5 将准备好的样式导入到代码块中. # 主题样式模块引用 from QCandyUi import

  • 14 个Python小游戏 源码分享

    目录 1.吃金币 2.打乒乓 3.滑雪 4.并夕夕版飞机大战 5.打地鼠 6.小恐龙 7.消消乐 8.俄罗斯方块 9.贪吃蛇 10.24点小游戏 11.平衡木 12.外星人入侵 13.贪心鸟 14.井字棋888'' 1.吃金币 源码分享: import os import cfg import sys import pygame import random from modules import * '''游戏初始化''' def initGame(): # 初始化pygame, 设置展示窗口

  • go语言实现猜数字小游戏的方法

    本文实例讲述了go语言实现猜数字小游戏的方法.分享给大家供大家参考.具体分析如下: 随机生成一个数字,输入一个数字看是否匹对,匹配则结速,反之提示是大了还是小了 复制代码 代码如下: package main import (     "bufio"     "fmt"     "math/rand"     "os"     "strconv"     "time" ) var (  

  • jQuery网页版打砖块小游戏源码分享

    这是一款基于jQuery实现网页版打砖块小游戏源码,满满的童年回忆. 为大家分享的jQuery实现网页版打砖块小游戏源码如下 效果演示 源码下载 <!DOCTYPE html> <html lang="en" > <head> <meta charset="gb2312" /> <title>jQuery网页版打砖块小游戏源码</title> <link href="css/ma

  • Java编写猜数字小游戏

    本文实例讲述了java实现的简单猜数字游戏代码.分享给大家供大家参考. 以下是Java语言写的一个猜数字小游戏引用片段: import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; //主函数 public class calssOne { public static void main(String[] args) { //shit+Ctrl+o int result; //随机产生一个

  • Java编程经典小游戏设计-打砖块小游戏源码

    [程序中使用的数据结构和符号说明] HitBrick类 GreenBallThread控制小球路线 xUp,yUp,bouncing定义变量存储16位数值形式 x,y小球坐标 xDx,yDy坐标增量 MAX_X,MAX_Y坐标最大值 renew初始化 label标签 Rx,Ry横板坐标 Brick[]砖块 ball小球 HitBrick()定义小球横板及砖块位置坐标 keyPressd(keyEent)定义小球启动键(按空格键启动) keyReleased(keyEvent)接收键盘事件侦听器接

  • python编写猜数字小游戏

    本文实例为大家分享了python编写猜数字小游戏的具体代码,供大家参考,具体内容如下 import random secret = random.randint(1, 30) guess = 0 tries = 0 print("我叫丁丁,我有一个秘密数字!") print("数字从1到30,你只有6次机会!") while int(guess) != secret and tries < 6: print("你猜的数字是?") guess

  • java猜数字小游戏案例

    本文实例为大家分享了java猜数字小游戏案例,供大家参考,具体内容如下 package day08; import java.util.Scanner; public class GuessNumber { /** * 猜数字小游戏:. 需求: 随机产生一个整数数1-100(被猜数)不设置输出 * 键盘录入一个玩家要猜的数字 * 判断猜大还是猜小了或者猜中 */ public static void main(String[] args) { // 随机产生整数1-100 int number

随机推荐