最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java類與對象案例之打字游戲

 更新時間:2020年07月07日 08:40:32   作者:程序少年籃球king  
這篇文章主要為大家詳細介紹了java類與對象案例之打字游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

類與對象案例-童年回憶之打字游戲

一、玩家類
二、等級類
三、游戲類
四、等級地圖
五、測試類

這次要做的案例是一個打字游戲的案例,相信大家小時候都玩過金山打字通的警察抓小偷和飛機大戰(zhàn),這次的案例是類似的簡易版。

首先對于這個案例,我們要解決的是如何生成隨機的字符串,如何判斷生成的字符串和輸入的字符串是否相等。

一、玩家類

package com.yc.oop6.hc0705;

public class Player {
 private int score; //積分
 private long startTime; //各級別的開始時間
 private long dis;   //每次闖關(guān)剩余時間
 private int levelNo; //級別號碼
 public int getScore() {
 return score;
 }
 public void setScore(int score) {
 this.score = score;
 }
 public long getStartTime() {
 return startTime;
 }
 public void setStartTime(long startTime) {
 this.startTime = startTime;
 }
 public int getLevelNo() {
 return levelNo;
 }
 public void setLevelNo(int levelNo) {
 this.levelNo = levelNo;
 }
 public Player(int score, long startTime, int levelNo) {
 super();
 this.score = score;
 this.startTime = startTime;
 this.levelNo = levelNo;
 }
 public Player() {
 super();
 }
 public long getDis() {
 return dis;
 }
 public void setDis(long dis) {
 this.dis = dis;
 }
 
 
}

二、等級類

package com.yc.oop6.hc0705;

public class Level {
 private int levelNo; //第幾關(guān)
 private int strLength; //字符串長度
 private int strTime; //需要輸入的次數(shù)
 private int timeLimit; //時間限制
 private int score; //答對一次獲得的積分
 public int getLevelNo() {
 return levelNo;
 }
 public int getStrLength() {
 return strLength;
 }
 public int getStrTime() {
 return strTime;
 }
 public int getTimeLimit() {
 return timeLimit;
 }
 public int getScore() {
 return score;
 }
 public Level(int levelNo, int strLength, int strTime, int timeLimit, int score) {
 super();
 this.levelNo = levelNo;
 this.strLength = strLength;
 this.strTime = strTime;
 this.timeLimit = timeLimit;
 this.score = score;
 }
 public Level() {
 super();
 }
 
}

三、游戲類

package com.yc.oop6.hc0705;

import java.util.Random;
import java.util.Scanner;

public class Game {
 private Player player;
 private Random r = new Random();
 private Scanner sc = new Scanner(System.in) ;
 
 public Game(Player player) {
 this.player = player;
 }
 
 //開始游戲
 public void startGame() {
 System.out.println("游戲開始");
 
 //開始闖關(guān)
 for(int i = 0; i < Levels.ls.length; i++) {
 System.out.println("開始進入第" + (i+1) + "關(guān)");
 //每一關(guān)的開始在這里
 player.setLevelNo(player.getLevelNo() + 1);
 player.setStartTime(System.currentTimeMillis());
 
 //循環(huán),這一關(guān)要輸入多少次
 
 for(int j = 0 ; j < Levels.ls[player.getLevelNo() - 1].getStrTime() ; j++ ) {
 String out = printStr();
 System.out.println(out);
 String in = sc.nextLine();
 
 boolean flag = result(in, out);
 if(flag == false) {
  System.exit(1);;
 }
 
 }
 //每剩下1s 增加20分
 player.setScore(player.getScore() + (int)player.getDis() * 20);
 System.out.println("完成第" + (i+1) + "關(guān),您現(xiàn)在的積分為:" + player.getScore());
 
 System.out.println("進入下一關(guān)");
 
 }
 }
 
 //隨機字符串
 
 public String printStr( ) {
 
 
 
 String str = "";
 double rNum = 0;
 
 
 for(int i = 0; i < Levels.ls[player.getLevelNo()-1].getStrLength(); i++ ) {
 rNum = r.nextDouble();
 if(rNum < 0.3333) {
 str += (r.nextInt(9)+1);
 }else if(rNum < 0.6667){
 str += (char)(r.nextInt(26)+65);
 }else {
 str += (char)(r.nextInt(26)+97);
 }
 }
 return str;
 }
 
 //字符串對比
 
 public boolean result(String in, String out) {
 //字符串判斷
 if(out.equals(in)) {
 //先獲取一下當(dāng)前的系統(tǒng)時間
 long endTimes = System.currentTimeMillis();
 long startTimes = player.getStartTime();
 //獲得下一關(guān)的時間
 long dis = Levels.ls[player.getLevelNo() -1 ].getTimeLimit();
 
 if((endTimes - startTimes)/1000 > dis) {
 System.out.println("游戲超時,游戲結(jié)束,您的最終得分為:" + player.getScore());
 return false;
 }else {
 //輸入正確,且沒有超時
 //加積分
 int score = Levels.ls[player.getLevelNo()].getScore();
 player.setDis(dis - (endTimes - startTimes)/1000); 
 player.setScore(player.getScore() + score );
 
 
 System.out.println("輸入正確,您現(xiàn)在的積分為:"+ player.getScore() +" ,這一關(guān)您還有: " + player.getDis() + " 秒鐘");
 return true;
 }
 }else {
 System.out.println("輸入錯誤,游戲結(jié)束,您的最終得分為:" + player.getScore());
 return false;//輸入錯誤
 }
 
 
 }
}

