猜数游戏
在这个游戏里面,程序首先会生成一个介于 1 到 100 之间的随机整数,然后提示玩家进行猜测。玩家每次输入一个数字,程序会告诉玩家这个猜测的值是高于还是低于那个秘密的随机数,并且让玩家再次猜测。如果猜对了,就告诉玩家正确并且退出程序。
需要从以下信息思考:
- 输入的获取
- 官方库函数的使用
- 循环与选择语句结合的控制流
主要分为以下几个部分:
1、设置最大随机数和种子:通过maxNum
变量设置最大随机数值,并通过rand.Seed(time.Now().UnixNano())
使用当前时间作为种子,确保每次运行都能生成不同的随机数。
maxNum :=100
rand.Seed(time.Now().UnixNano())
来分析一下以上代码:
-
第一行,设置最大随机数
-
第二行,使用当前时间作为随机数生成器的种子
2、生成随机数:使用rand.Intn(maxNum)
生成一个介于0和maxNum
之间的随机数,并将其存储在secNumber
变量中。
secNumber :=rand.Intn(maxNum)
fmt.Println("随机数为:",secNumber)
-
第一行,生成一个0到maxNum之间的随机数
-
第二行,打印随机数
3、提示用户输入:向用户显示提示信息。
fmt.Println("请输入1-100:")
4、读取用户输入:通过创建bufio.NewReader(os.Stdin)
对象来读取用户输入的字符串,使用reader.ReadString('\n')
读取用户输入的字符串,直到遇到换行符,并将其存储在input
变量中。
reader :=bufio.NewReader(os.Stdin)
input,err :=reader.ReadString('\n')
if err !=nil {
fmt.Println("异常:",err)
return
continue
}
- 第三到七行,如果读取过程中发生错误,则打印错误信息;否则继续下一次循环
5、处理用户输入:使用strings.TrimSuffix(input, "\n")
去除输入字符串末尾的换行符,并使用strconv.Atoi(input)
将输入字符串转换为整数,并将其存储在guess
变量中。
input =strings.TrimSuffix(input,"\n")
guess,err :=strconv.Atoi(input)
if err !=nil{
fmt.Println("输入错误")
return
continue
}
- 第三到七行,如果转换过程中发生错误,则打印错误信息;否则继续下一次循环
6、比较用户猜测与随机数:根据用户猜测的数与随机数的关系,给出相应的提示信息。
if guess>secNumber{
fmt.Println("过大")
} else if guess<secNumber{
fmt.Println("过小")
}else{
fmt.Println("正确")
break
}
- 如果猜测的数大于随机数,则提示猜测过大;
- 如果猜测的数小于随机数,则提示猜测过小;
- 如果猜测的数等于随机数,则提示猜测正确;
7、重复操作直到猜中:使用循环结构,不断循环进行用户输入、处理和比较的操作,直到猜中随机数为止。