问题
        有猜字母游戏,其游戏规则为:程序随机产生5个按照一定顺序排列的字符作为猜测的结果,由玩家来猜测此字符串。玩家可以猜测多次,每猜测一次,则由系统提示结果。如果猜测的完全正确,则游戏结束,计算玩家的游戏得分并输出;如果没有猜对,则提示猜测的结果,如猜对了几个字符,以及猜对了几个字符的位置等信息,并提示玩家游戏继续。

本案例要求使用交互的方式实现此游戏:由玩家在控制台输入所猜测的字符串,如果所猜测的字符串与结果并不完全相同,则在界面输出比较后的结果,并提醒玩家继续猜测。交互过程如图所示:

由上图可以看出,每次猜测后,程序将比较玩家所输入的字符串,比较字符以及字符的位置,然后提示结果:5个字符中正确的字符个数,以及位置正确的字符个数,以便于玩家判断后续如何进行猜测。

玩家终于猜测正确后,游戏结束,并给出游戏得分,交互过程如图所示:

其中,游戏的得分规则为:字符的个数乘以100为总分,即此游戏的总分为500分。玩家如果第一次就猜对,则得满分(500分);每多猜测一次,则扣10分。由图可以看出,玩家共猜测了5次,因此,得分为450。

最后,如果玩家在控制台录入exit,则游戏中止,程序结束。交互过程如果所示:

本案例需要实现猜字母游戏中的数据结构设计,即,设计相关的数据结构,可以存储此程序中所用到的相关数据。

方案
        分析猜字母游戏可以看出,此程序需要存储随机生成的字母个数、随机生成的字符串、玩家猜测的总次数、玩家录入的字符串,以及比较后的结果。因此,设计如下变量来存储此游戏中需要用到的相关数据:

· int类型变量count:用于记录玩家猜字母的总次数;

· char数组类型变量input:用于保存用户猜测的数据。

· char数组类型变量chs:用于保存随机生成的多个字母所组成的字符串;

· int类型数组变量result:用于保存判断的结果。此数组有两个元素,第一个用于保存完全猜对的字母个数(字符正确且位置也正确),第二个元素用于保存猜对的字母个数(字符正确但位置不正确)。

步骤
        实现此案例需要按照如下步骤进行。

步骤一:定义类及main方法
        首先定义一个名为GuessingGame的类,并在类中添加Java应用程序的主方法main,代码如下所示:

public class GuessingGame{
        public static void main(String[] args){
        
        }
    }
步骤二:存储猜测的次数
        定义一个int类型变量count,用于记录玩家猜字母的总次数,代码如下所示:

public class GuessingGame{
        public static void main(String[] args){
            
            int count=0;
        }
    }
步骤三:存储用户猜测的数据
        char数组类型变量input:用于保存用户猜测的数据,代码如下所示:

public class GuessingGame{
        public static void main(String[] args){
            
            int count=0;
            char[] input=null;
        }
    }
步骤四:存储随机生成的多个字母
        定义一个char数组类型chs,用于保存随机生成的字母。代码如下所示:

public class GuessingGame{
        public static void main(String[] args){
            
            int count=0;
            char[] input=null;
            
            char[] chs=null;
        }
    }
步骤五:存储比较结果
        定义一个int数组类型变量result,用于存储比较的结果。该数组有两个元素,第一个用于保存完全猜对的字母个数(字符和位置均正确),第二个元素用于保存猜对的字母个数(字符正确,但是位置不正确)。代码如下所示:

public class GuessingGame{
        public static void main(String[] args){
            
            int count=0;
            char[] input=null;
            char[] chs=null;
            
            int[] result=new int[2];
        }
    }
---------------------

转载于:https://www.cnblogs.com/ly570/p/10971097.html