四、等級地圖

package com.yc.oop6.hc0705;

public class Levels {
 //定義一個靜態(tài)的對象數(shù)組
 public static Level ls[] = new Level[7];
 
 static {
 ls[0] = new Level(1,2,5,20,10);
 ls[1] = new Level(2,3,5,18,20);
 ls[2] = new Level(3,4,4,16,30);
 ls[3] = new Level(4,5,4,15,40);
 ls[4] = new Level(5,6,4,15,50);
 ls[5] = new Level(6,7,3,15,60);
 ls[6] = new Level(7,8,3,15,70);
 }
}

五、測試類

package com.yc.oop6.hc0705;


public class Test {
 public static void main(String[] args) {
 
 Player p = new Player();
 Game g = new Game(p);
 g.startGame();
 
 

 }
}

詳細的解釋都在代碼的注釋里了,大家細品。

更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:

C++經(jīng)典小游戲匯總

python經(jīng)典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經(jīng)典游戲 玩不停

java經(jīng)典小游戲匯總

javascript經(jīng)典小游戲匯總

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis使用Collection屬性的示例代碼

    Mybatis使用Collection屬性的示例代碼

    本文主要介紹了Mybatis使用Collection屬性的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 使用注解進行Spring開發(fā)的全過程

    使用注解進行Spring開發(fā)的全過程

    使用注解(Annotation)是一種在代碼級別進行說明和標(biāo)記的技術(shù),它從JDK 5.0開始引入,并在現(xiàn)代Java開發(fā)中得到了廣泛應(yīng)用,本文將詳細介紹Spring框架中常用的注解及示例,幫助開發(fā)者快速掌握Spring注解開發(fā)的要點和技巧,需要的朋友可以參考下
    2023-11-11
  • java 分行讀取實例

    java 分行讀取實例

    今天小編就為大家分享一篇java 分行讀取實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • java 定義長度為0的數(shù)組/空數(shù)組案例

    java 定義長度為0的數(shù)組/空數(shù)組案例

    這篇文章主要介紹了java 定義長度為0的數(shù)組/空數(shù)組案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • idea2020.1版本git提交項目到github上的方法

    idea2020.1版本git提交項目到github上的方法

    這篇文章主要介紹了idea2020.1版本git提交項目到github上的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2020-06-06
  • Java?中的5個代碼性能提升技巧

    Java?中的5個代碼性能提升技巧

    這篇文章主要給大家分享了Java的5個代碼性能提升的技巧,雖然大多數(shù)情況下極致優(yōu)化代碼是沒有必要的,但是作為一名技術(shù)開發(fā)者,我們還是想追求代碼的更小、更快,更強。如果哪天發(fā)現(xiàn)程序的運行速度不盡人意,就需要這樣的文章了,需要的朋友可以參考一下
    2021-12-12
  • Java創(chuàng)建二叉搜索樹,實現(xiàn)搜索,插入,刪除的操作實例

    Java創(chuàng)建二叉搜索樹,實現(xiàn)搜索,插入,刪除的操作實例

    下面小編就為大家分享一篇Java創(chuàng)建二叉搜索樹,實現(xiàn)搜索,插入,刪除的操作實例,具有很好的參考價值,希望對大家有所幫助
    2017-12-12
  • java實現(xiàn)簡單五子棋小游戲(1)

    java實現(xiàn)簡單五子棋小游戲(1)

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單五子棋小游戲的第一部分,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java下載項目中靜態(tài)文件方式

    Java下載項目中靜態(tài)文件方式

    這篇文章主要介紹了Java下載項目中靜態(tài)文件方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java如何通過Maven管理項目依賴

    Java如何通過Maven管理項目依賴

    這篇文章主要介紹了Java如何通過Maven管理項目依賴,幫助大家更好的理解和使用maven,感興趣的朋友可以了解下
    2020-10-10

最新評論

东辽县| 定结县| 浦北县| 土默特左旗| 枞阳县| 鄂托克前旗| 楚雄市| 漠河县| 阳新县| 剑阁县| 巴林左旗| 大竹县| 新乡县| 纳雍县| 吉水县| 嘉兴市| 金寨县| 北安市| 金寨县| 东光县| 青海省| 渭源县| 安康市| 日喀则市| 土默特右旗| 古田县| 泰宁县| 澜沧| 伊吾县| 弥勒县| 湘潭市| 大庆市| 天水市| 宁国市| 百色市| 河西区| 马鞍山市| 蕲春县| 大理市| 新源县| 太谷县|