这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
一、猜谜游戏
第一个例子里面,我们会使用Golang来构建一个猜数字游戏。在这个游戏里面,程序首先会生成一个介于1到100之间的随机整数,然后提示玩家进行猜测。玩家每次输入1个数字,程序会告诉玩家这个猜测的值是高于还是低于那个秘密的随机数,并且让玩家再次猜测。如果猜对了,就告诉玩家胜利并且退出程序。
源程序:
package main
import (
"bufio"
"fmt"
"math/rand"
"os"
"strconv"
"strings"
)
func main() {
maxNum := 100 //定义最大范围
secretNumber := rand.Intn(maxNum) //生成随机数
fmt.Println(secretNumber)
fmt.Println("Please input a number between 0 and 100:")
reader := bufio.NewReader(os.Stdin) //创建一个读取器
for {
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("Error:", err)
continue
}
input = strings.TrimSuffix(input, "\n") //读取完之后会有换行符,使用strings包去掉
input = strings.TrimSuffix(input, "\r") //windows下会有\r,需要去掉
guess, err := strconv.Atoi(input) //将字符串转换为整数
if err != nil {
fmt.Println("A invaild input, please enter an integer value")
continue
}
//判断猜测是否正确
if guess > secretNumber {
fmt.Println("Your guess is gigger than the secrect number. Please try again.")
} else if guess < secretNumber {
fmt.Println("Your guess is smaller than the secrect number. Please try again.")
} else {
fmt.Println("Correct, you win!")
break
}
}
实验结果:
步骤:
Step1:生成一个0到100之间的随机数字。 为了生成随机数,我们需要先导入FMT包和math/rand包,定义一个变量,max _num是100,下面用rand.Intn来生成个随机数,再打印出这个随机数。
Step2:实现用户的输入输出,并解析成数字。用bufio.NewReader把个文件转换成 reader变量。 reader变量上会有很多用来操作一个流的操作,我们可以用它的ReadString方法来读取一行。ReaderString返回的结果包含结尾的换行符,需要将其去掉,在转换成数字。
Step3:接着比较两个值的大小。如果用户输入的值比秘密值大的话,提示猜大了,请再试一次;反之猜小了,给出相应提示。若猜对则告诉用户赢了,并结束程序。
Step4:添加循环,使用户可以一直猜测,直到正确。