实战之数字猜谜

131 阅读1分钟

第一个实战是一个猜数游戏,是一款很日常的游戏,从中用到了随机数生成,比较等一系列函数。在生成随机数这一块,就会遇到第一个问题,当在同一时间下生成随机数,会发现生成同一个随机数,因此我们用到了时间戳这一工具来解决这个问题。 通过下面代码完成对用户的一个输入。先把内容按字符串的形式输入一行,最后去掉换行符转换成数字进入系统进行比较。

reader := bufio . NewReader(os.Stdin)
input,err := reader.ReadStringc('\n'if err != nil {
fmt.Println("An error occured while reading input.Please try again",err)
return
}
input = strings.TrimSuffix(input"\n")
guess,err := strconv.Atoi(input)

通过用户输入的数字和随机生成的数字进行比较,比较结果进行输出,再次输入,最终完成这次数字猜谜。这里就需要将比较进行一个循环来保证程序的一直进行。 下面是数字猜谜的完整代码。


import (
	"bufio"
	"fmt"
	"math/rand"
	"os"
	"strconv"
	"strings"
	"time"
)
	


func main(){
	maxNum:=100
	rand.Seed(time.Now().UnixNano())
	secretNumber:=rand.Intn(maxNum)
	//fmt.Println("the secret number is",secretNumber)
	fmt.Println("please input your guess")
	reader:=bufio.NewReader(os.Stdin)
	for{
		input,err:=reader.ReadString('\n')
		if err!=nil{
			fmt.Println("An error occured while reading input. Please try again" ,err)
        return
			continue
		}
		input = strings.TrimSuffix(input,"n")

		guess,err := strconv.Atoi(input)
		if err != nil{
 		fmt.Println("Invalid input. Please enter an integer value")
		return
			continue
		}
		fmt.Println("You guess is",guess)

		if guess > secretNumber {
		fmt.Println("Your guess is bigger than the secret number. Please try again")
	}else if guess < secretNumber {
		fmt.Println("Your guess is smaller than the secret number. Please try again")
		}else {
		fmt. Println("Correct,you Legend! ")
		break
		}

	}
}