[GO]猜数字的小游戏

随机生成四位数字,然后用户输入四位数字,然后根据提示一步步猜到随机数

package main

import (
    "math/rand"
    "time"
    "fmt"
)

func getNum(s[]int, n int) {
    s[0] = n / 1000
    s[1] = n % 1000 / 100
    s[2] = n % 100 / 10
    s[3] = n % 10
}

func InitData(ininum *int)  {
    rand.Seed(time.Now().UnixNano())
    var randomNum int
    for  {
        randomNum = rand.Intn(10000)
        if randomNum > 999{
            break
        }
    }
    *ininum = randomNum
}

func KeyNum(s []int, k *int)  {
    for {
        fmt.Println("请输入一个四位数字: ")
        var keynum int
        fmt.Scan(&keynum)
        if keynum > 999 && keynum < 10000 {
            getNum(s, keynum)
            *k = keynum
            break
        }
    }
}

func gussNum(s []int, k []int, p *int)  {
    var n int
    for i := 0; i < 4; i++  {
        if s[i] > k[i] {
            fmt.Printf("第%d小了一点
", i+1)
        }else if s[i] < k[i] {
            fmt.Printf("第%d大了一点
", i+1)
        }else {
            fmt.Printf("第%d猜对了
", i+1)
            n ++
        }
    }
    *p =n
}

func main()  {
    var InitNum int
    InitData(&InitNum)
    fmt.Println("InitNum is ", InitNum)
    InitNumSlice := make([]int, 4)
    getNum(InitNumSlice, InitNum)
    fmt.Println("InitNum Slice = ", InitNumSlice)
    var keynum int
    keyslice := make([]int, 4)
    var n int
    for  {
        n = 0
        KeyNum(keyslice, &keynum)
        gussNum(InitNumSlice, keyslice, &n)
        if n == 4{
            break
        }
    }
}

执行结果

InitNum is  3124
InitNum Slice =  [3 1 2 4]  //其实这里已经把答案打印出来了,可以在代码里将打印去掉
请输入一个四位数字: 
2222
第1小了一点
第2大了一点
第3猜对了
第4小了一点
请输入一个四位数字: 
3133
第1猜对了
第2猜对了
第3大了一点
第4小了一点
请输入一个四位数字: 
3134
第1猜对了
第2猜对了
第3大了一点
第4猜对了
请输入一个四位数字: 
3124
第1猜对了
第2猜对了
第3猜对了
第4猜对了
原文地址:https://www.cnblogs.com/baylorqu/p/9590581.html