/*
整体架构:
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)
}