猜游戏 数字 字母 java

运行效果截图


项目工程结构


代码



猜游戏总类

package Jobday07_练习猜字游戏;

import java.util.Scanner;

public abstract class GuessGame {

    public void start(){
        String r = suiji();
        tiShi();
        int times =1;
        int mark = 100;
        while(true){
            System.out.println("猜:");
            String c =new Scanner(System.in).nextLine();
            if(c.equals("EXIT")){
                System.out.println("下次来要坚持住呦!期待你的到来!");
                break;
            }
            if(c.equals("秘诀")){
                System.out.println(r);
                continue;
            }
            String result = biJiao(c,r);
            System.out.println(result);
            if(caiDui(result)){
                System.out.println("恭喜你打对了!,共用"+times+"次,成绩为"+mark+"分");
                break;
            }
            times++;
            mark -=10;
            if(mark ==0){
                System.out.println("分数用完了,下次在来吧!");
                break;
            }
            
        }
    }
    public abstract  String suiji();
    public abstract  void tiShi();
    public abstract String biJiao(String c,String r);
    public abstract boolean caiDui (String result);
}


字符类

package Jobday07_练习猜字游戏;

import java.util.Arrays;
import java.util.Random;

public class GuessLetterGame extends GuessGame{

    
    
    @Override
    public String suiji() {
        char[] a = new char[26];
        for(int i =0;i<a.length;i++){
            a[i] =(char) ('A'+i);
        }
        for(int i = 0;i<5;i++){
            int n = new Random().nextInt(26);
            char b = a[i];
            a[i] = a[n];
            a[n] = b;
        }
        char[] c = Arrays.copyOf(a, 5);
        String s = new String( c);
        return s;
    }

    @Override
    public void tiShi() {
        System.out.println("以及随机生成不重复的五个大写字母");
        System.out.println("请猜 字母为什么");
    }

    @Override
    public String biJiao(String c, String r) {
        int a =0,b = 0;
        for(int i=0;i<c.length();i++){
            for(int j=0;j<r.length();j++){
                if(c.charAt(i)==r.charAt(j)){
                    if(i==j){
                        a++;
                    }else{
                        b++;
                    }
                    break;
                }
            }
        }
        return a+"A"+b+"B";
    }

    @Override
    public boolean caiDui(String result) {
        return result.equals("5A0B");
    }

}

数字类

package Jobday07_练习猜字游戏;

import java.util.Random;

public class GuessNumberGame extends GuessGame {

    
    @Override
    public String suiji() {
        int n = new Random().nextInt(1000) + 1;

        return String.valueOf(n);
    }

    @Override
    public void tiShi() {
        System.out.println("已经随机生成1-1000的随机数");
        System.out.println("请猜这个数为");
    }

    @Override
    public String biJiao(String c, String r) {
        int a = Integer.parseInt(c);
        int b = Integer.parseInt(r);
        if (a > b) {
            return "大";
        } else if (a < b) {
            return "小";
        } else {
            return "对";
        }

    }

    @Override
    public boolean caiDui(String result) {
        return result.equals("对");
    }

}


测试类

package Jobday07_练习猜字游戏;

import java.util.Scanner;

import javax.swing.text.GapContent;

public class Test1 {
 public static void main(String[] args) {
    System.out.println("1 数字 2 字母");
    System.out.println("请选择 >");
    int n =  new Scanner(System.in).nextInt();
     GuessGame game;
     if(n == 1){
         game = new GuessNumberGame();
     }else{
         game = new GuessLetterGame();
     }
     game.start();
}
}


发布了21 篇原创文章 · 获赞 3 · 访问量 6562

猜你喜欢

转载自blog.csdn.net/MADMY/article/details/80428309