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