Java入门第37课——猜字母游戏之设计数据结构
问题
有猜字母游戏,其游戏规则为:程序随机产生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课——猜字母游戏之设计数据结构相关推荐
- Java入门第38课——猜字母游戏之设计程序结构
问题 本案例需要实现猜字母游戏程序中的程序结构 方案 分析猜字母游戏可以看出,程序首先需要随机产生5个不同的字母作为需要猜测的结果,因此,可以先定义一个方法,以实现此功能:其次,每当玩家猜测一次后,程 ...
- Java入门第39课——猜字母游戏之实现字母生成方法
问题 实现猜字母游戏中的字母生成方法,即,随机生成5个不同的字母作为猜测的结果. 方案 实现generate方法,首先声明一个字符类型的数组,用于存储26个大写字母,然后声明一个boolean类型的数 ...
- Java入门第116课——向List中插入和删除元素
问题 向List集合的指定索引位置插入元素以及移除指定索引位置的元素,详细要求如下: 1)创建List接口的引用list,使该引用指向ArrayList的实例,将字符串"java" ...
- Java入门第112课——使用Iterator的hasNext方法、next方法遍历集合
问题 使用Iterator的hasNext方法.next方法遍历集合,详细要求如下: 1)使用HashSet构建集合c,将字符串"java"."cpp".&qu ...
- Java入门第53课——俄罗斯方块项目中的T类和J类
问题 在Tetris游戏中,游戏场地由10列×20行个正方形格子构成,如图所示,每个方块由四个格子组成,绘制在场地中,如图所示中的红色方块. 4个小型正方形格子组成的规则图形(Tetromino),共 ...
- Java入门第107课——使用add方法向集合中添加元素
问题 使用add方法向集合中添加元素,详细要求如下: 1)使用ArrayList构造集合对象c,并输出该对象. 2)将字符串"a"."b"."c&qu ...
- Java入门第111课——集合addAll、containsAll的用法
问题 测试Collection接口中addAll方法.containsAll方法的用法,详细要求如下: 1)使用ArrayList构建集合c1,将字符串"java"."c ...
- Java入门第118课——List转换为数组
问题 将集合List转换为数组,详细要求如下所示: 1)创建List接口的引用list,使该引用指向ArrayList的实例:将字符串"a"."b"." ...
- Java入门第82课——StringBuilder的append方法
问题 StringBuilder类提供将各种数据类型变量的字符串形式追加到当前序列中的append方法,在Java API中提供的append重载方法如图-15所示: 本案例要求将字符串"j ...
最新文章
- legend位置 pyecharts_可视化入门 | pyecharts全局配置项详解
- 用Access作为后台数据库支撑,书写一个C#写入记录的案例
- JavaScriptjQuery.查询DOM元素
- python3 web框架_循序渐进Python3(十二) --0-- web之框架
- 优化Oracle网络设置的方案
- security框架工作笔记001--- Shiro和Spring Security对比_智慧城市项目中选型用Spring Security
- cmake 常见问题及解决
- html实现圆形计时器特效,js css3圆形的时分秒计时器动画特效
- 用组策略彻底禁止USB存储设备、光驱、软驱、ZIP软驱
- ant接口用什么天线_天线接口 一个叫SMA 另一个叫TNC
- 每日一题_36. 有效的数独
- 批处理保存windows10开机壁纸
- 关于IE上embed自动播放
- 怎么解决电脑USB接口不识别U盘
- MS sqlserver数据库恢复出错 Exclusive access could not be obtained because the database is in use
- 链表A拆分成奇数和偶数值链表B和C
- The projects in the reactor contain a cyclic reference
- Red Hat Enterprise Linux 官方正式版镜像下载
- .shape()与.reshape()函数
- python---打印函数print延时且不按顺序输出