根据项目的要求分别建出几个类

有游戏类

玩家类

测试类

等级类

等级时间类

一以下类图:

游戏类:

public class Game {
private Player player; public Game(Player player) {
super();
this.player = player;
} public String printStr(){
//对字符串进行增删改查
StringBuffer buffer = new StringBuffer();
//创建随机数对象
Random random = new Random();
//循环生成对应玩家等级长度的字符串
for (int i = 0;i < LevelParam.levels[player.getLevelNo() - 1].getStrLength();i++ )
{
//每次循环就产生一个随机数
int rand = random.nextInt(6);
//拼接产生随机数所对应的字符串
switch (rand)
{
case 0:{
buffer.append(">");
break;
}
case 1:{
buffer.append("<");
break;
}
case 2:{
buffer.append("*");
break;
}
case 3:{
buffer.append("&");
break;
}
case 4:{
buffer.append("%");
break;
}
case 5:{
buffer.append("#");
break;
}
}
}
//输出所生成的字符串,让玩家可以对应着输入
System.out.println(buffer.toString());
//返回生成的字符串
return buffer.toString();
}
//对比系统生成的字符串和玩家输入的字符串是否一样
public void printResult(String out,String in){ if(out.equals(in)){
long currentTime=System.currentTimeMillis();
//如果超时
if((currentTime-player.getStartTime())/1000>LevelParam.levels[player.getLevelNo()-1].getTimeLimit()){
System.out.print("你的速度连乌龟都比不上,已经超时,退出!");
System.exit(1);
//如果没有超时
}else {
//计算玩家当前积分
player.setCurrScore(player.getCurrScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());
//计算玩家以用时间
player.setElapsedTime((int) ((currentTime - player .getStartTime()) / 1000));
//输出玩家当前级别,当前积分和以用时间
System.out.println("输入正确,您的级别"+player.getLevelNo()+",您的积分"+player.getCurrScore()+",已用时间"+player.getElapsedTime()+"秒");
//判断用户是否已经闯过最后一关并处理
if(player.getLevelNo()==6){
int score=LevelParam.levels[player.getLevelNo() - 1].getPerScore() * LevelParam.levels[player.getLevelNo() - 1].getStrTime();
if(player.getCurrScore()==score){
System.out.println("恭喜您,你真是个人才!");
}else{
System.out.println("藤球你被淘汰了,退出!");
System.exit(0);
} }
}
}else{
System.out.println("输入错误");
System.out.println("正确的是"+out);
System.exit(0);
}
}

玩家类:

public class Player {
//当前级别号
private int levelNo;
//当前级别积分
private int currScore;
//当前级别开始时间
private long startTime=0;
//当前级别以用时间
private int elapsedTime;
public int getLevelNo() {
return levelNo;
}
public void setLevelNo(int levelNo) {
this.levelNo = levelNo;
}
public int getCurrScore() {
return currScore;
}
public void setCurrScore(int currScore) {
this.currScore = currScore;
}
public long getStartTime() {
return startTime;
}
public void setStartTime(long startTime) {
this.startTime = startTime;
}
public int getElapsedTime() {
return elapsedTime;
}
public void setElapsedTime(long l) {
this.elapsedTime = (int) l;
}
public Player(int levelNo, int currScore, long startTime, int elapsedTime) {
super();
this.levelNo = levelNo;
this.currScore = currScore;
this.startTime = startTime;
this.elapsedTime = elapsedTime;
}
public Player() {
super();
// TODO Auto-generated constructor stub
}
public void play(){
System.out.println("游戏开始请输入");
Game game=new Game(this);
// game.setPlayer(this);
Scanner scanner = new Scanner(System.in);
//外层循环代表着等级
for (int i = 0;i < LevelParam.levels.length ;i++ )
{
//玩家晋级
levelNo += 1;
//获得新的游戏开始时间
startTime = System.currentTimeMillis();
//每次晋级玩家积分清零
currScore = 0;
//内层循环代表着每个级别所需要玩的次数
for (int j = 0;j < LevelParam.levels[i].getStrTime() ;j++ )
{
//系统生成的字符串
String out = game.printStr();
//玩家输入的字符串
String in = scanner.next();
//比较,产生结果
game.printResult(out,in);
}
}

等级类:

public class Level {
private int levelNo; // 级别号
private int strLength; // 各级别一次输出字符串的长度
private int strTime; // 各级别输出字符 串的次数
private int timeLimit; // 各级别闯关的时间限制
private int perScore; // 各级别成功输入一次字符串后增加的分值
public Level(int levelNo, int strLength, int strTime, int timeLimit,
int perScore) {
super();
this.levelNo = levelNo;
this.strLength = strLength;
this.strTime = strTime;
this.timeLimit = timeLimit;
this.perScore = perScore;
}
public int getLevelNo() {
return levelNo;
}
public void setLevelNo(int levelNo) {
this.levelNo = levelNo;
}
public int getStrTime() {
return strTime;
}
public void setStrTime(int strTime) {
this.strTime = strTime;
}
public Level() {
super();
}
public int getLeveNo() {
return levelNo;
}
public void setLeveNo(int leveNo, int levelNo) {
this.levelNo = levelNo;
}
public int getStrLength() {
return strLength;
}
public void setStrLength(int strLength) {
this.strLength = strLength;
}
public int getStrTimes() {
return strTime;
}
public void setStrTimes(int strTimes) {
this.strTime = strTimes;
}
public int getTimeLimit() {
return timeLimit;
}
public void setTimeLimit(int timeLimit) {
this.timeLimit = timeLimit;
}
public int getPerScore() {
return perScore;
}
public void setPerScore(int perScore) {
this.perScore = perScore;
}

等级得分时间类:

public class LevelParam {
public final static Level levels[]=new Level[6];
//对应六个级别
static {
levels[0]=new Level(1, 2, 10, 30,1);
levels[1]=new Level(2, 3, 9, 26,2);
levels[2]=new Level(3, 4, 8, 22,5);
levels[3]=new Level(4, 5, 7, 18,8);
levels[4]=new Level(5, 6, 6, 15,10);
levels[5]=new Level(6, 7, 5, 12,15);
}
}

测试类:

public static void main(String[] args) {
// TODO Auto-generated method stub
Player player = new Player();
player.play();
}

QuietHit小Game的更多相关文章

  1. 【小程序分享篇 二 】web在线踢人小程序,维持用户只能在一个台电脑持登录状态

    最近离职了, 突然记起来还一个小功能没做, 想想也挺简单,留下代码和思路给同事做个参考. 换工作心里挺忐忑, 对未来也充满了憧憬与担忧.(虽然已是老人, 换了N次工作了,但每次心里都和忐忑). 写写代 ...

  2. 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用

    有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...

  3. jQuery实践-网页版2048小游戏

    ▓▓▓▓▓▓ 大致介绍 看了一个实现网页版2048小游戏的视频,觉得能做出自己以前喜欢玩的小游戏很有意思便自己动手试了试,真正的验证了这句话-不要以为你以为的就是你以为的,看视频时觉得看懂了,会写了, ...

  4. 微信小程序开发心得

    微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司 ...

  5. 前端网络、JavaScript优化以及开发小技巧

    一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...

  6. 微信应用号(小程序)开发IDE配置(第一篇)

    2016年9月22日凌晨,微信宣布“小程序”问世,当然只是开始内测了,微信公众平台对200个服务号发送了小程序内测邀请.那么什么是“小程序”呢,来看微信之父怎么说 看完之后,相信大家大概都有些明白了吧 ...

  7. Chrome出了个小bug:论如何在Chrome下劫持原生只读对象

    Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ...

  8. TODO:小程序开发过程之体验者

    TODO:小程序开发过程之体验者 1. 小程序开发过程,先下载开发者并安装开发者工具,现在腾讯开放测试了,普通用户也可以登录开发者工具,如图普通用户登录为调试类型,但是只能建立无AppID的项目 如果 ...

  9. TODO:即将开发的第一个小程序

    TODO:即将开发的第一个小程序 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验.个人理解小程序是寄宿在微信平台上的一个前端框架,具有跨平台功能, ...

随机推荐

  1. freemarker报错之六

    1.错误描述 五月 28, 2014 10:32:40 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...

  2. C# post数据时 出现如下错误: System.Net.WebException: 操作超时

    net(客户端)调用IIS(服务端)出现503后,就报操作超时错误 问题描述: 服务端环境: IIS 客户端环境: windowsxp + iis + .net 调用时出现如下错误: System.N ...

  3. 在SDL工程中让SDL_ttf渲染汉字

    有时候在关于SDL的博文中看到一些评论,说SDL对中文的支持不佳,因为当程序涉及中文时总是输出乱码. 照我个人观点,这里面很多都是误解.下面就根据我在windows下使用SDL的情况,说说我的观点. ...

  4. HTML5中的checkbox

    HTML5中的checkbox 1.选中checkbox (1)<input type="checkbox" checked/> (2)<input type=& ...

  5. Blending, Bootstrap

    听林轩田老师的<机器学习技法>,Lecture 7讲到model的blending. 理解了一个之前一直模棱两可的概念:bootstrap. 先说一下什么是blending.在机器学习中, ...

  6. ASP.NET CORE入门之读取Json配置文件

    首先新建一.net core控制台项目,命名为jsonReader 然后选中引用,选择NuGet包管理器,点击浏览引入mircosoft.aspnetcore.all并安装 选中解决方案,填加,新建项 ...

  7. 网络协议笔记-网络层-ARP协议

    [2-地址解析协议ARP] [2.1-基本概念] 地址解析协议ARP的作用是根据主机的IP地址,找出该主机的硬件地址. [2.2-为什么要使用ARP] 在数据传输过程中,网络层使用的IP地址,但是在实 ...

  8. 易理解java代码8皇后问题

    马上就要蓝桥杯比赛了,我这些算法还是不会,确实有点慌,今天一天早上睡到很晚不愿起床,然后才开始研究8皇后问题.这也是典型的回溯与递归问题.其实本质上和马踏棋盘问题非常类似,八皇后问题呢,就是要判断主对 ...

  9. 复制粘贴之插件(jquery.zclip.min.js)需要安装flash

    .line{margin-bottom:20px;} /* 复制提示 */ .copy-tips{position:fixed;z-index:999;bottom:50%;left:50%;marg ...

  10. requests库使用

    介绍: 发送HTTP请求的第三方库,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3) 安装:pip3 install requests 学习reques ...