基于Go語(yǔ)言實(shí)現(xiàn)猜謎游戲
一、程序要實(shí)現(xiàn)效果:
1.程序首先生成一個(gè)0-100的隨機(jī)整數(shù)。
2.提示玩家進(jìn)行猜測(cè)。
3.每次玩家需要輸入一個(gè)數(shù)字,程序?qū)?huì)告訴玩家輸入的數(shù)字與生成的數(shù)字的大小關(guān)系,并且讓玩家再次猜測(cè)。
4.如果猜對(duì)了,則會(huì)告訴玩家勝利并退出程序。
二、思路分析:
- 由于要產(chǎn)生0-100的隨機(jī)整數(shù)(且每次運(yùn)行程序產(chǎn)生的數(shù)字都不同),所以使用當(dāng)前的時(shí)間(UnixNano)作為種子來初始化隨機(jī)數(shù)生成器(rand)。
- 使用隨機(jī)數(shù)生成器生成一個(gè)在0到maxNum之間的隨機(jī)整數(shù),作為要猜測(cè)的秘密數(shù)字(secretNumber)。
提示用戶輸入他們的猜測(cè)。
創(chuàng)建一個(gè)從標(biāo)準(zhǔn)輸入(os.Stdin)讀取的緩沖讀取器(bufio.NewReader)。
進(jìn)入一個(gè)無限循環(huán),直到用戶猜對(duì)秘密數(shù)字為止。
在每次循環(huán)中,首先嘗試從緩沖讀取器中讀取一行輸入,如果讀取過程中發(fā)生錯(cuò)誤,則打印錯(cuò)誤信息并跳過本次循環(huán)。
去除輸入字符串兩端的回車和換行符。
嘗試將輸入字符串轉(zhuǎn)換為整數(shù),如果轉(zhuǎn)換失?。摧斎氲牟皇钦麛?shù)),則打印錯(cuò)誤信息并跳過本次循環(huán)。
如果轉(zhuǎn)換成功,打印用戶的猜測(cè)。
根據(jù)用戶的猜測(cè)和秘密數(shù)字的大小關(guān)系,給出相應(yīng)的提示。
如果用戶猜對(duì)了秘密數(shù)字,打印恭喜信息并跳出循環(huán)。
三、具體代碼
package main import ( "bufio" "fmt" "math/rand" "os" "strconv" "strings" "time" ) func main() { maxNum := 100 rand.Seed(time.Now().UnixNano()) secretNumber := rand.Intn(maxNum) // fmt.Println("The secret number is ", secretNumber) fmt.Println("Please input your guess") reader := bufio.NewReader(os.Stdin) for { input, err := reader.ReadString('\n') if err != nil { fmt.Println("An error occured while reading input. Please try again", err) continue } input = strings.Trim(input, "\r\n") guess, err := strconv.Atoi(input) if err != nil { fmt.Println("Invalid input. Please enter an integer value") continue } fmt.Println("You 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 } } }
四、可能存在的疑問
1.去除字符串兩端回車和換行符是什么意思?
答:在讀取用戶輸入時(shí),通常需要去除字符串兩端的回車和換行符。這是因?yàn)檫@些字符通常是由于用戶在終端或命令行中按下Enter鍵而產(chǎn)生的,而不是用戶實(shí)際輸入的內(nèi)容。因此,如果我們不去除它們,將導(dǎo)致程序無法正確解析用戶的輸入,并可能導(dǎo)致意外的行為或錯(cuò)誤。
2.嘗試將輸入字符串轉(zhuǎn)換為整數(shù),如果轉(zhuǎn)換失敗(即輸入的不是整數(shù)),則打印錯(cuò)誤信息并跳過本次循環(huán)。這段思路是什么意思?
答:在Go語(yǔ)言中,對(duì)于輸入的處理都是按照字符串進(jìn)行的,比如我輸入97,其實(shí)是輸入數(shù)字字符“97”。
到此這篇關(guān)于基于Go語(yǔ)言實(shí)現(xiàn)猜謎游戲的文章就介紹到這了,更多相關(guān)Go猜謎游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Skywalking-go自動(dòng)監(jiān)控增強(qiáng)使用探究
這篇文章主要介紹了Skywalking-go自動(dòng)監(jiān)控增強(qiáng)使用深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Go語(yǔ)言輕松實(shí)現(xiàn)郵件發(fā)送通知功能的完全指南
在現(xiàn)代 Web 應(yīng)用中,郵件通知是一個(gè)不可或缺的功能,本文將深入解析一個(gè)基于 Go 語(yǔ)言 smtp 協(xié)議和 email 庫(kù)的郵件發(fā)送工具,需要的可以了解下2025-04-04Go語(yǔ)言實(shí)現(xiàn)UDP協(xié)議及TCP通訊
這篇文章介紹了Go語(yǔ)言實(shí)現(xiàn)UDP協(xié)議及TCP通訊的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07詳解Go語(yǔ)言各種常見類型的默認(rèn)值和判空方法
本文主要介紹了詳解Go語(yǔ)言各種常見類型的默認(rèn)值和判空方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04go語(yǔ)言優(yōu)雅地處理error工具及技巧詳解
這篇文章主要為大家介紹了go語(yǔ)言優(yōu)雅地處理error工具及技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11