go语言猜数字小游戏

threeyax · · 2714 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

已经快12点了,先写了发出来,要不就算明天的了敲打今天写的有点晚,现在代码正在调试中,一会发出来


最近看了好多基础的go语言教程,然后教程里都有的也不好意思再在这写一遍了,写一个猜数字小游戏练手,也算用到了很多基础知识了


代码如下:

package main

import (
	"bufio"
	"fmt"
	"math/rand"
	"os"
)

func main() {
	fmt.Println("欢迎来到猜数字小游戏")
	targetArr := randNum(4)
	var srcArr [4]int
	crectNum := 0
	reader := bufio.NewReader(os.Stdin)
	fmt.Println("请输入四个数字连续输入不加空格")
	for {
		input, _ := reader.ReadString('\n')
		for i := 0; i < 4; i++ {
			srcArr[i] = int(input[i] - '0')
		}
		crectNum = bothRight(srcArr, targetArr)
		fmt.Printf("数字正确位置不正确的有%d,数字位置全对的有%d", numIsRight(srcArr, targetArr), crectNum)
		fmt.Println("")
		if crectNum == 4 {
			fmt.Println("恭喜你答对了")
			fmt.Println(targetArr)
			break
		}

	}
}
func randNum(lenth int) (arr []int) {
	tempArr := make([]int, lenth)
	for i := 0; i < lenth; i++ {
		tempNum := rand.Intn(10)
		b := true
		for j := 0; j <= i; j++ {
			if tempArr[j] == tempNum {
				i--
				b = false
				break
			}
		}
		if b {
			tempArr[i] = tempNum
		}

	}
	return tempArr
}
func numIsRight(srcArr [4]int, targetArr []int) (num int) {
	num = 0
	for i := 0; i < len(srcArr); i++ {
		for j := 0; j < len(targetArr); j++ {
			if srcArr[i] == targetArr[j] && i != j {
				num++
			}
		}
	}
	return
}
func bothRight(srcArr [4]int, targetArr []int) (num int) {
	num = 0
	for i := 0; i < len(srcArr); i++ {
		if srcArr[i] == targetArr[i] {
			num++
		}
	}
	return
}

还有bug,在我电脑上持行随机数老是固定的,今天太晚了,明天好好看下,代码写的又太啰嗦了,对不起,时间太晚了,明天可以重构一下

运行效果如下:

欢迎来到猜数字小游戏

请输入四个数字连续输入不加空格

1234

数字正确位置不正确的有0,数字位置全对的有1

1798

数字正确位置不正确的有0,数字位置全对的有4

恭喜你答对了

[1 7 9 8]

成功: 进程退出代码 0.


大笑只会随机1798,一下就答对了,重新编译还是1798生气郁闷



好吧

r := rand.New(rand.NewSource(time.Now().UnixNano()))

用上面这个可以给随机函数一个时间种子,保证每次随机到的不一样

用r.Intn(10)来获取随机数



有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:threeyax

查看原文:go语言猜数字小游戏

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2714 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传