#王者荣耀中一个英雄是怎么被产生的?
皮肤和技能实现


文章目录

  • 前言
  • 一、前期准备
  • 二、没有钱买皮肤,我就自己造!
    • 2.1 皮肤选择界面设计
    • 2.2 如何将皮肤属性赋给英雄
  • 三、没有牛逼的英雄技能,玩个锤子!
    • 3.1 确定英雄技能效果
    • 3.2 英雄技能使用
    • 3.3 技能释放演示
  • 四、光放技能有什么用,刷怪买装备!
    • 4 .1 刷怪实现的方法
    • 4 .2 购买装备!
  • 总结

前言

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


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

一、前期准备

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

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点法术攻击。花里胡哨的皮肤,其实底层实现很容易,就是建模,美工比较折磨人。

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());}


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

   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){ //有红buffint phyattack = 120;//输出的伤害int blood = 200;int move = 100; //一技能效果加速res[0]=120;res[1]=200;res[2]=100;}else{ //无红buffint 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){ //有红buffphyattack = 400;blood = 200;move = 50;res1[0]=phyattack;res1[1]=blood;res1[2]=move;res1[3]=time1;}if(bluebuff){ //有蓝bufftime1 = 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){ //有红buffphyattack = 800;blood = 400;move = 50;res2[0]=phyattack;res2[1]=blood;res2[2]=move ;res2[3]=time2;}if(bluebuff){ //有蓝bufftime2 = 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 技能释放演示


使用一技能:


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

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;

程序运行演示:


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;




总结

我完全是外行,这是通过自己的兴趣来练习练习对象的使用和方法的调用,通过这种兴趣与爱好的结合,我发现才可以主观的学到更多知识,接下来我要使用比较难的,那就是多线程,并结合Web,来实现两个英雄的战斗!大家多多关注!不喜勿喷,呜呜呜。
相关代码我已经上传到github上面,如果你需要的话,可以进行下载,玩一玩,哈哈哈!

github:https://github.com/41809310102/study/tree/master/%E5%A4%8D%E4%B9%A0%E4%B8%80%E8%BD%AE/%E5%AF%B9%E8%B1%A1%E7%BB%83%E4%B9%A0

王者荣耀中皮肤和英雄技能java实现相关推荐

  1. 王者荣耀中的技术,技能冷却原来是这样做的

    在游戏中经常会使用到圆形图片,常见的场景如王者荣耀技能图标,但Unity引擎本身没有提供类似的组件,需要开发人员自行实现,本文主要介绍两种简单的圆形图片实现方式,同时提供了一种实现技能CD以及技能精确 ...

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

    点击关注公众号,Java干货及时送达 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/ ...

  3. document.cookie 获取不到_意想不到,王者荣耀中不用花钱就可以获得的皮肤有哪

    意想不到,王者荣耀中不用花钱就可以获得的皮肤有哪 写回答... 获得皮肤碎片和英雄碎片的途径有以下几种: 1.签到,一般连续签到4 5天会获得一个英雄碎片. 2.活动,不定时会有活动送英雄碎片或皮肤碎 ...

  4. 王者荣耀java,责任链模式在王者荣耀中的应用

    来源:https://blog.csdn.net/IT_charge 一.简述 在王者荣耀商城中,玩家可以参与夺宝抽奖.夺宝抽奖分两种,一种是积分抽奖,另一种是钻石抽奖:在平常,两种夺宝抽奖方式均可以 ...

  5. python爬虫脚本 初级入门爬虫英雄联盟所有皮肤_Python爬虫练习:20行Python代码爬取王者荣耀全英雄皮肤...

    引言王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了.我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成. 准备工作 ...

  6. 王者荣耀测试自己本命英雄软件,王者荣耀中谁是你的本命英雄测试地址 趣推测试王者荣耀中谁是你的本命英雄...

    类型:ios社交聊天大小:26M语言:中文 评分:5.0 标签: 立即下载 现在有一个很火的王者荣耀中谁是你的本命英雄测试地址,这是来源于趣推测试王者荣耀中谁是你的本命英雄游戏,想要玩的话就来西西软件 ...

  7. 腾讯回函中消协:王者荣耀情人节皮肤未进行虚假宣传

    远离消费陷阱,提升消费体验,黑猫投诉平台全天候服务,您的每一条投诉,都在改变这个世界.[投诉,就上黑猫] 相关新闻: 玩"字谜游戏" 能瞒过网友的火眼金睛? 新浪科技讯 2月27日 ...

  8. 王者荣耀java实现_从王者荣耀看设计模式-策略模式(java版)

    王者荣耀 曾经我也是一名玩农药的大学生,但现在已经弃了,别问我为什么(被坑爹队友坑的哭...).而今天我们来把让农药变荣耀,我们来从王者荣耀中看设计模式的策略模式. 射手 00.分析 我们先来思考,王 ...

  9. 王者荣耀中铭文装配是怎么实现的?

    王者荣耀中铭文装配是怎么实现的? 例如:第三章 王者荣耀中铭文装配是怎么实现的? 文章目录 王者荣耀中铭文装配是怎么实现的? 前言 一.分析铭文都有什么 1.1 铭文类别分析 1.2 铭文布局分析 二 ...

最新文章

  1. Prism安装、MVVM基础概念及一个简单的样例
  2. 使用 libpcap 实现网络转包
  3. C++ Websites
  4. Mate 50年内无望!华为确认10月海外发布会主角是nova系列
  5. 拒绝Wakelock提高续航!安卓省电优化攻略
  6. nosql第二章课后习题
  7. java如何快速入门Hadoop大数据技术?
  8. 3层vni vxlan_VXLAN技术介绍:三层的网络来搭建虚拟的二层网络
  9. Java中new一个对象的过程
  10. 记学习量化投资 企业估值
  11. 51个最佳jQuery教程和示例
  12. 视频教程-跟汤老师学Java(第18季):设计模式-Java
  13. IOS6区别于IOS5的几个不明显的改变
  14. 《国产操作系统之银河麒麟》桌面环境
  15. 腾讯云php小程序,使用微信小程序和腾讯云实现直播功能
  16. nyoj-506-洗澡
  17. 嵌入式单片机基础篇(一)之stm32F1GPIO详解
  18. UEFI统一可扩展固件接口
  19. 从0开始建设saas - 系统对接中的问题整理
  20. Android开发12年高级工程师:作为 IT 行业的过来人,我想对你们说~(职场必看!!!)

热门文章

  1. 《红楼梦》-- 曹雪芹
  2. java后端开发流程总结
  3. pads9.5转AD09
  4. 【Java 解析全国地址】Java 利用正则表达式完美解析全国省市区地址
  5. 一步一步教你制作的第一个 WordPress 插件
  6. Android UUID主键生成器
  7. echarts——map
  8. 电子班牌解决方案-最新全套文件
  9. 考研高等数学张宇30讲笔记——第三讲 函数极限与连续性
  10. this和e.target