遊戲發展史(Shell數字遊戲)

原本想寫點shell腳本練練手,突發奇想試試做個猜數字遊戲吧.於是就有了後續的事情.最先寫了個最最原始的猜數字腳本.無論功能還是美觀度都不盡如人意,於是一個一個版本迭代更新,後續版本每次都比前一次功能更完善.

通過這次的腳本練習我明白一個道理,"心急吃不了熱豆腐" 亙古不變的真理啊,無論創業也好,做實事打工也罷,還的從頭一步一步做起,凡是心高氣傲一次性想做出完美產品的都不切實際.好的產品需要從用戶需求出發,精雕細琢,層層迭代,才能經受更嚴峻的考驗.


猜數字遊戲原版V1

#給定一個不可變更的兩位數,用戶輸入數字,程序提示大小,根據提示繼續輸入,直到正確輸入數字爲止,遊戲結束.

#!/bin/bash
num="32"

while true
do
read -p "Please input a "double-digit": " input
if [ $input -gt $num ] ; then
  echo "Try smaller!"
    elif [ $input -lt $num ];then
      echo "Try bigger!"
  else
    echo "Good! You are right!"
    break;
fi
done


猜數字遊戲改進版V2

  • 增加非法輸入判斷功能.

  • 增加了隨機數功能.

#!/bin/bash
NUM=`echo $RANDOM$RANDOM |cut -c 2-3`

while true
do
  read -p "Please input a "double-digit": " input
  case $input in
    [0-9][0-9] )
    if [ $input -gt $NUM ] ;then
      echo "Try smaller!"
      elif [ $input -lt $NUM ];then
        echo "Try bigger!"
    else
        echo "Good! You are right!"
      break;
    fi ;;
  *)
  read -p "Please input a "double-digit": " input ;;
  esac

done


猜數字遊戲改進版V3


  • 增加了次數統計功能.

  • 增加歷史最好成績前十排名功能.

  • 增加時間顯示功能.

  • 優化結果顯示.

#!/bin/bash
NUM=`echo $RANDOM$RANDOM |cut -c 2-3`
DATE=`date +%y%m%d-%H:%M`

read -p "Please input your name: " USER

while true
do
  read -p "Please input a "double-digit": " input
i=$((i+1))
  case $input in
    [0-9][0-9] )
    if [ $input -gt $NUM ] ;then
      echo "Try smaller!"
      elif [ $input -lt $NUM ];then
        echo "Try bigger!"
    else
        echo "Good! You are right!"
      break;
    fi ;;
  *)
  read -p "Please input a "double-digit": " input ;;
  esac

done


printf "%-12s %s\n" "<$USER>" "your record is $i! Try better next time! $DATE" |tee -a ./record.record
printf "\n\n"
printf "%15s %6s %-8s\n" "-----" "HISTORY RECORD" "-----"
cat ./record.record |sort -k5  -g|awk -F! '{print $1,"!",$3}'|head -10
printf "%15s %6s %-8s\n" "-----" "HISTORY RECORD" "-----"


猜數字遊戲改進版

#V4

#修改提示語

#修改計算次數BUG

#!/bin/bash
NUM=`echo $RANDOM$RANDOM |cut -c 2-3`
DATE=`date +%y%m%d-%H:%M`

read -p "Please input your name: " USER
i=1
while true
do
  read -p "Please input a "double-digit": " input
  case $input in
    [0-9][0-9] )
    if [ $input -gt $NUM ] ;then
      echo "Try smaller!"
      elif [ $input -lt $NUM ];then
        echo "Try bigger!"
    else
        echo "Good! You are right!"
      break;
    fi ;;
  *)
  echo "The number should be in 1 to 100: " ;;
  esac
i=$((i+1))
done


printf "%-12s  %s\n" "<$USER>" "your record is $i! Try better next time! $DATE" |tee -a ./record.record
printf "\n\n"
printf "%15s %6s %-8s\n" "-----" "HISTORY RECORD" "-----"
cat ./record.record |sort -k5  -g|awk -F! '{print $1,"!",$3}'|head -10
printf "%15s %6s %-8s\n" "-----" "HISTORY RECORD" "-----"


Python 第一版

#!/usr/bin/python3
#coding=utf-8
#Python3.4.1

import random
number = random.randint(1,100)
guessnumber = 0
print (number)
do = True

while do:
        inputnumber = input("Please input a double-digit:" )
        guessnumber+=1
        if int(inputnumber)<0 or int(inputnumber)>=100:
              print ("The number should be in 1 to 100.")
        else :
            if int(inputnumber) < int(number):
                print ("Try Bigger!")
                
            elif int(inputnumber) > int(number):
                print ("Try Smaller!")
                
            elif int(inputnumber) == int(number):
                print ("Good! You are right!")
                do = False
print ("You have try %d times!" %guessnumber)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章