java猜字母讲解_JAVA语言中的经典案例:猜字母游戏
設計數據結構
問題
猜字母游戲規則為,隨機產生5個按照一定順序排列的字符作為猜測的結果,由玩家來猜測此字符串,玩家可以猜測多次,每猜測一次,由系統提示結果,如果猜測的完全正確則游戲結束,計算玩家的游戲得分并輸出;如果沒猜對則提示猜測的結果,如果猜對了幾個字符,以及猜對了幾個字符的位置等信息,并提示玩家游戲繼續。
本案例要求使用交互的方式實現此游戲:由玩家在控制臺輸入所猜測的字符串,如果所猜測的字符串與結果并不完全相同,則在界面輸出比較后的結果,并提示玩家繼續猜測
由上圖可以看出,每次猜測后程序將比較玩家輸入的字符串,比較字符以及字符的位置,然后提示結果:5個字符中正確的字符個數,以及位置正確的字符個數,以便于玩家判斷后續如何猜測。玩家猜測正確后,游戲結束。并給出游戲得分
游戲的得分規則:字符的個數乘以100為總分,即500分,玩家如果第一次猜對,則滿分;每多猜一次扣10分。如果玩家錄入exit,則游戲終止,程序結束
本案例需要實現猜字母游戲中的數據結構設計,即設計相關的數據結構,可以存儲此程序中用到的相關數據。
方案及步驟
分析猜字母游戲可以看出,此程序需要存儲隨機生成的字母個數,隨機生成的字符串、玩家猜測的總次數,玩家錄入的字符串,以及比較后的結果。因此,設計如下變量來存儲此游戲中需要用到的相關數據。
int類型變量count:用于記錄玩家猜字母的總次數
char數組類型變量input:用于保存用戶猜測的數據
char數組類型變量chs:用于存儲隨機生成的多個字母所組成的字符串
int數組類型變量result :用于保存判斷的結果,此數組有兩個元素,第一個用于保存完全猜對的字母個數(字符正確且位置也正確),第二個元素用于保存猜對的字母的個數(字符正確但位置不正確)
設計程序結構
方案
分析猜字母游戲可以看出,程序首先要隨機產生5個不同的字母作為需要猜測的結果,因此可以先定義一個方法,以實現此功能;其次當玩家猜測一次后,程序需要將玩家錄入的字符串和正確的答案進行比較,統計正確的字符個數以及正確的位置個數,因此也可以先定義一個方法,專用于實現比較功能。這樣就可以在main方法中調用這兩個方法。
步驟
步驟一:定義方法generate()
在GuessingGame類中,定義方法generate(),使方法用于隨機生成五個不同的字母
步驟二:定義方法chek()
在GuessingGame類中,定義方法chek(),該方法用于將玩家輸入的多個字母(參數input)和系統隨機生成的多個字母(參數chs)進行比較。統計正確的字符個數,以及位置正確的個數,并將結果存儲的數組中,然后返回給調用方。
實現字母生成方法
方案
實現generate方法,首先聲明一個字符類型的數組,用于存儲26個大寫字母,然后聲明一個boolean類型的數組,其長度也為26,此數組的初始值均為false,意味著,程序起始,沒有任何字母被選中,如果某個字母被選中,同時設置該字母在boolean類型數組中對應位置的值為true,表示該字母被選中。
然后使用嵌套循環:外層循環用于控制所生成的字母個數,即循環5次,以產生5個字母,而內層循環則用于判斷生成的字母是否重復。generate方法的程序流程如
步驟
步驟一:構建存儲所有字母的數組
在generate方法中,首先定義char類型的數組變量letters,用于存放26個大寫字母,然后定義boolean類型的數組變量flag,flag數組的大小鶴letters數組的大小相同,用于記載某字母是否被選中,以便于判斷字母是否重復
步驟二隨機生成5個不同的字母
使用嵌套循環,隨機生成5個不同的字母,并且這5個字母各不相同
實現字母檢測方法
方案
實現chek方法,需要逐一取出玩家錄入的每一個字符,并和結果字符一一比較,比較字符本身以及字符所在的位置,并記載比較的結果,此案例需要使用嵌套循環來實現。Chek方法的流程圖如下,其中紅色表示外層循環,藍色部分表示外部循環。
步驟
步驟一:構建存儲比較結果的數組
在chek()方法中,首先定義int類型的數組類型變量result,用于存儲比較的結果,數組result的長度為2,其中,result[0]用于存放完全猜對的字母個數(字符和位置均正確),result[1]用于存放猜對的字母個數(字符正確,但位置不正確)
步驟二:比較
使用嵌套循環,統計完全猜對字母的個數,和猜對字母個數(位置不對)
實現主方法
為實現猜字母游戲的整體過程,首先要調用generate()方法,以生成5個字母;其次需要使用while(true)循環允許玩家進行多次猜測;
在循環中,接收玩家猜測的字母,然后調用check()方法,檢查猜測結果,如果猜測正確,則輸出提示信息和分數,游戲結束;如果猜測錯誤,則輸出猜測的判斷結果并提示玩家游戲繼續。
步驟
步驟一:構建存儲所有字母的數組
買main方法中,先輸出提示信息表示游戲開始,然后調用generate()方法生成要猜測的5個字母,并提示玩家開始猜測
步驟二:構建循環
使用while(true)循環,并在循環中調用Scanner類的next()方法接收玩家猜測的字符串。為方便字符串的比較,將玩家錄入的字符串轉換為大寫字母,然后判斷玩家錄入的是否為“EXIT”,如果是則中止循環,游戲結束。
步驟三:比較
如果玩家錄入的不是“EXIT”,則調用check()方法與答案進行比較,并得到存儲比較結果的數組result。
比較完畢之后,根據比較結果輸出提示信息界面。如果5個字符的位置均正確,則表示游戲結束,計算輸出玩家的得分;否則將猜測次數累加1,并提示玩家所猜對的字符個數以及位置個數,游戲結束。
總結
以上是生活随笔為你收集整理的java猜字母讲解_JAVA语言中的经典案例:猜字母游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: flyway java使用,如何使用fl
- 下一篇: python 数学符号读法大全_math