我用java实现了王者荣耀的皮肤和英雄技能

作者:沉默着忍受 时间:2022-01-13 13:44:09 

一、前期准备

提示:如果友友你没有看过系列一的文章点击这个链接:王者荣耀中一个英雄是怎么被产生的?(一)

我们现在功能比较多,所有为了让程序运行起来比较直观,我们需要创建一个Menu包,来定义一些操作的界面;

我用java实现了王者荣耀的皮肤和英雄技能

Menulogin是游戏选择英雄皮肤,铭文和进入游戏的界面;代码简单易懂,我就不解释了


package Menu;

import java.util.Scanner;

public class Menulogin {
   public  static  int Menulogin(){
       System.out.println("*****备战选择*****");
       System.out.println("按1 :选择皮肤");
       System.out.println("按2 :选择铭文");
       System.out.println("按3 :进入游戏");
       System.out.println("*****************");
       Scanner sc = new Scanner(System.in);
       int res = sc.nextInt();
       switch (res){
           case 1: return 1;
           case 2: return 2;
           case 3: return 3;
           default:
               System.out.println("参数错误,尝试重新连接"); Menulogin();break;
       }
       return 0;
   }
}

Menuable是英雄技能释放界面


package Menu;

import java.util.Scanner;

public class Menuable {
   //技能菜单
   public  static  int Menuable(){
       System.out.println("***************");
       System.out.println("按1 :技能一(控制)");
       System.out.println("按2 :技能二(伤害)");
       System.out.println("按3 :技能三(控制)");
       System.out.println("按0 :自动平A");
       System.out.println("按10 :攻击野怪");
       System.out.println("按11 :购买装备");
       System.out.println("***************");
       Scanner sc = new Scanner(System.in);
       int res = sc.nextInt();
       switch (res){
           case 1: return 1;
           case 2: return 2;
           case 3: return 3;
           case 0: return 0;
           case 10: return 10;
           case 11: return 11;
           default:return 4;
       }
   }
}

Menuyeguai是攻击目标野怪的菜单,主要是通过选择野怪,并且完成击杀,获得金币


package Menu;

import yeguai.*;

import java.util.Scanner;

public class Menuyeguai {
   //刷野菜单
   public static  int Menuyeguai(){
       System.out.println("******选择要攻击的野怪******");
       System.out.println("1.野猪");
       System.out.println("2.小鸟");
       System.out.println("3.河蟹");
       System.out.println("4.小兵");
       System.out.println("5.炮车");
       System.out.println("6.红buff");
       System.out.println("7.蓝buff");
       System.out.println("10.进入技能页面");
       System.out.println("11.进入装备页面");
       Scanner sc = new Scanner(System.in);
       int res = sc.nextInt();
       switch (res){
           case 1: Pig pig = new Pig(); return pig.getNum();
           case 2:
               Bird bird = new Bird();return bird.getNum();
           case 3:
               Heixie heixie = new Heixie();return heixie.getNum();
           case 4:
               Xiaobing xiaobing = new Xiaobing();return xiaobing.getNum();
           case 5:
               Paocar paocar = new Paocar();return  paocar.getMoney();
           case 6:return 1;
           case 7:return 0;
           case 10:return 10;
           case 11:return 11;
           default:
               System.out.println("无效操作"); return 12;
       }
   }
}

Menuzhuangbei是玩家是进入装备页面,购买装备,增加全方位属性,目前只实现了抵抗之靴,反甲,暗影战斧


package Menu;

import java.util.Scanner;

public class Menuzhuangbei {
   //装备页面
   public static  int Menuzhuangbei(){
       System.out.println("++++++++++++++++++++++");
       System.out.println("1.抵抗之靴");
       System.out.println("2.反甲");
       System.out.println("3.暗影战斧");
       System.out.println("4.极寒风暴");
       System.out.println("5.破军");
       System.out.println("6.碎星锤");
       System.out.println("7.魔女斗篷");
       System.out.println("10.进入技能页面");
       System.out.println("11.进入刷怪页面");
       System.out.println("++++++++++++++++++++++");
       Scanner sc = new Scanner(System.in);
       int res = sc.nextInt();
       switch (res){
           case 1: return 1;
           case 2: return 2;
           case 3: return 3;
           case 4: return 4;
           case 5: return 5;
           case 6: return 6;
           case 7: return 7;
           case 10:return 10;
           case 11:return 11;
           default:return 12;
       }
   }

}

