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] + "\t"); return statistics;
} // 分数统计
public void score(int count) {
System.out.println("你一共猜了" + count + "次,得分:" + (500 - count * 10));
} }

Java 猜字谜游戏的更多相关文章

  1. 实验三 Java猜数字游戏开发

    课程:Java实验   班级:201352     姓名:程涵  学号:20135210 成绩:             指导教师:娄佳鹏   实验日期:15.06.03 实验密级:         ...

  2. java 猜数字游戏

    作用:猜数字游戏.随机产生1个数字(1~10),大了.小了或者成功后给出提示. 语言:java 工具:eclipse 作者:潇洒鸿图 时间:2016.11.10 >>>>> ...

  3. java猜数游戏(新手记录每天的作业)

    //导入包 import java.util.Scanner;import java.util.Random; //定义一个类 public class Zcs{ //公共静态的主方法 public ...

  4. 从零开始学java(猜数字游戏)

    练练手不喜勿喷,看到什么学习什么第一次发博客格式就见见谅.....                                            2016-07-21 19:55:02 imp ...

  5. java猜数游戏

    java随机数的产生 int number=(int)(Math.random()*10+1) Math.random()*n //n个随机数,从0开始 do{}while循环 //猜数,1到10的随 ...

  6. java猜数字游戏

    import java.util.Scanner; //导入包 class GuessNum { public static void main(String[] args) { int num = ...

  7. Java实现猜字母游戏

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABRQAAAE9CAYAAAB6Cu4FAAAgAElEQVR4nOy995OUR77u2f/H3tjdey ...

  8. 《数据结构算法分析C描述》引论:选择问题,字谜游戏问题

    #include <stdio.h> #include <stdlib.h> // 第一题 // 找出N个数的第k个最大者 // 方法1:排序(冒泡),降序找出第k个值 // ...

  9. 选择问题 and 字谜游戏问题

    #include <stdio.h> #include <stdlib.h> // 第一题 // 找出N个数的第k个最大者 // 方法1:排序(冒泡),降序找出第k个值 // ...

随机推荐

  1. linux delete file

    今天不小心生成了这么个文件名的文件-ep-ser 然后 rm -ep-ser就删除不了,它认为-e是option 后来,用rm ./-ep-ser就顺利删除了,哈哈,教训啊

  2. Linux平台 Oracle 18c RAC安装Part3:DB配置

    四.DB(Database)配置 4.1 解压DB的安装包 4.2 DB软件配置 4.3 ASMCA创建磁盘组 4.4 DBCA建库 4.5 验证crsctl的状态 Linux平台 Oracle 18 ...

  3. CentOS 7 开机延迟解决办法

    遇到这种情况 , 开机延迟 ,  可以用下面的办法来查看 , 寻找到问题的源头 , 来看看到的是怎么回事 [root@DaMoWang ~]# dmesg |grep udev #显示系统的启动信息 ...

  4. 用mpvue构建微信小程序

    背景 由于机器人协会进行鼓励大家多读书的活动,所以为了可以更好的.更有效果,所以我跟会长提了一个建议,做一个微信小程序,那么为什么是微信小程序呢? 1.现在微信小程序比较好,用户也比较多:利用微信小程 ...

  5. HTML常用标签定义,用法及例子

    1.HTML注释 <!--...--> 定义:使用注释可对代码进行解释,不会显示在浏览器中. <!--这是一段呢注释.注释不会在浏览器中显示.--> <p>段落标签 ...

  6. VSCode 打开文件tab键空格数量异常问题

    [1]现象与原因 现象:用Notepad++打开文件,tab键占4个空格键.但是,用VSCode打开,tab键缺变成了3个空格键. 原因:因为VSCode默认启用了根据文件类型自动设置tabsize的 ...

  7. 清空nohup日志

    #清空nohup日志cat /dev/null > /tpdata/www/wxapp_domain/nohup.out

  8. js不需要知道图片宽高的懒加载方法(经过实际测试,不加宽高仍然是无法正常加载的,设置height:auto,height:100%,仍然显示高度为0)

    js不需要知道图片宽高的懒加载方法 懒加载是如何实现的? - 简书https://www.jianshu.com/p/e86c61468285找到一个不需要知道图片宽高的懒加载方法了(经过实际测试,不 ...

  9. Android项目开发第二天,关于GitHub

    一. 今天在网上学习了如何使用GitHub,了解了GitHub是干什么的. 作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户.随着越来越多的应用程序转移到了云上,Github已经 ...

  10. 清理Visual Studio 2017的项目历史记录或手工修改Visual Studio 2017的注册表设置

    Visual Studio 2017的"最近的文件列表"和"项目列表"总是删了之后重启电脑又出现(PS:这期间没有打开过项目,更没打开过VS). 一怒之下,按照 ...