java综合项目练习-QuickHit打字游戏

奉天承运,博主诏曰:

综合项目练习-QuickHit打字游戏

项目简介

在这里插入图片描述

问题分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码参考:

Level 类

public class Level {
    
    
    private int lvlNo;
    private int lvlTime;
    private int lvlLength;
    private int printcnt;
    private int perScore;

    public Level(int lvlNo,int lvlTime,int lvlLength,int printcnt,int perScore){
    
    
        setLvlNo(lvlNo);
        setLvlTime(lvlTime);
        setLvlLength(lvlLength);
        setPrintcnt(printcnt);
        setPerScore(perScore);
    }

    public int getLvlNo() {
    
    
        return lvlNo;
    }

    public void setLvlNo(int lvlNo) {
    
    
        this.lvlNo = lvlNo;
    }

    public int getLvlTime() {
    
    
        return lvlTime;
    }

    public void setLvlTime(int lvlTime) {
    
    
        this.lvlTime = lvlTime;
    }

    public int getLvlLength() {
    
    
        return lvlLength;
    }

    public void setLvlLength(int lvlLength) {
    
    
        this.lvlLength = lvlLength;
    }

    public int getPrintcnt() {
    
    
        return printcnt;
    }

    public void setPrintcnt(int printcnt) {
    
    
        this.printcnt = printcnt;
    }

    public int getPerScore() {
    
    
        return perScore;
    }

    public void setPerScore(int perScore) {
    
    
        this.perScore = perScore;
    }
}

LevelParam 接口

public interface LevelParam {
    
    
    Level[] LEVELS={
    
    
            new Level(1,60,3,1,3),
            new Level(2,60,4,2,5),
            new Level(3,60,5,3,6),
            new Level(4,60,6,4,7),
            new Level(5,60,6,5,9),
            new Level(6,60,8,6,10),
    };
}

Player 类

public class Player {
    
    
    private String name;
    private int curScore;
    private long StartTime=System.currentTimeMillis();
    private long usedTime;
    private int curLevel=1;

    public void play(){
    
    
        Game g=new Game();
        g.setPlayer(this);
        g.run();
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getCurScore() {
    
    
        return curScore;
    }

    public void setCurScore(int curScore) {
    
    
        this.curScore = curScore;
    }

    public long getStartTime() {
    
    
        return StartTime;
    }

    public void setStartTime(long startTime) {
    
    
        StartTime = startTime;
    }

    public long getUsedTime() {
    
    
        return usedTime;
    }

    public void setUsedTime(long usedTime) {
    
    
        this.usedTime = usedTime;
    }

    public int getCurLevel() {
    
    
        return curLevel;
    }

    public void setCurLevel(int curLevel) {
    
    
        this.curLevel = curLevel;
    }
}

Game 类

public class Game {
    
    
    private Player p;
    private Scanner sc=new Scanner(System.in);
    private Player[] rank=new Player[1024];

    public Player getPlayer() {
    
    
        return p;
    }

    public void setPlayer(Player p) {
    
    
        this.p = p;
    }

    public String showStr(){
    
    //展示字符串的方法
        int curLevel= p.getCurLevel();
        int lvlLength = LevelParam.LEVELS[curLevel - 1].getLvlLength();
        String rst="";
        for (int i = 0; i <lvlLength ; i++) {
    
    
            //全小写字母,ASCII范围97~122
            int a=(int)(97+Math.random()*26);
            char c=(char)a;
            rst+=c;
        }
        System.out.println(rst);
        return rst;
    }


    public void run() {
    
    
        System.out.println("欢迎来玩");
        System.out.println("输入姓名");
        String name = sc.next();
        p.setName(name);
        System.out.println("玩家" + name + "开始游戏");
        for (int j = 0; j < 6; j++) {
    
    
            int curLevel = p.getCurLevel();
            //每轮要多少次
            int printCnt = LevelParam.LEVELS[curLevel - 1].getPrintcnt();
            int limit=LevelParam.LEVELS[curLevel - 1].getLvlTime();
            int perScore=LevelParam.LEVELS[curLevel - 1].getPerScore();
            for (int i = 0; i < printCnt; i++) {
    
    
                System.out.println("示例:");
                String s= showStr();
                System.out.println("请输入");
                String input=sc.next();
                long curTime=System.currentTimeMillis();
                long used=curTime-p.getStartTime();
                p.setUsedTime(used);
                if (!s.equals(input)) {
    
    
                    System.out.println("输入错误,游戏结束");
                    System.exit(-1);
                }else if(used>limit*1000){
    
    
                    System.out.println("输入超时,游戏结束");
                    System.exit(-2);
                }
//                p.setCurScore(p.getCurScore()+perScore);
                //根据速度重新计算得分
                p.setCurScore(p.getCurScore()+(int)(perScore*1000/used));
                System.out.println("输入正确,加积分为"+p.getCurScore()
                        +"级别"+p.getCurLevel()+"时间"+p.getUsedTime()/1000+"秒");
            }
            if(p.getCurLevel()==6){
    
    
                System.out.println("通关");
                System.exit(1);
            }
            p.setCurLevel(p.getCurLevel()+1);//升级
            System.out.println("恭喜升级");
            p.setStartTime(System.currentTimeMillis());
        }
    }
    public void setRank(){
    
    
        for (int i = 0; i < rank.length; i++) {
    
    
            if(rank[i]==null){
    
    
                //插入
                rank[i]=p;
                return;
            }
        }
    }
}

Platform 类

public class Platform {
    
    
    public static void main(String[] args) {
    
    
        Player p=new Player();
        p.play();
    }
}

钦此。

猜你喜欢

转载自blog.csdn.net/weixin_50266519/article/details/113092022