猜数字小游戏php,go语言猜数字小游戏

已经快12点了,先写了发出来,要不就算明天的了

knock.gif今天写的有点晚,现在代码正在调试中,一会发出来

最近看了好多基础的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.

laugh.gif只会随机1798,一下就答对了,重新编译还是1798

mad.gif郁闷

好吧

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值