zoukankan      html  css  js  c++  java
  • QuickHit项目(输出字符串游戏)

    public class leve {
        private int leveNo;
        private int strLength;
        private int strTimes;
        private int timeLimit;
        private int perScore;
        
        public leve(int leveNo, int strLength, int strTimes, int timeLimit,
                int perScore) {
            super();
            this.leveNo = leveNo;
            this.strLength = strLength;
            this.strTimes = strTimes;
            this.timeLimit = timeLimit;
            this.perScore = perScore;
        }
        public leve() {
            super();
        }
        public int getLeveNo() {
            return leveNo;
        }
        public void setLeveNo(int leveNo) {
            this.leveNo = leveNo;
        }
        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;
        }
        
    }
    Leve

     首先编写类,游戏类,玩家类,级别类
    玩家类的属性:levelNo玩家编号类,currScore玩家当前积分,stratTime当前级别开始时间,elapsedTime
    当前级别已用时间
    级别类的属性:levelNo各级别编号,strLengh一次输入的字符串长度,strTime各级别输出字符串的次数,timeLimit各级闯关的时间限制
    perScore各级别输入一次正确的得分!
    游戏类:player玩家属性(玩家来玩游戏)
    因为级别类不包括各个级别的具体参数信息,所以增加一个levelParam类,创建一个长度为6的数组,存放各个级别的参数信息

    游戏类Game

    public class Game {
        
        public Player player;
    
        public Game(Player player) {
            super();
            this.player = player;
        }
    
        public Game() {
        }
    
        public Player getPlayer() {
            return player;
        }
    
        public void setPlayer(Player player) {
            this.player = player;
        }
        Random random = new Random();
        public String printstr(){
            StringBuffer buffer = new StringBuffer();
        
            int str =Levelparam.leves[player.getLevelNo()-1].getStrLength();
            
            for (int i = 0; i < str; i++) {
                int rand = random.nextInt(str);
                switch(rand){
                case 0:
                    buffer.append("w");
                    break;
                case 1:
                    buffer.append("s");
                    break;
                case 2:
                    buffer.append("a");
                    break;
                case 3:
                    buffer.append("d");
                    break;
                case 4:
                    buffer.append("h");
                    break;
                case 5:
                    buffer.append("j");
                    break;
                }
            }
            System.out.println(buffer.toString());
            return buffer.toString();        
        }
    
        public void printReslut(String out, String jieshou)
        {
            if(out.equals(jieshou))
            {
                long time = System.currentTimeMillis();
                //如果超时
                if((time-player.getStartTime())/1000>Levelparam.leves[player.getLevelNo()-1].getTimeLimit())
                {
                    System.out.println("已超时,您的速度有待提高");
                    System.exit(1);
                }
                else
                {
                    //当前说获得分值
                    player.setCurScore(player.getCurScore()+Levelparam.leves[player.getLevelNo()-1].getPerScore());
                    //游戏所需时间
                    player.setElapsedTime((int)(time-player.getStartTime())/1000);
                    int Level = player.getLevelNo();
                    int score = player.getCurScore();
                    int usetime = player.getElapsedTime();
                    System.out.println("输入正确,您的级别是"+Level+"您的积分是"+score+"已用时间"+usetime);
                    if(Level==6)
                    {
                        System.exit(1);
                        System.out.println("游戏结束");
                    }
                }
            }
            else
            {
                    System.out.println("游戏失败");
                    System.exit(1);
            }
            
        }
    
    
    }
    Came

     Leve

    public class leve {
        private int leveNo;
        private int strLength;
        private int strTimes;
        private int timeLimit;
        private int perScore;
        
        public leve(int leveNo, int strLength, int strTimes, int timeLimit,
                int perScore) {
            super();
            this.leveNo = leveNo;
            this.strLength = strLength;
            this.strTimes = strTimes;
            this.timeLimit = timeLimit;
            this.perScore = perScore;
        }
        public leve() {
            super();
        }
        public int getLeveNo() {
            return leveNo;
        }
        public void setLeveNo(int leveNo) {
            this.leveNo = leveNo;
        }
        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;
        }
        
    }
    Leve

    levelParam类

    public class Levelparam {
        public final static leve[] leves = new leve[6];
        static{
            leves[0]=new leve(1,2,10,30,1);
            leves[1]=new leve(2,3,9,26,2);
            leves[2]=new leve(3,4,8,22,5);
            leves[3]=new leve(4,5,7,18,8);
            leves[4]=new leve(5,6,6,15,10);
            leves[5]=new leve(6,7,5,12,15);
            
        }
    }
    levelParam

    Player

    public class Player {
        
        private int levelNo;
         private int curScore;
         private long startTime;
         private int 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;
        }
        public void print(){
            
                Scanner input = new Scanner(System.in);
                Game game= new Game(this);//创建游戏实例
                
                game.getPlayer().setLevelNo(1);
                for (int i = 0; i < Levelparam.leves.length; i++) {
                    
                
                    setLevelNo(getLevelNo()+1);
                    this.curScore=0;
                    System.out.println("恭喜你进入下一级别");
                    game.getPlayer().setStartTime(System.currentTimeMillis());//游戏开始,给Player的开始时间赋值
                    //内层循环
                    for(int j=0;j<Levelparam.leves[game.getPlayer().getLevelNo()-1].getStrTimes();j++)
                    {                
                        String out=game.printstr();//接收游戏输出的字符串
                        String in=input.next();//接受玩家输入的字符串
                        game.printReslut(out,in);//判断
    
        }
    }
        }
    }
    Player

    Text

    public class Test {
        public static void main(String[] args) {
            Player py = new Player();
            py.print();
        }
    
    }
    Text

    --首先game类(先有游戏才能玩):
    方法有二:printStr()
           printResult()
    1:printStr()方法:生成随机的字符串,使用switch选择结构以生成的随机数进行判断生成的字符串。字符串的长度不得大于各级别输出字符串的长度。
    int strLength=LevelParam.levels[player.getLevelNo()-1].getStrLength();由于数组下标是从0开始的,获取该级别输入
    的字符串的长度定位到数组中的一项要使用(级别号-1 )定位数组下标。创建一个0到5的随机数,创建StringBuffer对象来拼接字符串。该方法返回
    一个拼接好了的字符串。
    2:long time=System.currentTimeMillis();获取系统当前时间的毫秒数(严谨到毫秒)
    (time-player.getStartTime())/1000>LevelParam.levels[player.getLevelNo()-1].getTimeLimit()如果游戏所用时间大于
    游戏规定的时间,判断出局!
     player.setCurScore(player.getCurScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());加上当前获得的分数
            player.setElapsedTime((int)(time-player.getStartTime())/1000);计算玩游戏所需的时间
    输出当前这一关的信息,当进行到第六个级别(最高级别)时,将级别清空,还原为1.
    --Player类:创建游戏类(game对象),记录循环的次数,将级别初始为1.
    game.getPlayer().setStartTime(System.currentTimeMillis())记录下游戏开始时间!
    循环条件,小于输入次数,接收随机生成的字符串,如果用户输入的字符串与该字符串相等,继续游戏,否则,gameOver!
    --Text类:直接调用player类的print()方法!

    更多详情请关注 http://www.cnblogs.com/baixingqiang/
  • 相关阅读:
    leetcode 第二题Add Two Numbers java
    二叉树中的那些常见的面试题(转)
    运行的指令
    Python常见经典 python中if __name__ == '__main__': 的解析
    软件测试基本概念
    JAVA Android王牌教程
    17个新手常见Python运行时错误
    QTP
    链表有关的常见面试题
    Robot Framework and Ride
  • 原文地址:https://www.cnblogs.com/baixingqiang/p/5539468.html
Copyright © 2011-2022 走看看