二、没有钱买皮肤,我就自己造!

2.1 皮肤选择界面设计

我们主要是后端设计,所有我们分析分析一下,如何实现一个皮肤。

如果友友玩过王者荣耀,那么你一定知道,不管一个皮肤有多贵,它可以固定给穿戴的英雄加20点的攻击力,我是亚瑟的皮肤,所以加20点物理攻击。如果创建了一个法师英雄,那么加20点法术攻击。花里胡哨的皮肤,其实底层实现很容易,就是建模,美工比较折磨人。

我用java实现了王者荣耀的皮肤和英雄技能


package skin;

import yeguai.*;
import zhuangbei.Fajia;

import java.util.Scanner;

public class Yaseisskin {

public  static  int Yaseisskin(){
       System.out.println("_________________________");
       System.out.println("    1. 亚瑟-圣骑之力       ");
       System.out.println("    2. 亚瑟-死亡骑士       ");
       System.out.println("    3. 亚瑟-狮心王         ");
       System.out.println("    4. 亚瑟-心灵战警       ");
       System.out.println("_________________________");
       Scanner sc = new Scanner(System.in);
       int res = sc.nextInt();
       if(res==1){
          int add = Yuanshenskin();
          return add;
       }
       if(res==2){
           int add = Firstskin();
           return add;
       }
       if(res==3){
           int add = Secondskin();
           return add;
       }
       if(res==4){
           int add = Thirdskin();
           return add;
       }
       return 0;
   }

private static int Yuanshenskin(){
       System.out.println("亚瑟穿上了“亚瑟-圣骑之力”皮肤");
       int phyattack =20;
       return phyattack;
   }

private static int Firstskin(){
       System.out.println("亚瑟穿上了“亚瑟-死亡骑士”皮肤");
       int phyattack =20;
       return phyattack;
   }

private  static  int Secondskin(){
       System.out.println("亚瑟穿上了“亚瑟-狮心王 ”皮肤");
       int phyattack =20;
       return phyattack;
   }

private  static  int Thirdskin(){
       System.out.println("亚瑟穿上了“亚瑟-心灵战警 ”皮肤");
       int phyattack =20;
       return phyattack;
   }
}

没错,这是我的想法,如果你感兴趣,可以在自己创造新的,牛逼,开挂的皮肤。哈哈哈

2.2 如何将皮肤属性赋给英雄

这个十分简单,我们只需要拿到所选的皮肤返回值,然后将该返回值赋给英雄的基础攻击力就实现了属性赋予。
代码如下:


if(menulogin.Menulogin()==1){
         int num = Yaseisskin.Yaseisskin();
         yase.setPhyattack(yase.getPhyattack()+num);
           System.out.println("皮肤穿戴成功!");
           System.out.println(yase.getName()+"当前属性为"+" 金币 "+yase.getMoney()+" 物理攻击 "+yase.getPhyattack()+" 血量                  "+yase.getBlood()+" 移速 "+yase.getMove()
           );
       }

我用java实现了王者荣耀的皮肤和英雄技能

四个皮肤具体实现:
原皮 :亚瑟-圣骑之力 无加成


private static int Yuanshenskin(){
       System.out.println("亚瑟穿上了“亚瑟-圣骑之力”皮肤");
       int phyattack =0;
       return phyattack;
   }

赛季皮肤:亚瑟-狮心王


 private  static  int Secondskin(){
       System.out.println("亚瑟穿上了“亚瑟-狮心王 ”皮肤");
       int phyattack =20;
       return phyattack;
   }

活动皮肤:亚瑟-死亡骑士


 private static int Firstskin(){
       System.out.println("亚瑟穿上了“亚瑟-死亡骑士”皮肤");
       int phyattack =20;
       return phyattack;
   }

