29_猜字游戏


/*
整体架构:
	1、产生一个四位随机数
	2、把产生的四位随机数按位放入切片中
	3、把切片传入游戏中与玩家手动输入的数进行比对

*/

package main

import (
	"fmt"
	"math/rand"
	"time"
)
//随机创建一个随机四位数
func CreatNum(p *int) {
	rand.Seed(time.Now().UnixNano())
	for {
		*p = rand.Intn(10000)
		if *p > 999 && *p < 10000 {
			break
		}
	}
}

//把产生的随机数按位存储在切片中(水仙花树)
func GetNum(s []int, RandNum int) {
	s[0] = RandNum / 1000
	s[1] = RandNum % 1000 / 100
	s[2] = RandNum % 100 / 10
	s[3] = RandNum % 10

}

//把切片传入游戏中进行与玩家比对
func OnGame(s []int) {
	for {
		var num int
		fmt.Println("请输入一个四位数:")
		fmt.Scanf("%d", &num)
		for {
			if num > 999 && num < 10000 {
				break

			} else {
				fmt.Println("请按要求重新输入:")
				fmt.Scanf("%d", &num)

			}
		}
		NewSlice := make([]int, 4) //储存玩家输入的数字分片
		GetNum(NewSlice, num)

		n := 0
		for i := 0; i < 4; i++ {
			if s[i] == NewSlice[i] {
				fmt.Printf("第%d位比对正确,%d
", i+1, NewSlice[i])
				n++
			} else if s[i] > NewSlice[i] {
				fmt.Printf("第%d输入的数较小,%d
", i+1, NewSlice[i])
			} else {
				fmt.Printf("第%d输入的数较大,%d
", i+1, NewSlice[i])
			}
		}

		if n == 4 {
			fmt.Println("恭喜你猜对了!!!:")
			break //跳出最外层循环
		} else {
			fmt.Println("答案不对,请重新输入:")
			fmt.Scanf("%d", &num)
		}

	}

}

func main() {
	var RandNum int
	//随机创建一个随机四位数
	CreatNum(&RandNum)
	//fmt.Println(RandNum)

	//把产生的随机数按位存储在切片中(水星花树)
	s := make([]int, 4)
	GetNum(s, RandNum)
	//fmt.Println(s)

	//把切片传入游戏中进行与玩家比对
	OnGame(s)

}