1. 程式人生 > 其它 >golang 猜數字小遊戲

golang 猜數字小遊戲

技術標籤:# Gogo猜數字小遊戲golang猜數字小遊戲

一、場景

隨機生成 2 個數,在這 2 個數中隨機結果數字。然後我們鍵盤錄入,猜測這個結果數字是幾。

二、分析

需要完成這些操作,我們需要知道的知識點:

  • 1、隨機數獲取函式
  • 2、鍵盤錄入函式
  • 3、列印(格式化列印)函式

三、程式碼

package main

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

func main() {
	//結果數值的取值範圍
	guessArray :=
[2][2]int64{ {10, 20}, //最小值取值範圍為[10, 20) {30, 80}, //最大值取值範圍為[30, 80) } guessResult := make([]int64, 0) //我們需要猜測的數字範圍 var i int64 for i = 0; i < 2; i++ { //迴圈取出最小、最大值 min := guessArray[i][0] max := guessArray[i][1] randNumber := genRangeNumber(min, max, i) guessResult = append(guessResult, randNumber)
//把隨機出來的結果追加到我們需要猜測的數字中 } //生成結果資料 guessMin := guessResult[0] guessMax := guessResult[1] resultNumber := genRangeNumber(guessMin, guessMax, 999) //在[guessMin, guessMax)中隨機生成答案數字 //先提示一下猜測範圍 fmt.Printf("數字範圍在:[%d, %d) \n", guessMin, guessMax) //編寫一個for死迴圈:一直猜測結果,直到猜對為止 var inputNumber int64
guessNumber := 0 //記錄猜測的次數 for { //開始猜測了 fmt.Println("請輸入數字:") fmt.Scanln(&inputNumber) if inputNumber > resultNumber { fmt.Printf("大了,數字範圍:(%d, %d)\n", guessMin, inputNumber) guessMax = inputNumber //把猜測是最大值設定為輸入的值 guessNumber++ continue //跳出迴圈 } if inputNumber < resultNumber { fmt.Printf("小了,數字範圍:(%d, %d)\n", inputNumber, guessMax) guessMin = inputNumber //把猜測是最小值設定為輸入的值 guessNumber++ continue //跳出迴圈 } guessNumber++ break //跳出迴圈 } fmt.Printf("恭喜您:猜測了 [ %d ] 次就成功猜到了,正確答案是:%d", guessNumber, resultNumber) } /** * 生成兩個數字[min, max)之間的隨機數 * @param min 最小值 * @param max 最大值 * @param i 為了隨機,加上迴圈i,保證唯一 */ func genRangeNumber(min, max, i int64) int64 { //println(time.Now().Unix()) //列印:1609232986 //println(time.Now().UnixNano()) //列印:1609232986276977000 rand.Seed(time.Now().UnixNano() + i) //給一個時間戳的種子,否則每次生成都是一樣的值 randNum := rand.Int63n(max - min) randNum = min + randNum return randNum }

四、執行結果

在這裡插入圖片描述

五、延伸

我們可以完善一下我們的程式碼:

  • 1、輸入的數字型別校驗
  • 2、輸入的數字範圍校驗不能小於猜測的最小值,並且不能大於等於猜測的最大值