猜謎游戲
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
maxNum := 100
r := rand.New(rand.NewSource(time.Now().UnixNano()))
secretNumber := r.Intn(maxNum)
fmt.Println("Please input your guess:")
var guess int
for {
_, err := fmt.Scanf("%d", &guess)
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
continue
}
fmt.Println("Your guess is", guess)
if guess > secretNumber {
fmt.Println("Your guess is bigger than the secret number. Please try again")
} else if guess < secretNumber {
fmt.Println("Your guess is smaller than the secret number. Please try again")
} else {
fmt.Println("Correct, you Legend!")
break
}
}
}
解釋:
這段Go代碼是一個簡單的猜數(shù)字游戲。程序開始時會生成一個隨機的秘密數(shù)字,并提示玩家輸入猜測的數(shù)字。玩家每次輸入一個數(shù)字后,程序會告訴玩家這個數(shù)字是偏大還是偏小,直到玩家猜對為止。如果輸入非數(shù)字或者在讀取輸入時出現(xiàn)錯誤,程序會提示玩家重新輸入。玩家猜對秘密數(shù)字后,游戲結(jié)束并輸出"Correct, you Legend!"。文章來源:http://www.zghlxwxcb.cn/news/detail-536506.html
這個猜數(shù)字游戲的實現(xiàn)邏輯如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-536506.html
- 確定游戲的最大可猜測數(shù)字
maxNum
,在代碼中設(shè)定為100。 - 使用
rand.NewSource(time.Now().UnixNano())
創(chuàng)建一個隨機數(shù)生成器,并以當前時間的納秒數(shù)作為種子,確保每次運行程序時生成的隨機數(shù)是不同的。 - 使用隨機數(shù)生成器的
Intn(maxNum)
方法生成一個0到maxNum-1
之間的隨機整數(shù)作為秘密數(shù)字secretNumber
。 - 提示玩家輸入猜測的數(shù)字,并使用
fmt.Scanf("%d", &guess)
讀取玩家的輸入。 - 進入游戲循環(huán),循環(huán)中玩家可以反復(fù)輸入猜測的數(shù)字直到猜對為止。
- 在每次循環(huán)中,首先讀取玩家輸入的內(nèi)容并處理可能出現(xiàn)的錯誤。
- 使用
strconv.Atoi(input)
將輸入的字符串轉(zhuǎn)換為整數(shù)類型的猜測數(shù)字guess
。若輸入的內(nèi)容非數(shù)字,則提示玩家重新輸入。 - 檢查猜測數(shù)字
guess
與秘密數(shù)字secretNumber
的大小關(guān)系,并給出相應(yīng)的提示信息。 - 如果猜測數(shù)字
guess
大于秘密數(shù)字secretNumber
,則提示玩家繼續(xù)嘗試,如果猜測數(shù)字小于秘密數(shù)字,則同樣提示玩家繼續(xù)嘗試。 - 如果玩家猜對了秘密數(shù)字,輸出"Correct, you Legend!",并結(jié)束游戲循環(huán)。
- 玩家猜對后,游戲結(jié)束,程序運行結(jié)束。
到了這里,關(guān)于猜謎游戲(Go實現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!