QuickHit游戏
2016-05-29 16:56
399 查看
package cn.xiangmu; 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 Level() { } 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 getStrTime() { return strTime; } public void setStrTime(int strTime) { this.strTime = strTime; } 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; } }Level 级别参数类LevelParam:
package cn.xiangmu; /** * 级别参数类,配置各个级别参数 * @author Administrator * */ public class LevelParam { //该类中有一个长度为6的等级数组,并且通过静态代码块的方式给数组的每项赋值, 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,3); levels[3]=new Level(4,5,7,18,4); levels[4]=new Level(5,6,6,15,5); levels[5]=new Level(6,7,5,12,6); } }LevelParam
玩家类Player:
package cn.xiangmu; import java.util.Scanner; public class Player { private int levelNo;//玩家当前级别 private int curScore;//玩家当前积分 private long startTime=0;//个级别开始时间 private int elapsedTime;//各级别已用时间 //方法一 public void play(){//玩家玩游戏的方法 Game game=new Game(this); Scanner input =new Scanner(System.in); //外层循环,循环一次级别进一级 for(int i=0;i<LevelParam.levels.length;i++){ //0.1进级 this.levelNo+=1; //0.2晋级后及时清零,积分清零 this.startTime=System.currentTimeMillis(); this.curScore=0; //0.3内层循环,循环一次完成一次字符串的输出,输入,比较 for(int j=0;j<LevelParam.levels[levelNo-1].getStrTime();j++){ //1.游戏输出字符串 String outStr=game.printStr(); //2.接收用户输入 String inStr=input.next(); //3.游戏判断玩家输入是否正确,并输出相应结果信息 game.printResult(outStr,inStr); } } } /*//方法三 public void play(){ Scanner input = new Scanner(System.in); Game game= new Game(this);//创建游戏实例 int setlevelNo =1;//记录循环的次数 game.getPlayer().setLevelNo(1); while(true){ game.getPlayer().setStartTime(System.currentTimeMillis());//游戏开始,给Player的开始时间赋值 //内层循环 for(int i=0;i<LevelParam.levels[game.getPlayer().getLevelNo()-1].getStrTime();i++){ String out=game.printStr();//接收游戏输出的字符串 String in=input.next();//接受玩家输入的字符串 game.printResult(out,in);//判断 } } }*/ /*//方法二 public void play(){ Scanner input = new Scanner(System.in); Game game= new Game(this);//创建游戏实例 game.getPlayer().setLevelNo(1); for(int i=0;i<LevelParam.levels.length;i++){ setLevelNo(getLevelNo()+1); this.curScore=0; System.out.println("恭喜你进入级:"); game.getPlayer().setStartTime(System.currentTimeMillis());//游戏开始,给Player的开始时间赋值 //内层循环 for(int j=0;j<LevelParam.levels[game.getPlayer().getLevelNo()-1].getStrTime();j++){ String out=game.printStr();//接收游戏输出的字符串 String in=input.next();//接受玩家输入的字符串 game.printResult(out,in);//判断 } } }*/ public Player() { } public Player(int levelNo, int curScore, long startTime, int elapsedTime) { super(); this.levelNo = levelNo; this.curScore = curScore; this.startTime = startTime; this.elapsedTime = elapsedTime; } public int getLevelNo() { return levelNo; } public void setLevelNo(int levelNo) { this.levelNo = levelNo; } public int getCurScore() { return curScore; } public void setCurScore(int curScore) { this.curScore = curScore; } public long getStartTime() { return startTime; } public void setStartTime(long startTime) { this.startTime = startTime; } public int getElapsedTime() { return elapsedTime; } public void setElapsedTime(int elapsedTime) { this.elapsedTime = elapsedTime; } }Player
游戏类Game:
package cn.xiangmu; import java.util.Random; public class Game { private Player player;// 玩家//声明一个Player类型的对象 /** * 构造方法,传入玩家信息 * * @param player * 玩家 */ public Game(Player player) { this.player = player; } /** * 输出指定级别规定长度的字符串 * * @return 输出的字符串,用于和用户输入比较 */ public String printStr() { // 生成的字符串长度随级别的不同而不同 int strLength = LevelParam.levels[player.getLevelNo() - 1].getStrLength();//输入字符串的长度 StringBuffer buffer = new StringBuffer(); Random random = new Random(); for (int i = 0; i < strLength; i++) { // 产生随机数 int rand = random.nextInt(strLength); // 根据随机数拼接字符串 switch (rand) { case 0: buffer.append("h"); break; case 1: buffer.append("j"); break; case 2: buffer.append("k"); break; case 3: buffer.append("l"); break; case 4: buffer.append(";"); break; case 5: buffer.append("'"); break; } } System.out.println(buffer.toString());//得到输入的字符串 return buffer.toString();//返回当前字符串 } /** * 判断玩家输入是否正确,并输出相应结果信息 * * @param out * 游戏输出的字符串 * @param in玩家输入的字符串 */ 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.println("你输入太慢了,已经超时了,退出!"); System.exit(1);//退出 }else{ //计算玩家当前积分 player.setCurScore(player.getCurScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());//加上当前获得的分数 player.setElapsedTime((int)(currentTime-player.getStartTime())/1000);//计算游戏所需时间 int level=player.getLevelNo(); int score=player.getCurScore(); int usetime=player.getElapsedTime(); System.out.printf("输入正确,您的级别%s,您的积分%s,已用时间%s秒。",level,score,usetime); System.out.println(); if(level==6){ player.setLevelNo(1); System.out.println("游戏已结束!"); } } }else{ System.out.println("输入错误,退出!"); System.exit(1); } } public Player getPlayer() { return player; } public void setPlayer(Player player) { this.player = player; } }Game
测试:Test:
package cn.xiangmu; public class Test { /** * @param args */ public static void main(String[] args) { Player player=new Player(); System.out.println("疯狂打字游戏开始:"); player.play(); /*long time =System.currentTimeMillis(); System.out.println(time);*/ } }Test
链接:
xiangmu.rar | 24KB | 5/29/2016 4:53:53 PM |
相关文章推荐
- QuickHit游戏开发项目总结
- 游戏QuickHit
- java初级阶段quickhit游戏
- 跑酷类游戏------quick-cocos2d-x 加载英雄与其动画到界面具体实现(一)
- QuickHit项目源代码及小总结
- 快速击键(MyEclipse编写的QuickHit项目)
- 【官方教程】使用Quick-Cocos2d-x搭建一个横版过关游戏(四)
- Quick-Cocos2d-x初学者游戏教程(一)
- Quick-Cocos2d-x初学者游戏教程(一)
- quick-cocos2d-x游戏开发【1】——引擎结构总览和创建项目
- 【quick-cocos2d-x 游戏开发之一】开发工具sublime text及其强力插件QuickXDev
- Quick-Cocos2d-x初学者游戏教程2
- 使用Quick-Cocos2d-x开发植物大战僵尸03-游戏加载页面
- quick-cocos2d-x游戏开发【1】——引擎结构总览和创建项目
- quick-cocos2d-x游戏开发【7】——scheduler 定时器
- 【官方教程】使用Quick-Cocos2d-x搭建一个横版过关游戏(五)
- quick-cocos2d-x游戏开发【8】——动画与动作
- Quick-Cocos2d-x初学者游戏教程(二)
- quick-cocos2d-x从零开始游戏开发笔记(四):参照Flappy Bird制作第一个游戏②
- quick-cocos2d-x游戏开发【2】——项目结构分析、创建新场景