J2SE小项目—猜字母游戏

来源:互联网 发布:sql查询分析器不见了 编辑:程序博客网 时间:2024/04/29 06:36

需要的功能:
1.随机生成5个小写字母
2.用户输入猜测值,取前5个字母,不够为null
3.将猜测值与实际值比较,返回值正确的数量以及值和位置都正确的数量
4.当用户全对或次数超过50次时,返回用户分数,游戏结束

import java.util.Arrays;import java.util.Scanner;public class GuessChar {    /*     * > 需要的功能:     * >1.随机生成5个小写字母     * >2.用户输入猜测值,取前5个字母,不够为null     * >3.将猜测值与实际值比较,返回值正确的数量以及值和位置都正确的数量     * >4.当用户全对或次数超过20次时,返回用户分数,游戏结束     * >5.满分100分,错一次扣5分     */    static Scanner scanner = new Scanner(System.in);//定义在外面,方便后续关闭    static int count;    public static void main(String[] args) {        System.out.println("客官,开始吧~");        compareTo(getRandomChar(),getUserChar());        GuessChar.scanner.close();    }    private static void compareTo(char[] randomChar, char[] userChar) {        int right = 0;        int allRight = 0;        int last = randomChar.length;//优化算法        System.out.println(randomChar);        for (int i = 0; i < 5; i++) {            if (randomChar[i]==userChar[i]) {                allRight++;            }        }        if (allRight==5) {            System.out.println("恭喜你猜对了,你的得分是"+(100-5*count));            return;        }        if (count==20) {            System.out.println("抱歉,你已经输光了,正确答案是:"+randomChar);        }        char[] randomCharCopy = Arrays.copyOf(randomChar, randomChar.length);        Arrays.sort(randomCharCopy);        Arrays.sort(userChar);        for (int i = 4; i > 0; i--) {            for (int j = 0; j < last; j++) {                if(userChar[i]==randomChar[j]){                    right++;                    last = j;                }            }        }        count++;        System.out.println("客官猜对了"+right+"个字母,位置和值都对的字母有"+allRight+"个");        compareTo(randomChar,getUserChar());    }    private static char[] getUserChar() {        char[] userChar;        System.out.println("请输入猜测值:");        userChar = scanner.nextLine().toCharArray();//将输入的字符串转变成字符数组        userChar = Arrays.copyOf(userChar, 5);//将数组转变成指定长度        return userChar;            }    private static char[] getRandomChar() {        char[] randomChar =  new char[5];        for (int i = 0; i < randomChar.length; i++) {            randomChar[i] = (char) ((int) (Math.random()*26)+97);        }        return randomChar;      }}
0 0
原创粉丝点击