游戏:猜词游戏

1.(游戏:猜字游戏)
编写一个猜字游戏。随机产生一个单词,提示用户一次猜测一个字母,如运行示例所示。单词中的每个字母显示为一个星号。当用户猜测正确后,正确的字母显示出来。当用户猜出一个单词,显示猜错的次数,并且询问用户是否继续对另外一个单词进行游戏。声明一个数组来存储单词,如下所示:
在这里插入图片描述
问题分析:首先我们先创建一个题库,然后随机抽取一个单词,然后加密,*号的长度为抽取单词的长度。
玩家开始游戏时输入字符,我们创建一个方法来判断是否猜对,如果猜对则在该位置打印该字母,猜错的话加密程度不变,猜错次数+1。如果全部猜对,打印该单词及猜错次数,并且询问玩家是否继续。

代码实现:

import java.util.*;
class Demo{
    //1.创建一个词库
    private static String words[]={"one","two","three"};
    //2.抽取一个词
    private static String word=null;
    //3.该单词被猜出来的程度
    private static boolean[] state=null;
    //4.你猜错的次数
    private static int missed =0;
    
    public static void main(String[] args) {
        Random random=new Random();
        Scanner scanner=new Scanner(System.in);
        word=words[random.nextInt(words.length)];
        state=new boolean[word.length()];
        //5.开始猜单词
        while(true){
            String pwd=getPwd();
            System.out.print("Enter a letter in word "+pwd+":");
            String letter =scanner.next();
            changeWordState(letter);
            if(isEnd()){
            	//一轮游戏结束,是否继续
                System.out.println("The word is "+word+".You missed "+missed+(missed>1?" times":" time"));
                System.out.print("Do you want to guess another word?Enter yes or other:");
                if(scanner.next().equals("yes")){
                    word=words[random.nextInt(words.length)];
                    state=new boolean[word.length()];
                    missed=0;
                }else{
                    break;
                }
            }
        }
    }
    private static boolean isEnd(){
        for(int i=0;i<state.length;i++){
            if(state[i]==false){
                return false;
            }
        }
        return true;
    }
    private static void changeWordState(String letter){
    	//进行猜词,猜对在对应位置打印,猜错不改变打印且猜错次数+1
        boolean flag =false;
        for(int i=0;i<word.length();i++){
            if((word.charAt(i)+"").equals(letter)){
                flag=true;
                if(state[i]==false){
                    state[i]=true;
                }else{
                    System.out.println("/t"+letter+" is already in the word");
                    return;
                }
            }
        }
        if(!flag){
            missed++;
            System.out.println("\t"+letter+" is not in the word");
        }
    }
    private static String getPwd(){
    	//创建密文,取随机单词的长度,打印*
        String pwd="";
        for(int i=0;i<word.length();i++){
            if(state[i]==true){
                pwd+=word.charAt(i);
            }else{
                pwd+="*";
            }
        }
        return pwd;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章