11.3. 一个猜数字的游戏¶
11.3.1. 代码示例¶
guess.go
package main
import (
"bufio"
"fmt"
"log"
"math/rand"
"os"
"strconv"
"strings"
"time"
)
func main() {
second := time.Now().Unix() // 获取时间戳
rand.Seed(second) // 播种随机数生成器
target := rand.Intn(100) + 1 // 生成1~100之间的随机数
fmt.Println("开始生成1~100之间的随机数")
fmt.Println("Can you Guess it?")
//fmt.Println(target)
reader := bufio.NewReader(os.Stdin) //读取键盘的输入
//定义标志符, 用于后面显示失败和成功信息返回
success := false
for x := 0; x < 10; x++ {
fmt.Printf("你有%d次机会进行猜测,good luck....\n", 10-x)
fmt.Println("Make a guess:")
input, err := reader.ReadString('\n') //读取用户内容,直到输入回车
if err != nil {
log.Fatal(err)
}
input = strings.TrimSpace(input) //删掉换行符
if len(input) == 0 { // 如果直接回车了,也算猜错
continue
}
guess, err := strconv.Atoi(input) //将输入的字符串转换为数字
if err != nil {
log.Fatal(err)
}
//将猜测与目标进行比对
if guess > target {
fmt.Println("你的猜测大了,再猜猜")
} else if guess < target {
fmt.Println("你的猜测小了,再猜猜")
} else {
success = true
break
}
}
// 失败的标语
if !success {
fmt.Printf("游戏你没法玩了,机会已经使用完了....正确的值是【%d】\n", target)
fmt.Println("See you again!!!!!")
} else if success {
fmt.Println("恭喜你猜对了,点击我继续进行抽奖吧...") // 成功的标语
}
}