zoukankan      html  css  js  c++  java
  • Java 猜字谜游戏

    package fundmental_excise6;
    
    import java.util.Arrays;
    import java.util.Scanner;
    
    /**
     * @author : jeasion
     * @date 创建时间:2019年4月10日 上午9:35:57
     * @name 猜字母游戏——实现游戏等级
     * @comment 为猜字母游戏添加游戏等级。游戏等级设为三等:5、7和9,代表所需要猜测的字母个数。 游戏    开始时,由玩家选择游戏等级(5,7,9)。
     *          如果选择7,则会随机产生7个字符, 然后玩家输入一个字符串包含7个字符,看这7个字符和随机产生的7个字符比较, 看是否正确,并统计分数。
     *          另外,如果输入其它,重新提示输入游戏等级
     * @return * A-Z 65-90 a-z 97-122
     */
    public class GuessingWord {
    	// 主函数
    	public static void main(String[] args) {
    		int degree = 5;// 难度
    		int[] statistics = new int[2];
    
    		GuessingWord guessingWord = new GuessingWord();
    
    		degree = guessingWord.degree();// 获取难度
    		char[] ch = guessingWord.generateString(degree);// 生成字符串,并将字符串存储
    		System.out.println("字符串:" + Arrays.toString(ch));
    
    		statistics = guessingWord.regx(ch, degree, statistics);
    		while (statistics[1] != degree) {
    			System.out.println("再猜");
    			statistics = guessingWord.regx(ch, degree, statistics);
    		}
    
    		guessingWord.score(statistics[0]);
    
    	}
    
    	// 游戏等级
    	public int degree() {
    		int degree;
    		Scanner scanner = new Scanner(System.in);
    		System.out.print("请选择游戏等级5 7 9:");
    
    		degree = scanner.nextInt();
    		while (degree != 5 && degree != 7 && degree != 9) {
    			System.out.println("抱歉,你输入的游戏等级有误,请重新输入");
    			degree = scanner.nextInt();
    		}
    		return degree;
    	}
    
    	// 生成字符
    	public char[] generateString(int degree) {
    		char[] ch = new char[degree];
    
    		/*
    		 * 构建一个从0-25的数组, 然后将其中的值加65赋值给char 
    		 * 里面的数只要被用过就将其赋值为1000 保证char不会取到重复的值
    		 */
    		int[] nums = new int[26];
    		for (int i = 0; i < nums.length; i++) {
    			nums[i] = i;
    		}
    		for (int i = 0; i < degree; i++) {
    			int temp = 0;
    			do {
    				temp = (int) (Math.random() * 26);
    				ch[i] = (char) (65 + temp);
    			} while (nums[temp] == 1000);
    			nums[temp] = 1000;
    		}
    
    		return ch;
    	}
    
    	// 字符匹配
    	public int[] regx(char ch[], int degree, int[] statistics) {
    
    		Scanner scanner = new Scanner(System.in);
    		char[] inputChar = new char[ch.length];
    		int pos = 0;
    		int num = 0;
    
    		// 获取用户输入的字符串,并将全部字符转换成大写字母,方便统计
    		System.out.println("请输入你的字符串");
    		String string = scanner.nextLine().toUpperCase();
    
    		// 用户输入的字符串长度和难度不同,要求用户重新输入
    		while (string.length() != degree) {
    			System.out.println("字符长度不正确,请重新输入");
    			string = scanner.next().toUpperCase();
    		}
    
    		// 将用户输入的字符串拆分成字符数组
    		for (int i = 0; i < inputChar.length; i++) {
    			inputChar[i] = string.charAt(i);
    		}
    //		System.out.println("你输入的字符数组:" + Arrays.toString(inputChar));
    //		System.out.println("原字符数组:" + Arrays.toString(ch));
    		// 进行字符串匹配
    		for (int i = 0; i < inputChar.length; i++) {
    			for (int j = 0; j < inputChar.length; j++) {
    				if (ch[i] == inputChar[j]) {
    					num++;
    					if (i == j) {
    						pos++;
    						break;
    					}
    				}
    			}
    		}
    
    		statistics[0]++; // 获取次数
    		statistics[1] = num;// 获取猜对的个数
    		System.out.println("你猜对了" + num + "个字符," + "其中" + pos + "个字符位置正确,总次数=" + statistics[0] + "	");
    
    		return statistics;
    	}
    
    	// 分数统计
    	public void score(int count) {
    		System.out.println("你一共猜了" + count + "次,得分:" + (500 - count * 10));
    	}
    
    }
    
  • 相关阅读:
    LDAP2-创建OU创建用户
    GNE: 4行代码实现新闻类网站通用爬虫
    为什么每一个爬虫工程师都应该学习 Kafka
    新闻网页通用抽取器GNEv0.04版更新,支持提取正文图片与源代码
    写了那么久的Python,你应该学会使用yield关键字了
    新闻类网页正文通用抽取器
    为什么Python 3.6以后字典有序并且效率更高?
    为什么你需要少看垃圾博客以及如何在Python里精确地四舍五入
    数据工程师妹子养成手记——数据库篇
    一行js代码识别Selenium+Webdriver及其应对方案
  • 原文地址:https://www.cnblogs.com/jeasion/p/10758340.html
Copyright © 2011-2022 走看看