打字游戏

来源:互联网 发布:游戏编程从零开始 编辑:程序博客网 时间:2024/04/30 06:00
package quickkitdamo;

import java.util.Scanner;

/**
 * 游戏类
 * @author wzq
 * 1.0 2009/3/27
 */
public class Game {
    

    private Player player;//玩家
    private static Scanner input = new Scanner(System.in);
    public Game()
    {
        this.player = new Player(1,0,0,0);
    }
    public Player getPlayer() {
        return player;
    }
    public void setPlayer(Player player) {
        this.player = player;
    }
    /*游戏登陆界面*/
    public void login()
    {
        System.out.println("======================欢迎来到ww打字游戏====================");
        System.out.print("请按任意键开始游戏!");
        String answer= input.next();
        if(answer!= null)
        {
            playGame();
        }
    }
    /*输出要玩家要打印的字符串*/
    public String strPrint()
    {
        StringBuffer word = new StringBuffer("");
        int strLength = 0;//每次答应字符串的长度
        for(int k = 0;k<LevelParam.levels.length;k++)
        {
            if(player.getLevelNo()==LevelParam.levels[k].getLevelNo())
            {
                strLength = LevelParam.levels[k].getStrLength();
                break;
            }
        }
        
        for(int i = 0;i<strLength ;i++)
        {
            int num = 1+(int)(Math.random()*10)%9;
            switch(num)
            {
            case 1:
                word.append(">");
                break;
            case 2:
                word.append("<");
                break;
            case 3:
                word.append(",");
                break;
            case 4:
                word.append("!");
                break;
            case 5:
                word.append("abcD");
                break;
            case 6:
                word.append("+-*%");
                break;
            case 7:
                word.append("529");
                break;
                default:
                    word.append("skdk");
                    break;
                
            }
        }
        String wordOut = word.toString();
        System.out.println(wordOut);
        return wordOut;
    }
    /*比较游戏输出与玩家输入的字符串输出相应的结果*/
    public boolean printResult(String wordInput)
    {
        boolean isContinue = true;
        String answer = input.next();
        long currentTime = System.currentTimeMillis();
        if( answer.equals(wordInput))
        {
            
            if((currentTime-player.getStartTime())/1000<=LevelParam.levels[player.getLevelNo()-1].getTimeLimit())
            {
                player.setCurScore(player.getCurScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());
                System.out.println("输入正确,你的积分是"+player.getCurScore()+",你的级别"+player.getLevelNo()+",已用时间"+((currentTime-player.getStartTime())/1000));
                 isContinue = true;
            }
            else
            {
                System.out.println("你输入太慢,已经超时,游戏结束!");
                 isContinue = false;
            }
        }
        else
        {
            System.out.println("输入错误,游戏结束!");
             isContinue = false;
        }
        return  isContinue;
    }
    /*开始游戏*/
    public void playGame()
    {
        boolean isOver = true;
        do
        {
            player.setStartTime(System.currentTimeMillis());
            int i;
            for( i=1 ;i<=LevelParam.levels[player.getLevelNo()-1].getStrTime();i++)
            {
                String outword = strPrint();
                boolean isContinue =printResult(outword);
                if(!isContinue)
                {
                    isOver = false;
                    break;
                    
                }
            }
            if((i-1)==LevelParam.levels[player.getLevelNo()-1].getStrTime())
            {
                player.setLevelNo(player.getLevelNo()+1);
                if(player.getLevelNo()==6)
                {
                    System.out.println("恭喜你游戏被你打爆了!");
                    break;
                }
                player.setStartTime(0);
                player.setCurScore(0);
            }
        }while(player.getLevelNo()!=6&&isOver);
        
        
        
    }
}
package quickkitdamo;
/**
 * 游戏等级类,记录每个等级相应的信息
 * @author wzq
 *1.0 2009/3/27
 */
public class Level {

    private int levelNo;//游戏等级
    private int strLength;//每个等级对应输出的字符串长度
    private int strTime;//每个级别输出字符串的次数
    private int timeLimit;//每个级别闯关的时间限制
    private int perScore;//各级别正确输入一次的得分
    public Level()
    {
        this.levelNo =1;
        this.perScore = 0;
        this.strLength =0;
        this.strTime = 0;
        this.timeLimit = 0;
        this.perScore = 0;
    }
    public Level(int levelNo,int strLength,int strTime,int timeLimit,int perScore )
    {
        setLevelNo( levelNo);
        setPerScore( perScore);
        setStrLength(strLength);
        setStrTime( strTime);
        setTimeLimit( timeLimit);
    }
    public int getLevelNo() {
        return levelNo;
    }
    public void setLevelNo(int levelNo) {
        this.levelNo = levelNo;
    }
    public int getPerScore() {
        return perScore;
    }
    public void setPerScore(int perScore) {
        this.perScore = perScore;
    }
    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;
    }
    
    
}
package quickkitdamo;
/**
 * 储存游戏等级信息库类
 * @author wzq
 *1.0 2009/3/27
 */
public class LevelParam {
 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,5);
        levels[3]=new Level(4, 5, 7, 18,8);
        levels[4]=new Level(5, 6, 6, 15,10);
        levels[5]=new Level(6, 7, 5, 12,15);
    }

}
package quickkitdamo;
/**
 * 玩家类
 * @author wzq
 *1.0 2009/03/25
 */
public class Player {
  private  int levelNo;//当前等级
  private  int curScore;//当前积分
  private  long startTime;//当前级别开始的时间
  private  int elapsedTime;//当前级别已用时间
  public Player()
  {
      this.levelNo = 1;
      this.curScore = 0;
      this.startTime = 0;
      this.elapsedTime = 0;
  }
  public Player(int levelNo,int curScore, int startTime,int elapsedTime)
  {
      setLevelNo(levelNo);
      setCurScore(curScore);
      setStartTime(startTime);
      setElapsedTime(elapsedTime);
  }
public int getCurScore() {
    return curScore;
}
public void setCurScore(int curScore) {
    this.curScore = curScore;
}
public int getElapsedTime() {
    return elapsedTime;
}
public void setElapsedTime(int elapsedTime) {
    this.elapsedTime = elapsedTime;
}
public int getLevelNo() {
    return levelNo;
}
public void setLevelNo(int levelNo) {
    this.levelNo = levelNo;
}
public long getStartTime() {
    return startTime;
}
public void setStartTime(long startTime) {
    this.startTime = startTime;
}
/*玩家玩游戏*/
public void play(Game game)
{
    
}
 
}
package quickkitdamo;

import java.util.Scanner;

public class Test {

    public static void main(String[]wzq)
    {
//        long currentTime1 = (System.currentTimeMillis());
//        System.out.println(currentTime1);
//        Scanner input = new Scanner(System.in);
//        String ss = input.next();
//        long currentTime2 = (System.currentTimeMillis());
//        System.out.println((currentTime2-currentTime1)/1000);
        Game game = new Game();
        game.login();
        //game.printResult("dd");
    }
}




原创粉丝点击