编写一个猜词游戏,随机产生一个单词,并以" * “显示,之后提示用户一次输入一个字母,如果单词中有该字母,则用该字母替换到对应的” * "位置上的字符,当用户猜完全部字母,显示一共猜错了多少次,并询问是否继续猜下一个单词。

例如:

  • 当前单词为 ***** --> 输入h后
  • 当前单词为 h**** -->输入l后
  • 当前单词为 hll
  • 直到全部猜完后 提示 一共错误 几次 是否继续游戏(Y/N)
  • 输入Y继续游戏 输入N结束游戏

分析:

  1. 首先词库的获取不是一个JVM就可以提供的,所以新手起步,排除随机拿出一个可读单词的可能性。
  2. 然后新建一个字符串,考虑到与大小写无关,我们用小写字母组成一个一个5位的字符串s1。
  3. 再新建一个字符串s2,由五个“ * ” 组成。
  4. 开始猜词,屏幕打印一个字符,就遍历s1,如果有相同的,将s2替换对应该字符的下标的字符,并重新打印在屏幕。
  5. 直到全部猜对,结束进程。判断是否全部猜对的元素可以是替换的次数是否等于s1的字符串长度,也可以判断s2是否包含“ * ”。
  6. 开始编程。
package Test;import static java.lang.String.valueOf;import java.util.Random;
import java.util.Scanner;/*
编写一个猜词游戏,随机产生一个单词,并以*显示
之后提示用户一次输入一个字母,如果单词中有该字母,则用该字母替换到对应的*位置上的字符
当用户猜完全部字母,显示一共猜错了多少次,并询问是否继续猜下一个单词。
例如:
当前单词为 ***** --> 输入h后
当前单词为 h**** -->输入l后
当前单词为 h*ll*
直到全部猜完后 提示 一共错误 几次  是否继续游戏(Y/N)
输入Y继续游戏  输入N结束游戏*/
public class Test {public static void main(String[] args) {start();}public static String s1(int n) {//随机生成字符串方法Random r = new Random();String a = "abcdefghigklmnopqrstuvwxyz";char[] array = new char[n];for (int i = 0; i < array.length; i++) {array[i] = a.charAt(r.nextInt(26));}String s1 = valueOf(array);return s1;}public static char input(){//用户输入方法Scanner sc=new Scanner(System.in);char c=(char)sc.nextLine().charAt(0);return c;}public static void chuanzhi(String a,char[] b,int n){//用来改变字符数组的值
//    System.out.println(a);//字符串对照,调试使用System.out.println(b);System.out.println("您错误的次数;"+n/4);if(search(b,'*')){char c = input();for (int i = 0; i <a.toCharArray().length ; i++) {if(a.charAt(i)==c){b[i]=c;}else if(!search(a.toCharArray(),c)){n++;}}chuanzhi(a,b,n);}else {System.out.println("恭喜你通关了,是否再试一次?Y/N");end();}}public static void start(){//封装好游戏入口,方便调用System.out.println("猜词游戏");System.out.println("----------------------");System.out.println("请输入单词的长度:");Scanner sc=new Scanner(System.in);int n=sc.nextInt();String s1= s1(n);char[] s2=new char[n];for (int i = 0; i <s1.toCharArray().length ; i++) {s2[i]='*';}System.out.println("正在随机生成单词。。。");System.out.println("生成完毕!!!");System.out.println("请开始猜单词!");chuanzhi(s1,s2,1);}public static void end(){char c=input();if(c=='Y'||c=='y'){start();}else if(c=='N'||c=='n'){System.out.println("正在退出。。。");return;}else {System.out.println("请输入正确的字母...Y/N");end();}}public static boolean search(char[] arr,char b) {for (int i = 0; i <arr.length ; i++) {if(arr[i]==b){return true;}}return false;}
}

总结:本题里面有太多要素,如果读者可以精读,绝对可以学到很多,由于目前线程还没有学,所以输入的字符要稍等一下,不要太快输入,否则线程会卡掉.

码字到深夜12:00纪念。

2020年12月9日修改后的代码

package test;import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Random;
import java.util.Scanner;public class Title4 {/*编写一个猜词游戏,随机产生一个单词,并以*显示之后提示用户一次输入一个字母,如果单词中有该字母,则用该字母替换到对应的*位置上的字符当用户猜完全部字母,显示一共猜错了多少次,并询问是否继续猜下一个单词。例如:当前单词为 ***** --> 输入h后当前单词为 h**** -->输入l后当前单词为 h*ll*直到全部猜完后 提示 一共错误 几次  是否继续游戏(Y/N)输入Y继续游戏  输入N结束游戏*/public static void main(String[] args) {playGame();}public static void playGame(){Scanner sc = new Scanner(System.in);while(true){System.out.println("--来玩呀--");int errorTime = 0;int rightTime = 0;String q = getQuestion();StringBuilder xing = new StringBuilder();for (int i = 0; i < q.length(); i++) {xing.append("*");}int[] times = guessWord(new StringBuilder(q),xing,errorTime,rightTime,sc);int count = times[0]+times[1];double errort = times[0];double lv = errort / count;NumberFormat nf = new DecimalFormat("#0.0%");String lvstr = nf.format(lv);System.out.println("恭喜你终于答对了 ,这个词是:"+q);System.out.println("此次猜词共进行了"+count+"次,错误:"+errort+"次,错误率为:"+lvstr+",是否需要再来一局?(Y/N)");String r = sc.next();if("n".equalsIgnoreCase(r)){System.exit(0);}}}public static int[] guessWord(StringBuilder q,StringBuilder xing,int errorTime,int rightTime,Scanner sc){while (xing.indexOf("*") != -1) {//单词中含有*  则代表没有全部猜完 需要继续猜词System.out.println("当前的词语为" + xing + " --->请输入当前猜的单词:");String w = sc.next();int start = 0;int rep = 0;boolean type = false;//状态为 表示 当前是否匹配到字符  如果匹配到 则变成truewhile ((rep = q.indexOf(w, start)) != -1) {type = true;xing.replace(rep, rep+1, w);start = ++rep;}if (!type) {errorTime++;} else {rightTime++;}}return new int[]{errorTime,rightTime};}public static String getQuestion(){String[] q = {"hello","world","public","internationalization","runtimeException","Tom","Jerry","HelloKitty"};Random r = new Random();int index = r.nextInt(8);//当前的随机下标return  q[index];}}

java编写猜词游戏相关推荐

  1. java猜字母游戏_JAVA编程题-用java编写猜字母游戏

    原标题:JAVA编程题-用java编写猜字母游戏 问题: 猜字母游戏,其游戏规则为: 程序随机产生5个按照一定顺序排列的字符作为猜测的结果,由玩家来猜测此字符串.玩家可以猜测多次,每猜测一次,则由系统 ...

  2. Java编写猜单词游戏

    1.题目分析: 1.1 进入程序后,勇士自定义自己的生命值(提示生命值需要在1-10之中),如果超过最大10.小于最小值1 ,抛出自定义LimiteException异常,输出"错误生命值1 ...

  3. Java基础编写猜数游戏

    Java基础编写猜数游戏 设计内容及要求 产生一个100以内的随机数,游戏者进行猜数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜对为止.游戏结束后计算出玩家所猜的次数. 目的及意义 通过猜数 ...

  4. Python实现猜词游戏 Hangman Game(不带提示和带提示版本)

    本文目录 Python实现猜词游戏(Hangman Game) 一.任务准备 二.Hangman游戏的功能需求 三.辅助函数的构建 1.确定一个单词是否被猜出 2.获取用户当前的猜词进度 3.确定还有 ...

  5. hangman游戏c语言,英语游戏 猜词游戏hangman

    HANGMAN英语课堂游戏的设计 广东深圳市电子技术学校 张江宏 一.Hangman游戏的由来 Hangman在西方是一个家喻户晓的猜词游戏.Hang的英文意思是"绞死",而Man ...

  6. 用二分法编写猜数字游戏(含:猜电脑随机数,和用户自己想的数字)python

    目录 #什么是二分法 #用二分法猜电脑随机数 #用二分法猜用户所想的数 1.什么是二分法? 对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点 ...

  7. java数字猜大小游戏_java实现猜数字小游戏

    java实现猜数字游戏 随机给定一个数字,猜大小直到正确 package com.swift; import java.util.Random; import java.util.Scanner; p ...

  8. java编写2048小游戏

    java版2048小游戏 java编写2048小游戏 java编写2048小游戏 // An highlighted block /*** */ package games;/*** @author ...

  9. java poker_Java超级高手成长之路!一个Java编写的斗地主游戏

    原标题:Java超级高手成长之路!一个Java编写的斗地主游戏 "斗地主"是全国民间流行的一款扑克牌娱乐游戏,游戏最少由3个玩家进行,最多5人,游戏逻辑简单易于上手,老少皆宜,是我 ...

  10. 微信小程序开发之猜词游戏

    基于微信小程序开发的猜词游戏.之所以想开发这个小游戏,是因为网上类似的游戏,充斥了太多广告和暗坑,所以想想比如自己开发一个. 以下是几个截图,比较简单,但是足够自己玩了:) 源码地址供参考: 微信小程 ...

最新文章

  1. Java里main的写法_main方法的深入理解和例子
  2. 绝学:用宏定义找BUG,了解一下?
  3. 一维数组中的一些问题
  4. VTK:图片之ImageRFFT
  5. PC如何接管手机的双因子身份验证 靠的是英特尔的CPU
  6. 为什么配置了vsftpd.conf文件,用户还是可以访问上级目录?
  7. “无法找到运行搜索助理需要的一个文件”的解决办法
  8. Android中文API(122) —— AudioRecord
  9. 当下的力量 - [读书笔记]
  10. 构建安全应用程序架构必须考虑的十二问
  11. jquery中prop()和attr()的使用
  12. HTML中不支持静态Expando的元素
  13. 让人耳目一新的四款高质量软件,简约又实用,每一款都值得收藏
  14. MySQL之desc查看表结构的详细信息
  15. Windows10中Edge“嗯...无法访问此页面”,详细信息 DSN名称不存在 问题的解决方案
  16. 乌镇互联网大会发布15项世界领先科技成果
  17. PAT甲级_2023春
  18. 电脑网络连接不上怎么办
  19. 数据结构与算法图解——树
  20. 解决Win10系统EFI引导出错,导致无法开机的问题

热门文章

  1. 程序设计导引2.4——百练2801 填词
  2. python菜单翻译成中文_Python编辑器英文菜单的中文翻译及解释,看看吧,磨刀不误砍柴工...
  3. 朴素贝叶斯解决凉鞋问题
  4. C#-Winform - 调用笔记本摄像头实现拍照并保存
  5. docker 自动签到模板制作
  6. 波士顿大学计算机工程硕士,波士顿大学计算机工程专业硕士.pdf
  7. Python面向对象案例之语音计算器
  8. U盘插入电脑有声音,无盘符,只显示安全删除硬件并弹出媒体
  9. 物联网技术及应用计算机,物联网的关键技术及计算机物联网的应用
  10. vbox虚拟机添加硬盘