[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小了一点\n", i+1) }else if s[i] < k[i] { fmt.Printf("第%d大了一点\n", i+1) }else { fmt.Printf("第%d猜对了\n", 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猜对了