Go语言编程笔记番外1:猜数游戏

Go语言编程笔记番外1:猜数游戏

image-20211108153040805

图源:wallpapercave.com

这是一个常见的用于练习编程基础的一个小游戏:生成一个100以内的随机数,用户在一定的次数内猜测数字是多少,每次提示猜测结果是高了还是低了,直到最终猜到结果获胜或者失败。

本篇笔记的思路和动机都来自《Head First Go》。

package main

import (
	"bufio"
	"fmt"
	"log"
	"math/rand"
	"os"
	"strconv"
	"strings"
	"time"
)

var reader = bufio.NewReader(os.Stdin)

func main() {
	rand.Seed(time.Now().Unix())
	targetNum := rand.Intn(100) + 1 //产生的随机数是0-99,这里+1
	var success bool
	const TOTAL_TIMES = 10 //总的尝试次数
	for i := 0; i < TOTAL_TIMES; i++ {
		var leftTimes int = TOTAL_TIMES - i
		fmt.Printf("Please enter a number(%d times left):", leftTimes)
		inputNum := inputInt()
		if inputNum < targetNum {
			fmt.Println("low")
		} else if inputNum > targetNum {
			fmt.Println("hight")
		} else {
			fmt.Println("Success! You win!")
			success = true
			break
		}
	}
	if !success {
		fmt.Printf("You failed, the target number is %d.Please try again", targetNum)
	}
}

func inputInt() int {
	strNum, err := reader.ReadString('\n') //从命令行读取数据,换行为止
	if err != nil {
		log.Fatal(err)
	}
	strNum = strings.TrimSpace(strNum) //去除结尾的换行符
	num, err := strconv.Atoi(strNum)   //将字符串转换为int
	if err != nil {
		log.Fatal(err)
	}
	return num
}

好像也没啥可以说的,不过作为一个阶段性的小练习来说还是不错的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值