碎片兑换皮肤:亚瑟-心灵战警


private  static  int Thirdskin(){
       System.out.println("亚瑟穿上了“亚瑟-心灵战警 ”皮肤");
       int phyattack =20;
       return phyattack;
   }

三、没有牛逼的英雄技能,玩个锤子!

3.1 确定英雄技能效果


我们实现好皮肤后,点击进入游戏,那么,我们玩什么,当然是刷怪,打人,推塔(打人,推塔在系列三开始实现)。我现在创建的英雄是亚瑟。
  亚瑟有三个技能和一个被动技能;(被动技能我没有实现,因为木有好想法,友友快快帮忙!)

**第一个技能:**

//亚瑟的一技能
   public static  int[] Firstable(boolean Redbuff){  //给技能一个参数,如果有红buff或蓝buff,那么技能属性就会提升
       int[] res = new int[4];
       if(Redbuff){ //有红buff
           int phyattack = 120;//输出的伤害
           int blood = 200;
           int move = 100; //一技能效果加速
           res[0]=120;
           res[1]=200;
           res[2]=100;
       }else{ //无红buff
           int phyattack = 100;
           int blood = 0;
           int move = 100;
           res[0]=100;
           res[1]=0;
           res[2]=100;
       }

//一技能特殊属性,沉默英雄,也就是说,被击中的英雄2s内无法释放技能。
       res[3] = 1;//标志1为该技能的效果是可以沉默;

return res;
   }

第二个技能实现:


//亚瑟的二技能
   public static int[] Secondable(boolean Redbuff,boolean bluebuff){  //给技能一个参数,如果有红buff,那么技能属性就会提升
       int[] res1 = new int[4];

int phyattack = 300;
       int blood = 0;
       int move = 50;
       int time1 = 7000; // 每7s ,一个二技能
       res1[0]=phyattack;
       res1[1]=blood;
       res1[2]=move ;
       res1[3]=time1;

if(Redbuff){ //有红buff
           phyattack = 400;
           blood = 200;
           move = 50;
           res1[0]=phyattack;
           res1[1]=blood;
           res1[2]=move;
           res1[3]=time1;
       }
       if(bluebuff){ //有蓝buff
          time1 = 6000;
           res1[3]=time1;
       }
       return res1;
   }

第三个技能实现:


//亚瑟的三技能
   public static int[] Thirdable(boolean Redbuff,boolean bluebuff){  //给技能一个参数,如果有红buff,那么技能属性就会提升
       int[] res2 = new int[4];
       int phyattack = 600;
       int blood = 0;
       int move = 50;
       int time2 = 12000;  //每12s一个三技能
       res2[0]=phyattack;
       res2[1]=blood;
       res2[2]=move ;
       res2[3]=time2;
       if(Redbuff){ //有红buff
           phyattack = 800;
           blood = 400;
           move = 50;
           res2[0]=phyattack;
           res2[1]=blood;
           res2[2]=move ;
           res2[3]=time2;
       }

if(bluebuff){ //有蓝buff
            time2 = 10000;
           res2[0]=phyattack ;
           res2[1]=blood ;
           res2[2]=move ;
           res2[3]=time2;
       }

return res2;
   }

3.2 英雄技能使用


**利用技能菜单,完成技能的使用,**

