猜字游戏
学习Go的第一天,用Go语言实现了一个猜字游戏,结尾附上了具体代码。 这段代码实现了一个简单的猜数字游戏。游戏开始时,程序会生成一个秘密数字,范围在0到99之间。玩家需要通过输入猜测的数字来尝试猜出这个秘密数字。
代码首先通过rand.Seed()函数使用当前时间作为随机数生成器的种子,确保每次运行程序时生成的秘密数字是随机的。然后,程序进入一个循环,等待玩家输入猜测的数字。
玩家输入的数字通过标准输入读取,并经过一系列的处理和验证。首先,使用bufio.NewReader()函数创建一个读取器,以便逐行读取输入。然后,使用reader.ReadString('\n')函数读取玩家输入的字符串,同时检查是否有读取错误发生。接下来,使用strings.Trim()函数去除字符串中的换行符和回车符。
然后,使用strconv.Atoi()函数将字符串转换为整数类型,同时检查是否有转换错误发生。如果输入不是一个有效的整数,程序会提示玩家重新输入。如果输入是一个有效的整数,程序会与秘密数字进行比较。
根据玩家的猜测与秘密数字的比较结果,程序会给出相应的提示信息。如果猜测数字大于秘密数字,程序会提示玩家猜测的数字过大;如果猜测数字小于秘密数字,程序会提示玩家猜测的数字过小。如果猜测数字与秘密数字相等,程序会输出"Correct, you Legend!"的提示信息,并结束游戏。
整个游戏过程在一个循环中进行,直到玩家猜中秘密数字为止。这个简单而有趣的猜数字游戏展示了Go语言中处理用户输入和随机数生成的基本技巧。
`package main
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)
continue
}
input = strings.Trim(input, "\r\n")
guess, err := strconv.Atoi(input)
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
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
}
}
}`