Java入门第37课——猜字母游戏之设计数据结构相关推荐

  1. Java入门第38课——猜字母游戏之设计程序结构

    问题 本案例需要实现猜字母游戏程序中的程序结构 方案 分析猜字母游戏可以看出,程序首先需要随机产生5个不同的字母作为需要猜测的结果,因此,可以先定义一个方法,以实现此功能:其次,每当玩家猜测一次后,程 ...

  2. Java入门第39课——猜字母游戏之实现字母生成方法

    问题 实现猜字母游戏中的字母生成方法,即,随机生成5个不同的字母作为猜测的结果. 方案 实现generate方法,首先声明一个字符类型的数组,用于存储26个大写字母,然后声明一个boolean类型的数 ...

  3. Java入门第116课——向List中插入和删除元素

    问题 向List集合的指定索引位置插入元素以及移除指定索引位置的元素,详细要求如下: 1)创建List接口的引用list,使该引用指向ArrayList的实例,将字符串"java" ...

  4. Java入门第112课——使用Iterator的hasNext方法、next方法遍历集合

    问题 使用Iterator的hasNext方法.next方法遍历集合,详细要求如下: 1)使用HashSet构建集合c,将字符串"java"."cpp".&qu ...

  5. Java入门第53课——俄罗斯方块项目中的T类和J类

    问题 在Tetris游戏中,游戏场地由10列×20行个正方形格子构成,如图所示,每个方块由四个格子组成,绘制在场地中,如图所示中的红色方块. 4个小型正方形格子组成的规则图形(Tetromino),共 ...

  6. Java入门第107课——使用add方法向集合中添加元素

    问题 使用add方法向集合中添加元素,详细要求如下: 1)使用ArrayList构造集合对象c,并输出该对象. 2)将字符串"a"."b"."c&qu ...

  7. Java入门第111课——集合addAll、containsAll的用法

    问题 测试Collection接口中addAll方法.containsAll方法的用法,详细要求如下: 1)使用ArrayList构建集合c1,将字符串"java"."c ...

  8. Java入门第118课——List转换为数组

    问题 将集合List转换为数组,详细要求如下所示: 1)创建List接口的引用list,使该引用指向ArrayList的实例:将字符串"a"."b"." ...

  9. Java入门第82课——StringBuilder的append方法

    问题 StringBuilder类提供将各种数据类型变量的字符串形式追加到当前序列中的append方法,在Java API中提供的append重载方法如图-15所示: 本案例要求将字符串"j ...

最新文章

  1. legend位置 pyecharts_可视化入门 | pyecharts全局配置项详解
  2. 用Access作为后台数据库支撑,书写一个C#写入记录的案例
  3. JavaScriptjQuery.查询DOM元素
  4. python3 web框架_循序渐进Python3(十二) --0--  web之框架
  5. 优化Oracle网络设置的方案
  6. security框架工作笔记001--- Shiro和Spring Security对比_智慧城市项目中选型用Spring Security
  7. cmake 常见问题及解决
  8. html实现圆形计时器特效,js css3圆形的时分秒计时器动画特效
  9. 用组策略彻底禁止USB存储设备、光驱、软驱、ZIP软驱
  10. ant接口用什么天线_天线接口 一个叫SMA 另一个叫TNC
  11. 每日一题_36. 有效的数独
  12. 批处理保存windows10开机壁纸
  13. 关于IE上embed自动播放
  14. 怎么解决电脑USB接口不识别U盘
  15. MS sqlserver数据库恢复出错 Exclusive access could not be obtained because the database is in use
  16. 链表A拆分成奇数和偶数值链表B和C
  17. The projects in the reactor contain a cyclic reference
  18. Red Hat Enterprise Linux 官方正式版镜像下载
  19. .shape()与.reshape()函数
  20. python---打印函数print延时且不按顺序输出

热门文章

  1. Koa中使用art-template模板引擎,以及如何接受post请求等
  2. Vue登录注册,并保持登录状态
  3. FFmpeg API 变更记录
  4. mysql批量写入redis_如何高效地向Redis插入大量的数据(推荐)
  5. 安卓http服务器源码,Android搭建HTTP和WebSocket的服务器端
  6. linux下用tcpdump抓包
  7. Discuz 论坛实现qq小程序
  8. 如何在电脑手机间互传文件?
  9. 计算机类专业工程认证,计算机类专业工程教育专业认证补充标准
  10. python脚本用类编写_跟老齐学Python之编写类之二方法