猜谜游戏(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
		}
	}
}

解释:这段代码是一个简单的猜数字游戏程序,使用 Go 语言编写。

首先,代码导入了一些需要使用的包,包括 "bufio""fmt""math/rand""os""strconv""strings",这些包提供了处理输入输出、生成随机数和字符串处理的功能。

接下来,在 main 函数中,定义了一个变量 maxNum,它表示可猜测的最大数字。然后使用 rand.Seed(time.Now().UnixNano()) 设置随机数生成器的种子,以确保每次程序运行时生成的随机数是不同的。然后使用 rand.Intn(maxNum) 生成一个介于 0 和 maxNum 之间的随机整数作为秘密数字。

然后程序提示用户输入猜测的数字,并使用 bufio.NewReader(os.Stdin) 创建一个读取标准输入的读取器。

之后进入一个无限循环,在循环中不断读取用户输入的猜测数字,直到猜测正确为止。循环开始时,调用 reader.ReadString('\n') 读取用户输入的完整一行字符串,包括换行符。然后使用 strings.Trim(input, "\r\n") 去除字符串开头和结尾处的回车符和换行符,并将修剪后的字符串赋值给 input 变量。

接下来,使用 strconv.Atoi(input) 将修剪后的字符串转换为整数类型,并将转换后的结果赋值给 guess 变量。如果转换出错,则输出错误信息并要求用户重新输入。

然后程序输出用户猜测的数字,并与秘密数字进行比较。如果猜测数字大于秘密数字,则输出提示信息告诉用户猜测数字太大;如果猜测数字小于秘密数字,则输出提示信息告诉用户猜测数字太小。如果猜测数字与秘密数字相等,则输出提示信息告诉用户猜测正确,并跳出循环。

整个过程会循环进行,直到用户猜测正确为止。

你可能感兴趣的:(Go,游戏,golang,开发语言)