亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java實現模擬RPG格斗

2019-11-26 15:14:20
字體:
來源:轉載
供稿:網友

三個英雄角色參與PK

每個英雄具有以下幾個屬性:生命值(為0時英雄倒下)、攻擊力(每次攻擊時扣除對方的生命值點數)、攻擊間隔(每次攻擊過后都要等待間隔時間才能進行下次攻擊,首次攻擊之前也要先等待間隔時間)

另外,每個英雄都擁有兩個技能:攻擊技能和防御技能,攻擊技能在攻擊對方時有一定概率發動,防御技能在被對方攻擊時有一定概率發動,具體參數如下

BM:
生命650 攻擊力40 攻擊間隔1.5s
攻擊技能(跳劈):每次攻擊時有30%幾率造成雙倍傷害
防御技能(反彈):每次被攻擊時有30%幾率把我方受到的傷害反彈給對方,例如我方被攻擊,對方攻擊力30,扣除我方30點生命值,如果技能發動,則對方也要扣除30點生命值,傷害只能反彈一次(兩個BM相互PK的時候不出現連續反彈)

DH:生命600 攻擊力30 攻擊間隔1s
攻擊技能(吸血):每次攻擊時有30%幾率把造成的傷害轉變為自己的生命值(對被攻擊者造成傷害,并且將攻擊傷害轉變成自己的生命值),但不能超過上限,例如我方攻擊,扣除對方30的生命值,同時給自己增加30點生命值
防御技能(閃避):每次被攻擊時有30%幾率閃避不受傷害

MK:
生命700 攻擊力50 攻擊間隔2.5s
攻擊技能(重擊):每次攻擊時有30%幾率造成對方眩暈3s的效果(對方受到傷害后附加眩暈),對方英雄眩暈期間不能發起攻擊,只能挨打,被攻擊時也不能發起防御技能,且眩暈結束后對方英雄要重新等待攻擊間隔,眩暈時間不能疊加,如果對方已經處于眩暈,我方又發動攻擊技能,那么對方眩暈時間重新開始計算
防御技能(天神):每次被攻擊時有60%的幾率防御一半傷害,例如我方被攻擊,對方攻擊力為40,如果技能發動,則只扣除我方20點生命值

1.程序啟動后,監聽控制臺輸入
2.輸入任意兩個英雄名稱(逗號分隔)發起PK,格式:BM,DH
3.系統輸出PK詳細過程,直到有一方勝出,格式如下:
BM攻擊DH,BM發動攻擊技能,DH未發動防御技能,BM:350->350,DH:280->200
....
BM勝出

