java d打字游戏_关于java的QuickHit打字游戏小项目

public class Player {

Scanner input = new Scanner(System.in);

//玩家属性

private int level = 0;//等级

private int curScore = 0;//积分

private long stratTime = 0;//开始时间

private int elapsdTime = 0;//所用时间

//封装

public int getLevel() {

return level;

}

public void setLevel(int level) {

this.level = level;

}

public int getCurScore() {

return curScore;

}

public void setCurScore(int curScore) {

this.curScore = curScore;

}

public long getStartTime() {

return stratTime;

}

public void setStartTime(int strTime) {

this.stratTime = strTime;

}

public int getElapsdTime() {

return elapsdTime;

}

public void setElapsdTime(int elapsdTime) {

this.elapsdTime = elapsdTime;

}

//封装

Game game = new Game(this);//创建游戏对象,并装入玩家

public void play ()throws Exception//玩游戏

{

for (int i = 0; i

//一次通关

Level level = LevelParam.levels[this.level];

this.stratTime = System.currentTimeMillis();

for (int j = 1; j <= level.getStrTime(); j++) {

System.out.println("第" + j + "次");

String out = game.pringStr();//接收字符串

String in = input.next();//接收玩家输入的字符串

game.printResult(out, in);//比较并打印结果

}

this.curScore += level.getPerSore();

System.out.println("通过第" + (this.level + 1) + "关,积分:" + curScore);

this.level++;//等级增加

//一次通关

}

}

}

public class Game {

private Player player;//玩家

public Game(){}//构造

public Game(Player player){this.player=player;}//构造

String pringStr()//输出字符串方法

{

Level level = LevelParam.levels[this.player.getLevel()];

Random random = new Random();

StringBuffer sb=new StringBuffer();

for (int i = 0; i < level.getStrLength(); i++) {

int rand = random.nextInt(6);

switch(rand)

{

case 0:

sb.append("a");

break;

case 1:

sb.append("b");

break;

case 2:

sb.append("c");

break;

case 3:

sb.append("d");

break;

case 4:

sb.append("e");

break;

case 5:

sb.append("f");

break;

}

}

System.out.println(sb.toString());

return sb.toString();

}

public void printResult(String out,String in)//比较结果

{

if(out.equals(in))

{

System.out.println("输入成功");

long endtime=System.currentTimeMillis();

double timecha=(endtime-this.player.getStartTime())*1.0/1000;

if(timecha>(LevelParam.levels[this.player.getLevel()].getTimeLimit()))

{

System.out.println("输入超时游戏结束");

System.exit(0);

}

}

else{

System.out.println("输入失败,退出游戏");

System.exit(0);

}

}

}

public class Level {

public int getLevelON() {

return levelON;

}

public void setLevelON(int levelON) {

this.levelON = levelON;

}

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 getPerSore() {

return perSore;

}

public void setPerSore(int perSore) {

this.perSore = perSore;

}

private int levelON=0;//等级

private int strLength=0;//字符串长度

private int strTime=0;//输入次数

private int timeLimit=0;//时间限制

private int perSore=0;//该等级得分

//构造

public Level(){}

public Level(int levelON, int strLength, int strTime, int timeLimit, int perSore) {

this.levelON = levelON;

this.strLength = strLength;

this.strTime = strTime;

this.timeLimit = timeLimit;

this.perSore = perSore;

}

//构造

}

public class LevelParam {

public static final Level levels[]=new Level[6];//常量数组属性

static{//设置并初始化等级难度

//等级,输入字数,输入次数,时间限制,得分

levels[0]=new Level(1,2,2,30,1);

levels[1]=new Level(1,3,2,30,2);

levels[2]=new Level(1,4,2,30,3);

levels[3]=new Level(1,5,2,30,4);

levels[4]=new Level(1,6,2,30,5);

levels[5]=new Level(1,7,2,30,6);

}

}

这个项目中,切实体会的是项目的面向对象设计,以及编程思想的重要。

其中使用构造以及static来初始化参数和传参,对于初学的我来说

的确是很巧妙的运用方法,

在我试图使用C++来写这个程序的时候,也切实体会到了编程语言上的实际差异

很多东西使用c++实现起来没有java方便,当然主要是我的理解还不够以及

对于C++的编程思路和技巧掌握不到位,以至于我现在还没有完成。我会尽量

完成它以提高自己的理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值