int flag=menulogin.Menulogin(); //游戏开始标记符;
       Boolean red = false;
       Boolean blue = false; //默认英雄初始是没有buff的
       while (flag==3) {
           Menuable menuable = new Menuable();
           Menuyeguai menuyeguai = new Menuyeguai();
           Menuzhuangbei menuzhuangbei = new Menuzhuangbei();
           int res = menuable.Menuable(); //技能菜单
           int[] arr = new int[4];
           switch (res) {   //技能生效操作
               case 1:
                   System.out.println("当前使用一技能誓约之盾!");
                   arr = Firstable(red);
                   break;
               case 2:
                   System.out.println("当前使用二技能回旋打击!");
                   arr = Secondable(red, blue);
                   break;
               case 3:
                   System.out.println("当前使用二技能圣剑裁决!");
                   arr = Thirdable(red, blue);
                   break;
               case 10:
                   int res1 = menuyeguai.Menuyeguai();
                   switch (res1){  //刷野生效操作
                       case 80:
                       case 100:
                       case 150:
                       case 200:
                       case 250:yase.setMoney(yase.getMoney()+res1);break;
                       case 1: red = true;break;
                       case 0: blue = true;break;
                       case 10:;
                       case 11:;
                       default:
                           System.out.println("系统错误");
                   }
                   break;
               case 11:
                   int res2 = menuzhuangbei.Menuzhuangbei();
                   switch (res2){  //进入装备购买页面
                       case 1:
                           Shoe shoe = new Shoe();
                           if(yase.getMoney()>=200){
                           System.out.println(yase.name+"购买了"+shoe.name);
                           yase.phyfangyu+=shoe.getPhyattack();
                           yase.move+=shoe.getMove();
                           yase.money=yase.money-200;
                       }else{
                               System.out.println("金币不足,无法购买"+shoe.name);
                           };break;
                       case 2:
                           Fajia fajia = new Fajia();
                           if(yase.getMoney()>=1200){
                           System.out.println(yase.name+"购买了"+fajia.name);
                           yase.phyattack+=fajia.getPhyattack(); //攻击力+
                           yase.phyfangyu+=fajia.getPhyfanyu();  //防御力+
                           yase.money=yase.money-1200;
                       }else {
                               System.out.println("金币不足,无法购买"+fajia.name);
                           };break;
                       case 3:
                           Anyinzhanfu anyinzhanfu = new Anyinzhanfu();
                           if(yase.getMoney()>=2000){
                           System.out.println(yase.name+"购买了"+anyinzhanfu.name);
                           yase.phyattack+=anyinzhanfu.getPhyattack(); //攻击力+
                           yase.blood+=anyinzhanfu.getBlood();  //生命力+
                           yase.money=yase.money-2000;
                       }else {
                               System.out.println("金币不足,无法购买"+anyinzhanfu.name);
                           }
                           break;
                       case 10:
                       case 11:
                       default:
                           System.out.println("系统错误");
                   }
                   break;
               case 4:
                   return;
               default:
                   System.out.println("自动平A中。。。。");
                   break;
           }
           yase.setPhyattack(yase.getPhyattack()+arr[0]);
           yase.setBlood(yase.getBlood()+arr[1]);
           yase.setMove(yase.getMove()+arr[2]);
           System.out.println(yase.getName()+"当前属性为"+" 金币 "+yase.getMoney()+" 物理攻击 "+yase.getPhyattack()+" 血量 "+yase.getBlood()+" 移速 "+yase.getMove()
           +" 当前技能冷却时间 "+arr[3]+"ms");
       }

里面嵌套了装备购买和刷怪的代码实现,代码十分基础,聪明的友友你一定看的懂。
刷野怪主要是给每个野怪设定了不同的金币数量,然后通过Switch,进行判断。
buff是根据返回值,来确定当前是否有buff;
装备购买的代码原理一样,调用装备类,在购买装备前先判断经济是否满足条件;

3.3 技能释放演示

我用java实现了王者荣耀的皮肤和英雄技能

使用一技能:

我用java实现了王者荣耀的皮肤和英雄技能
我用java实现了王者荣耀的皮肤和英雄技能
我用java实现了王者荣耀的皮肤和英雄技能

四、光放技能有什么用,刷怪买装备!

4.1 刷怪实现的方法


int res1 = menuyeguai.Menuyeguai();
                   switch (res1){  //刷野生效操作
                       case 80:
                       case 100:
                       case 150:
                       case 200:
                       case 250:yase.setMoney(yase.getMoney()+res1);break;
                       case 1: red = true;break;
                       case 0: blue = true;break;
                       default:
                           System.out.println("系统错误");
                   }
                   break;

程序运行演示:

