200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > JAVA打字小游戏 面向对象完成

JAVA打字小游戏 面向对象完成

时间:2019-01-08 17:10:37

相关推荐

JAVA打字小游戏 面向对象完成

测试类,测试类主要是用于引用,将我们进行引入

package com.ytzl.Project.work;public class Test {public static void main(String[] args) {Player player = new Player();player.play();}}

实体类1,该类主要用于输出系统随机字符,接收玩家打印字符,并传入game类进行判断

package com.ytzl.Project.work;import java.util.Scanner;public class Player {private int levelNo;//当前级别号private int currScore;//当前级别积分private long startTime;//开始时间private long elapsedTime;//已用时间public Player() {}public Player(int levelNo, int currScore, long startTime, long elapsedTime) {this.levelNo = levelNo;this.currScore = currScore;this.startTime = startTime;this.elapsedTime = 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 long getElapsedTime() {return elapsedTime;}public void setElapsedTime(long elapsedTime) {this.elapsedTime = elapsedTime;}//玩游戏public void play(){Game game = new Game(this);Scanner scanner = new Scanner(System.in);for (int i = 0; i < LevelParam.levels.length; i++) {//晋级this.levelNo+=1;//2.时间开始计时this.startTime = System.currentTimeMillis();//3.积分清零this.currScore = 0;//4.内层循环 循环的是电脑输出,玩家输入,比较for (int j = 0; j < LevelParam.levels[levelNo-1].getStrTimes(); j++) {//4.1 电脑输出字符串String out = game.printStr();//4.2 接受用户输入String in = scanner.next();//4.3 比较,并判断结果game.printResult(out,in);}}}}

实体类2,该类主要用于创造随机字符,根据玩家打印字符进行判断。

package com.ytzl.Project.work;import java.util.Random;public class Game {/** 构造方法传入玩家信息* */private Player player;public Game(Player player) {this.player=player;}String printStr(){//从创建好的player对象中获取级别号//因为我们需要将Game中和player中的//两个方法对应的级别统一int strLength = LevelParam.levels[player.getLevelNo() -1].getStrLength();//随机数Random random = new Random();//操作字符串StringBuffer buffer = new StringBuffer();//buffer.append() 字符串的连接for (int i = 0; i < LevelParam.levels[player.getLevelNo()-1].getStrLength(); i++) {//生成随机数int rand=random.nextInt(4);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;default:break;}}System.out.println(buffer.toString());return buffer.toString();}public void printResult(String out,String in){boolean flag;if (out.equals(in)){flag=true;}else {flag=false;}//第一层:是否输入正确if (flag){//第二层:是否超时//currentTime :输入正确之后拿到的时间long currentTime=System.currentTimeMillis();if (//currentTime : 160345678325//getStartTime : 160345678330(currentTime-player.getStartTime())/1000>LevelParam.levels[player.getLevelNo()-1].getTimeLimit()){System.out.println("你已超时,游戏结束!");System.exit(1);}else {//没有超时//计算当前积分//当前积分 + 各级别给的积分player.setCurrScore(player.getCurrScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());//当前所用时间,用每一次输入正确之后的//时间减去初始进入游戏时间player.setElapsedTime((currentTime-player.getStartTime())/1000);//输出语句System.out.println("输入正确,您的级别为:"+player.getLevelNo()+",您的积分为:"+player.getCurrScore()+",已用时间为:"+player.getElapsedTime()+"秒");//判断是否闯关成功if (player.getLevelNo() == 6){int scroe= LevelParam.levels[player.getLevelNo()-1].getStrTimes()*LevelParam.levels[player.getLevelNo()-1].getPerScore();System.out.println("闯关成功!");System.out.println("总积分为:"+scroe);System.exit(1);}}}else {System.out.println("输入错误!退出");System.exit(1);}}}

实体类3,该类用于存储游戏等级,字符长度,字符次数,时间限制,正确得分

package com.ytzl.Project.work;public class Level {private int levelNo;//各级别号private int strLength;//各级输入字符长度private int strTimes;//各级数输入字符次数private int timeLimit;//各级闯关时间限制private int perScore;//各级输入正确得分public Level() {}public Level(int levelNo, int strLength, int strTimes, int timeLimit, int perScore) {this.levelNo = levelNo;this.strLength = strLength;this.strTimes = strTimes;this.timeLimit = timeLimit;this.perScore = perScore;}public int getLevelNo() {return levelNo;}public void setLevelNo(int levelNo) {this.levelNo = levelNo;}public int getStrLength() {return strLength;}public void setStrLength(int strLength) {this.strLength = strLength;}public int getStrTimes() {return strTimes;}public void setStrTimes(int strTimes) {this.strTimes = 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;}}

实体类4,该类为数组类,用来设置level中的数据

package com.ytzl.Project.work;public class LevelParam {public final static com.ytzl.Project.work.Level levels[]=new com.ytzl.Project.work.Level[6];//对应六个级别static {levels[0] = new Level(1,2,10,30,1);levels[1] = new Level(2,3,26,26,2);levels[2] = new Level(3,4,33,33,4);levels[3] = new Level(4,5,18,18,6);levels[4] = new Level(5,6,14,14,8);levels[5] = new Level(6,7,13,12,10);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。