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. asp.net重要小知识

    1.服务端用request获取值一般用的是name属性,而ID属性是获取不到值的.对于asp.net中服务器控件一般是把name属性封装的名字和ID相同.

  2. Cocos Creator 资源加载(笔记)

    cc.loader 加载资源动态加载资源要注意两点,一是所有需要通过脚本动态加载的资源,都必须放置在 resources 文件夹或它的子文件夹下.resources 需要在 assets 文件夹中手工 ...

  3. 细说@Html.ActionLink()的用法

    一.@Html.ActionLink()概述 在MVC的Rasor视图引擎中,微软采用一种全新的方式来表示从前的超链接方式,它代替了从前的繁杂的超链接标签,让代码看起来更加简洁.通过浏览器依然会解析成 ...

  4. git----------git:如何让git识别我修改了文件夹名字和文件名字的大小写问题。

    修改每个项目里面的隐藏的.git文件里面的config文件.将箭头指的原本是true改成false.

  5. HTML 鼠标坐标和元素坐标

    在这一篇文章中,将会介绍鼠标坐标.元素坐标以及鼠标在指定元素内的坐标. 1. 鼠标坐标 在触发鼠标相关事件时(如:click.mousemove),可以通过事件对象获取当前鼠标的坐标. 获取的坐标可分 ...

  6. vim格式化markdown表格

    title: vim格式化markdown表格 date: 2017-11-23 15:23:25 tags: vim categories: 开发工具 安装插件 https://github.com ...

  7. IP通信基础学习第一周

    在IP方向上,IP通信基础是学习其他诸如:数字程教控交换技术与应用.IPV6技术与应用.SDH传输技术与应用等课程的基础. 学习IP通信基础,对学生而言至少可以拿学分,不仅有利于以后的学习,还有机会从 ...

  8. MySQL中group by , sum , case when then 的使用

    在我们使用数据库的时候,可能会遇到需要进行统计的情况. 比如需要统计一下,下表中各个年份的胜负场数. 遇到这样的情况,我们应该怎么办呢? 在mysql中我们可以使用group by sum  case ...

  9. Flutter路由跳转及参数传递

    本文要介绍的知识点 用路由推出一个新页面 打开新页面时,传入参数 参数的回传 路由 做Android/iOS原生开发的时候,要打开一个新的页面,你得知道你的目标页面对象,然后初始化一个Intent或者 ...

  10. ProcessExplorer使用分享

    工具描述 Process Explorer使用个轻量级的进程管理器,是由Sysinternals出品的免费工具,请猛击这里下载最新版本使用. 以下是官方介绍的翻译: “想知道是那个程序打开了某个文件或 ...