我用java实现了王者荣耀的皮肤和英雄技能
我用java实现了王者荣耀的皮肤和英雄技能
我用java实现了王者荣耀的皮肤和英雄技能

4.2 购买装备!


int res2 = menuzhuangbei.Menuzhuangbei();
                   switch (res2){  //进入装备购买页面
                       case 1:
                           Shoe shoe = new Shoe();
                           if(yase.getMoney()>=200){
                           System.out.println(yase.name+"购买了"+shoe.name);
                           yase.phyfangyu+=shoe.getPhyattack();
                           yase.move+=shoe.getMove();
                           yase.money=yase.money-200;
                       }else{
                               System.out.println("金币不足,无法购买"+shoe.name);
                           };break;
                       case 2:
                           Fajia fajia = new Fajia();
                           if(yase.getMoney()>=1200){
                           System.out.println(yase.name+"购买了"+fajia.name);
                           yase.phyattack+=fajia.getPhyattack(); //攻击力+
                           yase.phyfangyu+=fajia.getPhyfanyu();  //防御力+
                           yase.money=yase.money-1200;
                       }else {
                               System.out.println("金币不足,无法购买"+fajia.name);
                           };break;
                       case 3:
                           Anyinzhanfu anyinzhanfu = new Anyinzhanfu();
                           if(yase.getMoney()>=2000){
                           System.out.println(yase.name+"购买了"+anyinzhanfu.name);
                           yase.phyattack+=anyinzhanfu.getPhyattack(); //攻击力+
                           yase.blood+=anyinzhanfu.getBlood();  //生命力+
                           yase.money=yase.money-2000;
                       }else {
                               System.out.println("金币不足,无法购买"+anyinzhanfu.name);
                           }
                           break;
                       case 10:
                       case 11:
                       default:
                           System.out.println("系统错误");
                   }
                   break;

我用java实现了王者荣耀的皮肤和英雄技能
我用java实现了王者荣耀的皮肤和英雄技能
我用java实现了王者荣耀的皮肤和英雄技能
我用java实现了王者荣耀的皮肤和英雄技能

来源:https://blog.csdn.net/ILOVEMYDEAR/article/details/116867540

标签:java,王者荣耀,游戏
0
投稿

猜你喜欢

  • java实现实时通信聊天程序

    2023-10-18 09:08:06
  • 详解SpringCloud mysql实现配置中心

    2023-11-02 05:12:57
  • 使用Springboot自定义转换器实现参数去空格功能

    2021-11-12 03:36:29
  • Android实现弹出登陆框的方案

    2021-09-03 06:52:36
  • Android中Button实现点击换图案及颜色

    2022-06-28 00:42:10
  • Android Studio 报错failed to create jvm error code -4的解决方法

    2023-01-22 03:13:49
  • Spring Batch轻量级批处理框架实战

    2023-01-08 00:24:23
  • C#如何使用Task执行异步操作

    2023-01-12 03:34:41
  • 一篇文章带你了解JAVA结构化编程详情

    2022-01-15 13:06:34
  • mybatis trim标签的使用详解

    2022-07-10 23:27:54
  • 浅谈java实现背包算法(0-1背包问题)

    2022-04-28 15:23:43
  • Unity3D实现分页系统

    2022-06-28 22:53:37
  • c#动态改变webservice的url访问地址

    2021-10-08 20:13:03
  • Java从同步容器到并发容器的操作过程

    2021-10-14 05:26:58
  • prometheus监控springboot应用简单使用介绍详解

    2023-02-24 03:49:00
  • Java实现递归计算n的阶乘

    2021-06-26 14:34:26
  • 使用OkHttp包在Android中进行HTTP头处理的教程

    2023-06-16 23:55:37
  • Java数据结构与算法之单链表深入理解

    2023-12-02 05:53:12
  • Struts2 $,#,%详解及实例代码

    2021-09-10 04:18:40
  • Java基于余弦方法实现的计算相似度算法示例

    2022-06-29 22:02:13
  • asp之家 软件编程 m.aspxhome.com