01_Go游戏猜数字

package main

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

func initRandNum(p *int) {
    rand.Seed(time.Now().UnixNano())
    var num int
    for {
        num = rand.Intn(10000)
        if num >= 1000 {
            break
        }
    }

    *p = num
}

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

func runGame(randSlice []int, userSlice []int) {
    var isRight bool = true
    for i := 0; i < len(userSlice); i++ {
        if userSlice[i] > randSlice[i] {
            fmt.Printf("第 %d 位猜大了\n", i)
            isRight = false
        } else if userSlice[i] < randSlice[i] {
            fmt.Printf("第 %d 位猜小了\n", i)
            isRight = false
        } else {
            fmt.Printf("第 %d 位猜对了\n", i)
        }
    }

    if isRight {
        fmt.Println("恭喜过关!")
        os.Exit(0)
    }
}

func main() {
    var randNum int
    randSlice := make([]int, 4)
    var userNum int
    userSlice := make([]int, 4)

    for {
        fmt.Println("************************************")
        fmt.Println(`
    欢迎来到猜数字游戏
    游戏要求:
    1. 请输入一个四位数;
    2. 不能输入非数字之外的字符
    3. 输入0退出游戏
    `)
        fmt.Println("************************************")

        initRandNum(&randNum)
        initRandSlice(randSlice, randNum)
        fmt.Printf("randSlice: %d\n", randSlice)

        fmt.Printf("请输入一个千位数字(0退出):")
        fmt.Scanln(&userNum)
        switch {
        case userNum >= 1000 && userNum <= 9999:
            initRandSlice(userSlice, userNum)
            runGame(randSlice, userSlice)
        case userNum == 0:
            os.Exit(1)
        default:
            fmt.Println("无效的输入")
        }
    }
}
原文地址:https://www.cnblogs.com/luwei0915/p/15440247.html