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. python调用RPC接口

    要调用RPC接口,python提供了一个框架grpc,这是google开源的 rpc相关文档: https://grpc.io/docs/tutorials/basic/python.html 需要安 ...

  2. appium元素获取

    查看安卓手机的界面元素: 1.打开模拟器: 2.启动服务: 在cmd 输入:  adb connect 127.0.0.1:62001  回车 可以输入 adb devices 查看启动状态 3.在a ...

  3. TP连接数据库报错:SQLSTATE[HY000] [2002] No such file or directory

     连接数据库报错:“SQLSTATE[HY000] [2002] No such file or directory”. 出现这个问题的原因是PDO无法找到mysql.sock或者mysqld.soc ...

  4. 微信内置安卓x5浏览器请求超时自动重发问题处理小记

    X5内核  请求超时后会自动阻止请求返回并由代理服务器将原参数重新发送请求到服务层代码.但由于第一次请求已经请求到服务器,会导致出现重复下单.支付等重大问题. 该问题由于腾讯x5浏览器会自动阻止第一次 ...

  5. mybatis源码解析12---ResultSetHandler解析

    说完了StatementHandler和ParameterHandler,接下来就需要对查询的结果进行处理了,而对于sql结果的处理是由ResultSetHandler处理的,ResultHandle ...

  6. C++引用和const引用、常量指针、指针常量

    1.引用.常量引用 引用主要被用做函数的形式参数--通常将类对象传递给一个函数. 引用在内部存放的是一个对象的地址,它是该对象的别名.引用不占用内存,因为取地址引用的值和被引用变量的地址相同.但是ob ...

  7. jquery首页图片轮播

    css样式 .bannerBox {position: relative;width: 100%;height: 348px;margin:0px auto;}.bannerBox .bannerLi ...

  8. Python GIL锁

    GIL全局解释器锁:为了解决多线程修改同一块数据. python的线程是调用操作系统的源生线程,启动时就是调用C语言的C源生接口,python调用C语言接口的线程去执行任务时,必须上下文对应关系传给C ...

  9. JS设计模式(4)迭代器模式

    什么是迭代器模式? 定义:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示. 主要解决:不同的方式来遍历整个整合对象. 何时使用:遍历一个聚合对象. 如何解决:把在元素之间游 ...

  10. 处理table 超出部分滚动问题

    我们有个需求是这样的,鉴于我的表达能力还是直接上原型图吧 今天主要记录上面的第四条解决过程. 首先我们的布局使用的table,当想给tbody设置高度的时候,发现不起作用.原因是table的默认是di ...