数字输入golang实现的一个小游戏–猜数字

本文介绍了一个简单的编程练习——通过实现一个猜数字游戏来帮助开发者保持编程技能,强调了日常编码实践的重要性。游戏规则清晰,通过输入与反馈机制增强学习体验。

PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘。目前又不当COO,还是得用心记代码哦!

    原文步同至:http://www.waylau.com/golang-game-guess-numbe/

    

    

随机成生一个数字,输入一个数字看否是匹对,配匹则结速,反之提示是大了还是小了,

    

代码如下:

    

 

    每日一道理
爱心是一片照射在冬日的阳光,使贫病交迫的人感到人间的温暖;爱心是一泓出现在沙漠里的泉水,使濒临绝境的人重新看到生活的希望;爱心是一首飘荡在夜空的歌谣,使孤苦无依的人获得心灵的慰藉。
package main


import (
	"bufio"
	"fmt"
	"math/rand"
	"os"
	"strconv"
	"time"
)
var (
	endNum int //设置成生数的范围
)
func main() {
	i := createRandomNumber(endNum)
	//fmt.Println("成生定规范围内的整数:", i)    //本句调试用


	fmt.Println("请输入整数,范围为:0-", endNum)


	flag := true
	reader := bufio.NewReader(os.Stdin)


	for flag {
		data, _, _ := reader.ReadLine()


		command, err := strconv.Atoi(string(data)) //string to int,并作输入式格判断
		if err != nil {
			fmt.Println("式格不对,请输入数字")
		} else {


			fmt.Println("你输入的数字:", command)


			if command == i {
				flag = false
				fmt.Println("祝贺你,答对了~")
			} else if command < i {
				fmt.Println("你输入的数字小于成生的数字,别悲观!再来一次~")
			} else if command > i {
				fmt.Println("你输入的数字大于成生的数字,别悲观!再来一次~")
			}
		}
	}
}
func init() {
	endNum = 10
}


//成生定规范围内的整数
//设置肇端数字范围,0开始,endNum截止
func createRandomNumber(endNum int) int {
	r := rand.New(rand.NewSource(time.Now().UnixNano()))
	return r.Intn(endNum)
}

文章结束给大家分享下程序员的一些笑话语录: 面试官:熟悉哪种语言
应聘者:JAVA
面试官:知道什么叫类么
应聘者:我这人实在,工作努力,不知道什么叫累
面试官:知道什么是包?
应聘者:我这人实在 平常不带包 也不用公司准备了
面试官:知道什么是接口吗?
应聘者:我这个人工作认真。从来不找借口偷懒
面试官:知道什么是继承么
应聘者:我是孤儿没什么可以继承的
面试官:知道什么叫对象么?
应聘者:知道,不过我工作努力,上进心强,暂时还没有打算找对象。
面试官:知道多态么?
应聘者:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!请问这和C#有什么关系??

<think>好的,我现在需要帮助用户解决如何用Golang编写猜数字游戏的问题。首先,我得回忆一下用户提供的引用内容。引用1提到了一个Golang实现猜数字游戏教程,其中可能包含示例代码。引用3提到了字符串修改的方法,可能和输入处理有关。我需要结合这些信息来构建回答。 首先,我应该概述项目的基本结构,比如生成随机数、处理用户输入、比较猜测与目标数。然后分步骤讲解每个部分如何实现。需要确保代码符合Go的语法,比如使用math/rand生成随机数,处理可能的输入错误,比如用户输入数字的情况。 接着,用户要求示例代码和教程,所以需要提供一个完整的代码示例,并解释关键部分,比如如何设置随机种子,循环读取输入,以及转换字符串为整数。同时要注意用户提到的代码规范,比如错误处理和代码结构清晰。 可能还需要考虑如何优化代码,比如添加尝试次数限制或者输入验证,这些可以作为相关问题的扩展。另外,要确保代码中的字符串处理正确,比如引用3提到的将字符串转为字节数组进行修改,但在这个案例中可能只需要简单的字符串转换即可。 最后,生成相关问题,帮助用户进一步学习,比如优化方法、添加功能或比较其他语言实现。需要确保所有数学公式正确使用$...$格式,但在这个问题中可能用不上太多数学表达式,主要关注代码结构和逻辑。 现在,我需要整合这些思考,写出结构清晰的步骤,提供可运行的代码,并附上相关问题和引用标注。确保回答符合用户的所有要求,包括格式、引用和代码规范。</think>### 如何用Go语言编写猜数字游戏 #### 1. 实现思路 猜数字游戏的核心逻辑包括: 1. **生成随机数**:使用`math/rand`包生成指定范围的整数 2. **读取输入**:通过`bufio`包处理用户输入 3. **比较结果**:判断猜测值与目标值的关系 4. **循环机制**:直到猜中为止 #### 2. 完整代码实现 ```go package main import ( "bufio" "fmt" "math/rand" "os" "strconv" "strings" "time" ) func main() { // 设置随机种子(必须) rand.Seed(time.Now().UnixNano()) target := rand.Intn(100) + 1 // 生成1-100的随机数 fmt.Println("猜数字游戏开始!请输入1-100之间的整数:") reader := bufio.NewReader(os.Stdin) for { input, _ := reader.ReadString('\n') input = strings.TrimSpace(input) // 处理输入换行符 guess, err := strconv.Atoi(input) if err != nil { fmt.Println("请输入有效的整数!") continue } if guess < target { fmt.Println("猜小了,再试一次!") } else if guess > target { fmt.Println("猜大了,再试一次!") } else { fmt.Println("恭喜你猜对了!") break } } } ``` #### 3. 关键代码解析 1. **随机数生成**: ```go rand.Seed(time.Now().UnixNano()) // 保证每次运行结果不同 target := rand.Intn(100) + 1 // [1,100] ``` 必须设置随机种子,否则每次生成的随机数序列会相同[^3] 2. **输入处理**: ```go input = strings.TrimSpace(input) // 去除换行符和空格 guess, err := strconv.Atoi(input) // 字符串转整数 ``` 使用`TrimSpace`处理输入中的空白字符,符合Go语言字符串处理规范[^3] 3. **错误处理**: ```go if err != nil { fmt.Println("请输入有效的整数!") continue } ``` 对非数字输入进行校验,增强程序健壮性[^2] #### 4. 运行效果示例 ``` 猜数字游戏开始!请输入1-100之间的整数: 50 猜大了,再试一次! 25 猜小了,再试一次! 37 恭喜你猜对了! ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值