王者荣耀中一个英雄是怎么被产生的?

皮肤和技能实现

文章目录

前言

一、前期准备

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

2.1 皮肤选择界面设计

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

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

3.1 确定英雄技能效果

3.2 英雄技能使用

3.3 技能释放演示

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

4 .1 刷怪实现的方法

4 .2 购买装备!

总结

前言

之前我写的王者荣耀中一个英雄是怎么被产生的(一)受到很多友友们的关注,我是无意间写的一个比较简陋的小程序,以前文章主要是通过我作为一个外行人,并且是持学习态度写的文章。内容是创建英雄,创建野怪,创建装备。并且实现了简单的刷怪,购买装备等。今天的系列二文章,我优化了我的操作界面,并且实现了英雄技能,英雄皮肤等。如果你感兴趣的话,不妨看一看我写的文章。会给你带来无比的快乐!

一、前期准备

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

王者荣耀各类英雄配的召唤师技能(王者荣耀中皮肤和英雄技能java实现)(1)

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实现)(2)

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实现)(3)

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

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实现)(4)

使用一技能:

王者荣耀各类英雄配的召唤师技能(王者荣耀中皮肤和英雄技能java实现)(5)

王者荣耀各类英雄配的召唤师技能(王者荣耀中皮肤和英雄技能java实现)(6)

王者荣耀各类英雄配的召唤师技能(王者荣耀中皮肤和英雄技能java实现)(7)

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

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实现)(8)

王者荣耀各类英雄配的召唤师技能(王者荣耀中皮肤和英雄技能java实现)(9)

王者荣耀各类英雄配的召唤师技能(王者荣耀中皮肤和英雄技能java实现)(10)

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实现)(11)

王者荣耀各类英雄配的召唤师技能(王者荣耀中皮肤和英雄技能java实现)(12)

王者荣耀各类英雄配的召唤师技能(王者荣耀中皮肤和英雄技能java实现)(13)

王者荣耀各类英雄配的召唤师技能(王者荣耀中皮肤和英雄技能java实现)(14)

总结

我完全是外行,这是通过自己的兴趣来练习练习对象的使用和方法的调用,通过这种兴趣与爱好的结合,我发现才可以主观的学到更多知识,接下来我要使用比较难的,那就是多线程,并结合Web,来实现两个英雄的战斗!大家多多关注!不喜勿喷,呜呜呜。

相关代码我已经上传到github上面,如果你需要的话,可以转发 私信【02】免费获取,进行下载,玩一玩,哈哈哈!

,