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. spring重要知识点总结

    一.面向切面编程 配置applicationContext.xml文件 <beans xmlns="http://www.springframework.org/schema/bean ...

  2. 动物管理员--zooKeeper-01

    ZooKeeper集群角色介绍: 最典型集群模式:Master/Slave 模式(主备模式).在这种模式中,通常 Master 服务器作为主服务器提供写服务,其他的 Slave 服务器从服务器通过异步 ...

  3. beego 初体验 - 基础模块 - config, httplibs, logs

    beego 的基础模块支持了一些web开发常用的功能. 配置,http操作库,日志 配置模块: 这是我的配置文件 如何读取: httplibs:这是一个利用 httplibs 发起 get 请求的示例 ...

  4. ServletContext详解(转)

    ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放.request,一个用户可有多个:session,一个用户一个:而servletContext,所 ...

  5. [Android] TextView上同时显示图标和文字

    需求场景 +----------------------------+ | Icon TEXT | +----------------------------+ 当然,可以使用LineLayout,包 ...

  6. sublime lincense for linux

    sublime lincense for linux Sublime Text 3.x (after Build 3133) —– BEGIN LICENSE —–TwitterInc200 User ...

  7. 2、Kafka架构

    Kafka架构图 1)Producer :消息生产者,就是向kafka broker发消息的客户端. 2)Consumer :消息消费者,向kafka broker取消息的客户端 3)Topic :可 ...

  8. P4777 【模板】扩展中国剩余定理(EXCRT)/ poj2891 Strange Way to Express Integers

    P4777 [模板]扩展中国剩余定理(EXCRT) excrt模板 我们知道,crt无法处理模数不两两互质的情况 然鹅excrt可以 设当前解到第 i 个方程 设$M=\prod_{j=1}^{i-1 ...

  9. 也说性能测试,顺便说python的多进程+多线程、协程

    最近需要一个web系统进行接口性能测试,这里顺便说一下性能测试的步骤吧,大概如下 一.分析接口频率 根据系统的复杂程度,接口的数量有多有少,应该优先对那些频率高,数据库操作频繁的接口进行性能测试,所以 ...

  10. Docker 构建镜像

    Docker 构建镜像 1.首先,在项目的根目录下,新建一个文本文件.dockerignore,写入下面的内容. 下面三行代码表示: 1.这三个路径要排除,不要打包进入 image 文件. 2.如果你 ...