猜字母游戏之设计数据结构
有猜字母游戏,其游戏规则为:程序随机产生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;(http://www.my516.com)
}
}
步骤五:存储比较结果
定义一个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/hyhy904/p/11044483.html
- React第三方组件1(路由管理之Router的使用①简单使用)
- POj 2253 Frogger
- React项目配置7(ES7的Async/Await的使用)
- HDU 1863 畅通工程
- 最小生成树判断唯一
- React项目配置5(引入MockJs,实现假接口开发)
- POj 1611 The Suspects
- React项目配置4(如何在开发时跨域获取api请求)
- Laravel-博客实战+踩坑laravel-blog最终的效果踩的坑
- React项目配置3(如何管理项目API接口)
- React第三方组件3(状态管理之Flux的使用④TodoList下)
- React第三方组件3(状态管理之Flux的使用③TodoList中)
- Vue实现百度下拉提示搜索一、前期准备二、代码实现三、实现效果
- React第三方组件3(状态管理之Flux的使用②TodoList上)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一、环境搭建、以及聊聊更重要的...
- 四、作用域与作用域链
- 【从0到1学算法】递归
- 手把手教你创建 Spring MVC 实例
- 举一反三:三种问题,两个指针,一种方法
- torch.backends.cudnn.benchmark ?!
- jQuery ui中sortable draggable droppable的使用
- 阿里面试:看你springBoot用的比较溜来,说说springboot自动装配是怎么回事?
- CVPR:深度无监督跟踪
- Discourse 数据分发
- Discourse 如何备份到 S3
- Solr集群(即SolrCloud)搭建与使用
- 在CentOS8上安装Surelog
- sqlplus执行错误的问题探究
- 不借助Maven,使用Eclipse创建Hello World级别的Spring项目