JAVA经典案例之QuickHit打字游戏

JAVA经典案例之QuickHit打字游戏

又是充满学习动力的一天,今天小星星来讲述一下由本人今天做的一个打字游戏的打开过程和解题思路吧!

具体功能实现和案例项目需求如下:在这里插入图片描述
项目分析:项目大概需要3个类,分别是玩家类,游戏类和级别类

在这里插入图片描述
项目需要在这里插入图片描述
在这里插入图片描述
除以上介绍到的类之后,这里还需要创建额外的级别属性数组类:
在这里插入图片描述
主要的功能效果图如下:
在这里插入图片描述
好了说了这么多,想必等不及了吧,开始上实现代码:
import java.util.Random;
//游戏类
public class Game {

public Player player;
public Player getPlayer() {
	return player;
}
public void setPlayer(Player player) {
	this.player = player;
}
// 带参方法
public Game(Player player) {
	this.player=player;
}
//无参方法
public Game() {
	
}
//定义一个int类型对应的各级别对应输出的字符串长度的方法
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(6);//产生随机数
		//根据随机数拼接字符串
		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;
		case 5:
			buffer.append("#");
			break;
		}
	}
	//输出
	String str=buffer.toString();
	System.out.println(str);
	return str;
}
//进行判断
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(0);
		}else {
			//计算当前积分
			player.setCurrScore(player.getCurrScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());
			//计算时间
			player.setElapsedTime((int) ((currentTime-player.getStartTime())/1000));
			//输出级别,积分和时间
			System.out.println("输入正确,您的级别:"+player.getLevelNo()+"积分:"+player.getCurrScore()+"已用时间:"+(currentTime-player.getStartTime())/1000+"秒<");			
			if(player.getLevelNo()==6){
                int score=LevelParam.levels[player.getLevelNo()-1].getPerScore()*LevelParam.levels[player.getLevelNo()-1].getStrTime();
                if(player.getCurrScore()==score){
                    System.out.println("闯关成功!!!");
                    System.exit(0);
                }
            }
        }
    }else {
		System.out.println("菜鸟输入错误!!!");
		System.exit(1);
	}
}

}
//级别类
public class Level {

public int levelNo;//各级别的编号
public int strLength;//各级别一次输入字符串的长度
public int strTime;//各级别输入字符串的次数
public int timeLimit;//各级别闯关的时间限制
public int perScore;//各级别正确输入一次的得分
//带参方法
public Level(int levelNo,int strLength,int strTime,int timeLimit,int perScore) {
	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;
}

}
//级别数组类
public class LevelParam {

public final static Level levels[]=new Level[6];//以对象为数组类型
static {
	
	//级别、各级别字符串的长度、每个级别输出字符串的次数、各级别每次输出字符串的时间限制、各级别正确一轮的分数
	levels[0]=new Level(1,1,2,15,1);
	levels[1]=new Level(2,2,2,18,2);
	levels[2]=new Level(3,3,2,20,5);
	levels[3]=new Level(4,4,2,22,8);
	levels[4]=new Level(5,5,2,24,10);
	levels[5]=new Level(6,6,2,26,15);

}

}
//玩家类
import java.util.Scanner;

public class Player {

 private int levelNo;//玩家当前级别号
 private int currScore;//玩家当前级别积分
 private long startTime;//当前级别开始时间
 private int elapsedTime;//当前级别已用时间
 private int setElapsedTime;

//带参构造方法
 public Player(int levelNo,int currScore,long startTime,int elapsedTime) {
	 this.levelNo=levelNo;
	 this.currScore=currScore;
	 this.startTime=startTime;
	 this.elapsedTime=elapsedTime;
 }
 //无参构造方法
 public Player() {
	 
 }
 
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 int getElapsedTime() {
	return elapsedTime;
}
public void setElapsedTime(int elapsedTime) {
	this.elapsedTime = elapsedTime;
}

//玩游戏的play方法
public void play() {
	//调用game的带参.this代表属性
	Game game=new Game(this);
	Scanner input=new Scanner(System.in);
	for(int i=0;i<LevelParam.levels.length;i++) {
		//晋级
		levelNo=levelNo+1;
		//晋级后计时清零
		startTime=System.currentTimeMillis();
		currScore=0;
		//内层循环代表每个级别所需要玩的次数
		for(int j=0;j<LevelParam.levels[i].getStrTime();j++) {
			//输出随机产生的字符串
			String outStr=game.printStr();
			//接收用户输入的字符串
			String inStr=input.next();
			//调用game的printtResult方法,对比
			game.printResult(outStr, inStr);
		}
	}
}

}
//测试类
public class test {

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

}

实现效果图:在这里插入图片描述

好了,到此就结束本次项目的完成,如果有小星星没发现的bug,欢迎大家评论来言~~~~~

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的Quickhit项目案例中的Java打字游戏代码,供您参考: 1. 在VSCode中创建一个新的Java文件,保存为“TypingGame.java”,并添加以下代码: ```java import java.util.Scanner; public class TypingGame { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String text = "Quickhit 是一个快速开发工具集,可用于构建 Web 应用程序、移动应用程序和后端服务。"; int timeLeft = 30; int score = 0; boolean gameStarted = false; System.out.println("欢迎来到 Quickhit 打字游戏!"); System.out.println("请在下方输入框中输入以下内容:"); System.out.println(text); while (timeLeft > 0) { if (!gameStarted) { System.out.println("游戏开始!"); gameStarted = true; } System.out.print("> "); String input = scanner.nextLine(); if (input.equals(text.substring(score))) { score++; int newTextLength = text.length() - score; String newText = text.substring(score, score + newTextLength); System.out.println(newText); } timeLeft--; } System.out.println("游戏结束!您的得分为 " + score + " 分!"); } } ``` 2. 在VSCode中打开终端,进入Java文件所在的目录,并编译运行该文件。可以使用以下命令: ```bash javac TypingGame.java java TypingGame ``` 3. 在控制台中运行该打字游戏,玩家需要在30秒内尽可能多地输入给定的文本,最终得分将在游戏结束后显示。您可以根据自己的需求和想法对代码进行修改和扩展。 以上代码实现了一个简单的Java打字游戏,玩家需要在30秒内尽可能多地输入给定的文本,最终得分将在游戏结束后显示。您可以根据自己的需求和想法对代码进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值