“这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
介绍
猜数字游戏就是系统随机生成一个数字,然后我们输入一个数字去猜,系统提示是否大于或小于,我们根据提示继续猜,直到猜到那个数字为止。
游戏效果图
开发流程
1.随机生成一个数
每一个Go文件需要有package关键字命名。
需要使用import关键字导入需要的库,如fmt,可用println方法进行换行输出。
Go语言的变量可以使用:=进行赋值。
func关键词来命名函数,主函数main。
package main
import (
"fmt"
"math/rand"
"time"
)
/* 这是注释 */
func main() { //注意:{ 必须紧跟,{ 不能在单独的行上
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
fmt.Println("The secret number is ", secretNumber)
}
运行效果
2.输入一个数字
使用bufio、reader、strings、strconv库,可以监听键盘里的数字。
go语言的异常处理可以使用err变量,然后对异常进行判断。
fmt.Println("Please input your guess")
reader := bufio.NewReader(os.Stdin) //bufio库
input, err := reader.ReadString('\n') //reader库
if err != nil {
fmt.Println("An error occured while reading input. Please try again", err)
return
}
input = strings.TrimSuffix(input, "\r\n") //strings库
guess, err := strconv.Atoi(input) //strconv库
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
return
}
fmt.Println("You guess is", guess)
运行效果
3.条件判断
Go语言不像Java、C语言那样有()和;等约束,直接使用{}来区分即可。
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!")
}
运行效果
4.循环语句
使用for关键字,break关键字可以结束循环。
for {
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("An error occured while reading input. Please try again", err)
continue
}
input = strings.TrimSuffix(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
}
}
完整代码
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.TrimSuffix(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
}
}
}
思考
还可以如何输入数字?