当前位置:   article > 正文

Java编写一个小游戏_用java编写一个小游戏

用java编写一个小游戏

一、首先创建一个玩家类,里边有相对应的属性值

闪避率和暴击率同理但是没有写

  1. /**
  2. * 玩家类
  3. * 属性 名字 类型 生命值 防御值 攻击力
  4. * 方法 自我介绍 pk 斗殴
  5. */
  6. public class Player {
  7. //分装:把属性设为private,提供公共的get和set方法,提高安全性
  8. private String name; //姓名
  9. private String type; //类型 战士 法师
  10. private int hp; //生命值
  11. private int defense; //防御值
  12. private int attack; //攻击力
  13. private int baoji; //暴击率
  14. private double miss; //闪避率
  15. private String[] zhuanbei;
  16. // 一般定义了有参的构造器,一定也要定义一个无参的
  17. //有参
  18. public Player(String name, String type, int hp, int defense, int attack, int baoji, double miss, String[] zhuanbei) {
  19. this.name = name;
  20. this.type = type;
  21. this.hp = hp;
  22. this.defense = defense;
  23. this.attack = attack;
  24. this.baoji = baoji;
  25. this.miss = miss;
  26. this.zhuanbei = zhuanbei;
  27. }
  28. //无参
  29. public Player() {
  30. }
  31. public String getName() {
  32. return name;
  33. }
  34. public void setName(String name) {
  35. this.name = name;
  36. }
  37. public String getType() {
  38. return type;
  39. }
  40. public void setType(String type) {
  41. this.type = type;
  42. }
  43. public int getHp() {
  44. return hp;
  45. }
  46. public void setHp(int hp) {
  47. this.hp = hp;
  48. }
  49. public int getDefense() {
  50. return defense;
  51. }
  52. public void setDefense(int defense) {
  53. this.defense = defense;
  54. }
  55. public int getAttack() {
  56. return attack;
  57. }
  58. public void setAttack(int attack) {
  59. this.attack = attack;
  60. }
  61. public double getBaoji() {
  62. return baoji;
  63. }
  64. public void setBaoji(int baoji) {
  65. this.baoji = baoji;
  66. }
  67. public double getMiss() {
  68. return miss;
  69. }
  70. public void setMiss(double miss) {
  71. this.miss = miss;
  72. }
  73. public String[] getZhuanbei() {
  74. return zhuanbei;
  75. }
  76. public void setZhuanbei(String[] zhuanbei) {
  77. this.zhuanbei = zhuanbei;
  78. }

二、定义方法

1、定义介绍方法,该方法输出对应玩家的属性值

  1. /**
  2. * 描述自己的属性
  3. */
  4. public void introduce(){
  5. System.out.println("我叫" + name + ",是一个" + type);
  6. System.out.println(",生命值高达" + hp + ",防御值" + defense + ",攻击力" + attack);
  7. }

2、创建Rate类,并创建计算暴击率和掉落率的方法

        1、创建rateCheck方法,判断是否触发暴击和掉落

  1. public boolean rateCheck(int rate){
  2. float ran = random.nextFloat() * 101; //[0,101)
  3. if (ran < rate) //当随机的数小于既定的rate则判定触发
  4. return true;
  5. else
  6. return false;
  7. }

        2、创建暴击伤害计算方法

        

  1. public int baojishanghai(int baojilv, int attack){
  2. int bjtest = 0; //暴击伤害
  3. boolean isBaojilv = rateCheck(baojilv); //判断是否触发暴击
  4. if (isBaojilv){
  5. System.out.println("触发暴击");
  6. bjtest = attack * 2; //当触发暴击时,伤害为2倍的基伤并无视防御
  7. }
  8. return bjtest; //返回暴击伤害
  9. }

 

        3、创建随机掉落物品计算方法

        

  1. /**
  2. * 掉落并不是百分百掉落
  3. */
  4. public void fall(int fallRate, int len, String arr[]){
  5. int i = 0;
  6. Boolean fall = rateCheck(fallRate); //每个玩家都有自己的掉落率,判断是否触发掉落
  7. if (fall){
  8. i = (int)random.nextFloat() * len; //如果掉落,则在装备数组里随机掉落一个
  9. System.out.println("掉落" + arr[i]);
  10. }
  11. }

3、定义PK方法

  1. /**
  2. * pk
  3. * 我方开始的战斗
  4. * @param p 敌对玩家
  5. */
  6. public void pk(Player p){
  7. int flag = 0; //标识
  8. Rate bj = new Rate(); //new一个计算暴击掉落的类的对象
  9. while(true){
  10. //显示当前战斗人员的信息
  11. this.introduce();
  12. p.introduce();
  13. int bjsh = 0; //暴击伤害
  14. // 定义一个标记 0 我方攻击 1 敌方攻击
  15. if (flag == 0){
  16. //战斗 我方攻击力减去敌方防御力
  17. int harm = this.attack - p.defense;
  18. bjsh = bj.baojishanghai(this.baoji,this.attack); //判断是否暴击,如果发生暴击则计算暴击伤害
  19. if (bjsh > 0) //上一步如果发生暴击,则暴击伤害>0
  20. harm = bjsh; //造成的伤害为暴击伤害
  21. System.out.println(p.name + "掉血" + harm);
  22. p.hp -= harm; //让敌方生命值-伤害值
  23. flag = 1; //改变标记
  24. }else {
  25. //战斗 敌方攻击力减去我方防御力
  26. int harm = p.attack - this.defense;
  27. bjsh = bj.baojishanghai(p.baoji,p.attack);
  28. if (bjsh > 0)
  29. harm = bjsh;
  30. System.out.println(this.name + "掉血" + harm);
  31. this.hp -= harm; //让敌方生命值-伤害值
  32. flag = 0; //改变标记
  33. }
  34. /**
  35. * 死亡机制 当一个人血量为零,则pk结束
  36. */
  37. if (p.hp <= 0){
  38. System.out.println("我方击败" + p.name);
  39. bj.fall(50,p.zhuanbei.length,p.zhuanbei);
  40. break;
  41. }
  42. if (this.hp <= 0){
  43. System.out.println(p.name + "击败" + this.name);
  44. bj.fall(50,this.zhuanbei.length,this.zhuanbei);
  45. break;
  46. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/746399
推荐阅读
相关标签
  

闽ICP备14008679号