package com.lxi; import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Random; //三個人物的基類abstract class Person {  int val;       //生命值  double coldTime;   //冷卻時間  int waitTime;    //暈眩時間  int fight;     //攻擊力  int chanceHit;   //發起主動技能的概率  int chanceDefense; //發起防御技能的概率   abstract void hit(Person p);  //攻擊技能   abstract int defense(Person p); //防御技能,返回被傷害點數} class DH extends Person {  public DH() {    val = 600;    coldTime = 1.0;    fight = 30;    chanceHit = 3;   //表示30%的概率    chanceDefense = 3;    waitTime = 0;  }   Random rand = new Random();  boolean hitFlag = false;   //主動技能發動的標識  boolean defenseFlag = false; //防御技能發動的標識   public void hit(Person p) {    if (rand.nextInt(10) < chanceHit) { //發動主動技能      int hurt = p.defense(this);      p.val = p.val - hurt;      if (p.val <= 0) {        System.out.println(this.getClass().getSimpleName() + "勝出!");        System.exit(0);      }      val = val + hurt;      if (val > 600)        val = 600;      hitFlag = true;   //標記主動技能已經發動    } else { //進行普通攻擊      int hurt = p.defense(this);      p.val = p.val - hurt;      if (p.val <= 0) {        System.out.println(this.getClass().getSimpleName() + "勝出!");        System.exit(0);      }    }    System.out.println(this.getClass().getSimpleName() + "攻擊"        + p.getClass().getSimpleName() + ","        + this.getClass().getSimpleName()        + (this.hitFlag ? "發動攻擊技能  " : "未發動攻擊技能  ")        + p.getClass().getSimpleName()        + (this.defenseFlag ? "發動防御技能  " : "未發動防御技能  ")        + this.getClass().getSimpleName() + ":" + this.val + ","        + p.getClass().getSimpleName() + ":" + p.val);    hitFlag = false;   //    defenseFlag = false; //重置標記,下次重用  }   public int defense(Person p) {    if (rand.nextInt(10) < chanceDefense) {      defenseFlag = true;  //標記防御技能已經發動      return 0;    } else {      return p.fight;    }  }}
class BM extends Person {  public BM() {    val = 650;    coldTime = 1.5;    fight = 40;    chanceHit = 3;    chanceDefense = 3;    waitTime = 0;  }   int count = 0;  //防御技能發動的次數  int temp = 40;  //攻擊力,值同fight  boolean hitFlag = false;  boolean defenseFlag = false;  Random rand = new Random();   public void hit(Person p) {    if (rand.nextInt(10) < chanceHit) {      fight = fight * 2;  //發動雙倍攻擊      hitFlag = true;    }    int hurt = p.defense(this);    p.val = p.val - hurt;    fight = temp;   //還原為單倍攻擊    if (p.val <= 0) {      System.out.println(this.getClass().getSimpleName() + "勝出!");      System.exit(0);    }    System.out.println(this.getClass().getSimpleName() + "攻擊"        + p.getClass().getSimpleName() + ","        + this.getClass().getSimpleName()        + (this.hitFlag ? "發動攻擊技能  " : "未發動攻擊技能  ")        + p.getClass().getSimpleName()        + (this.defenseFlag ? "發動防御技能  " : "未發動防御技能  ")        + this.getClass().getSimpleName() + ":" + this.val + ","        + p.getClass().getSimpleName() + ":" + p.val);    hitFlag = false;    defenseFlag = false;  }   public int defense(Person p) {    if (rand.nextInt(10) < chanceDefense) {      if (count != 0) {        p.val = p.val - p.fight;        count++;        defenseFlag = true;        if (p.val <= 0) {          System.out.println(this.getClass().getSimpleName() + "勝出!");          System.exit(0);        }      }    }    return p.fight;  }} class MK extends Person {  public MK() {    val = 700;    coldTime = 2.5;    fight = 50;    chanceDefense = 6;    chanceHit = 3;    waitTime = 0;  }   boolean hitFlag = false;  boolean defenseFlag = false;  Random rand = new Random();   public void hit(Person p) {    if (rand.nextInt(10) < chanceHit) {      p.waitTime = 3;  //使對方暈眩3s      hitFlag = true;    }    int hurt = p.defense(this);    p.val = p.val - hurt;    if (p.val <= 0) {      System.out.println(this.getClass().getSimpleName() + "勝出!");      System.exit(0);    }    System.out.println(this.getClass().getSimpleName() + "攻擊"        + p.getClass().getSimpleName() + ","        + this.getClass().getSimpleName()        + (this.hitFlag ? "發動攻擊技能  " : "未發動攻擊技能  ")        + p.getClass().getSimpleName()        + (this.defenseFlag ? "發動防御技能  " : "未發動防御技能  ")        + this.getClass().getSimpleName() + ":" + this.val + ","        + p.getClass().getSimpleName() + ":" + p.val);    hitFlag = false;    defenseFlag = false;  }   public int defense(Person p) {    if (rand.nextInt(10) < chanceDefense) {      defenseFlag = true;      return p.fight / 2;  //防御技能發動,傷害減半    }    return p.fight;  }}
public class Rpg {  @SuppressWarnings("unchecked")  public static void main(String[] args) throws Exception {    System.out.println("在這里輸入兩個人物進行PK,以英文逗號分隔: [BM,DH,MK]");    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));    Class<Person> c1;    Class<Person> c2;    try {      String temp = br.readLine();      String[] str = temp.split(",");      if (str.length != 2) {        throw new Exception("輸入格式有誤,按默認PK");      }      c1 = (Class<Person>) Class.forName("com.lxi."          + str[0].toUpperCase());      c2 = (Class<Person>) Class.forName("com.lxi."          + str[1].toUpperCase());    } catch (Exception e) {      // TODO Auto-generated catch block      c1 = (Class<Person>) Class.forName("com.lxi.BM");      c2 = (Class<Person>) Class.forName("com.lxi.DH");    }    try {      Person p1 = c1.newInstance();      Person p2 = c2.newInstance();      long time = System.currentTimeMillis();      long nextTime1 = (long) (time + p1.coldTime*1000); //      long nextTime2 = (long) (time + p2.coldTime*1000); //發動攻擊的時間      System.out.println("---游戲開始---");      while (true) {        long currenTime = System.currentTimeMillis();         if (nextTime1 < currenTime) { //時間到則發動攻擊          p1.hit(p2);          nextTime1 += p1.coldTime*1000 + p1.waitTime*1000; //下次攻擊時間=冷卻時間+被暈眩時間          p1.waitTime = 0; //回合結束,重置被暈眩時間為0        }        if (nextTime2 < currenTime) {          p2.hit(p1);          nextTime2 += p2.coldTime*1000 + p2.waitTime*1000;          p2.waitTime = 0;        }      }    } catch (ClassCastException e) {      // TODO Auto-generated catch block      e.printStackTrace();    } catch (InstantiationException e) {      // TODO Auto-generated catch block      e.printStackTrace();    } catch (IllegalAccessException e) {      // TODO Auto-generated catch block      e.printStackTrace();    } catch (Exception e) {      e.printStackTrace();    }  }}

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩经典第一页| 欧美日韩亚洲精品内裤| 亚洲精品国产精品久久清纯直播| 欧美性做爰毛片| 欧美黄色成人网| 97在线视频免费| 日韩专区中文字幕| 国产婷婷97碰碰久久人人蜜臀| 在线丨暗呦小u女国产精品| 欧美人与性动交| 欧美日韩免费一区| 美女扒开尿口让男人操亚洲视频网站| 欧美激情在线观看视频| 国产日韩中文在线| 国产成人精品综合久久久| 国产精品高清在线观看| 欧美性xxxxx| 精品偷拍一区二区三区在线看| 精品欧美aⅴ在线网站| 亚洲精品第一页| 日韩欧美中文免费| 狠狠躁夜夜躁人人躁婷婷91| 日韩在线中文字| 在线丨暗呦小u女国产精品| 97精品在线观看| 日韩免费av在线| 欲色天天网综合久久| 欧美精品国产精品日韩精品| 久久久久久国产精品三级玉女聊斋| 久久久爽爽爽美女图片| 91中文字幕在线| 国产啪精品视频| 欧美激情喷水视频| 国产亚洲视频在线| 国产欧美日韩视频| 日韩在线免费av| 国产精品嫩草影院一区二区| 成人国产精品色哟哟| 欧美日韩国产成人高清视频| 国产欧美亚洲视频| 欧美性受xxx| 亚洲一区二区久久久久久| 国内精品久久久久久久久| 色狠狠av一区二区三区香蕉蜜桃| 欧美大胆a视频| 日韩成人小视频| 日韩中文字幕精品视频| 日韩美女av在线| 成人在线视频网站| 久久亚洲春色中文字幕| 日韩视频免费大全中文字幕| 在线视频日韩精品| 亚洲欧美一区二区三区四区| 国产欧美日韩精品专区| 久久久久久久久久久久久久久久久久av| 一本色道久久88亚洲综合88| 国产做受69高潮| 国产婷婷97碰碰久久人人蜜臀| 91av在线播放| 日韩在线欧美在线| 国产精品久久久久久久久粉嫩av| 亚洲国产日韩欧美在线99| 欧美野外wwwxxx| 亚洲高清久久久久久| 97婷婷大伊香蕉精品视频| 欧美国产日韩一区二区在线观看| 色综合视频一区中文字幕| 亚洲国产精品99久久| 亚洲国产精品专区久久| 亚洲高清一二三区| 欧美在线视频一区二区| 在线精品国产成人综合| 国产精品 欧美在线| 亚洲3p在线观看| 国产不卡av在线| 欧美性猛交xxxx| 日韩中文字幕国产精品| 深夜精品寂寞黄网站在线观看| 亚洲美女性视频| 久久视频在线观看免费| 日韩国产激情在线| 蜜臀久久99精品久久久久久宅男| 欧美性69xxxx肥| 国产欧美在线播放| 欧美另类极品videosbest最新版本| 亚洲视频在线观看网站| 欧美性视频精品| 91色p视频在线| 国产精国产精品| 日日骚av一区| 91久久精品日日躁夜夜躁国产| 欧美老女人bb| 亚洲欧美国产精品专区久久| 欧美有码在线观看视频| 不卡伊人av在线播放| 欧美国产日本在线| 亚洲人成伊人成综合网久久久| 成人午夜高潮视频| 欧美精品18videosex性欧美| 热久久免费国产视频| yw.139尤物在线精品视频| 日韩中文在线观看| 国产精品久久久久久久久粉嫩av| 日韩av免费在线播放| 久久亚洲精品中文字幕冲田杏梨| 亚洲视频一区二区三区| 亚洲欧美日韩精品久久奇米色影视| 精品久久久香蕉免费精品视频| 欧洲成人免费视频| 国产在线精品成人一区二区三区| 久久久精品国产网站| 久色乳综合思思在线视频| 色久欧美在线视频观看| 国产精品视频久久久久| 亚洲欧美日韩一区在线| 欧美精品在线免费观看| 国色天香2019中文字幕在线观看| 国产亚洲一区二区精品| 理论片在线不卡免费观看| www.99久久热国产日韩欧美.com| 精品视频—区二区三区免费| 成人做爰www免费看视频网站| 国产精品视频99| 久久亚洲综合国产精品99麻豆精品福利| 欧美日韩午夜激情| 国产亚洲在线播放| 成人亚洲综合色就1024| 欧美精品激情在线观看| 国产98色在线| 久久久久久久色| 成人免费观看网址| 亚洲va欧美va国产综合久久| 欧美性视频网站| 亚洲人成电影在线| 久久精品国产视频| 亚洲成人精品视频| 久久精品国产亚洲| 欧美精品一区二区三区国产精品| 日韩国产在线播放| 中文字幕精品久久久久| 国产午夜精品全部视频播放| 国产精品美女久久久久久免费| 欧美日韩中文字幕在线视频| 亚洲视频在线视频| 亚洲毛片一区二区| 在线观看亚洲区| 超碰日本道色综合久久综合| 一区二区三区视频在线| 中文字幕日韩免费视频| 亚洲欧美国产制服动漫| 日本亚洲精品在线观看| 97超碰色婷婷| 日本高清久久天堂| 国产精品亚洲自拍| 97国产一区二区精品久久呦| 成人久久18免费网站图片| 尤物99国产成人精品视频| 国产成人精品免费视频| 麻豆成人在线看| 久久久精品网站| 欧美视频二区36p| 国产成人亚洲综合青青| 最好看的2019的中文字幕视频| 91免费看视频.|