王者荣耀中皮肤和英雄技能java实现

Posted 沉默着忍受

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了王者荣耀中皮肤和英雄技能java实现相关的知识,希望对你有一定的参考价值。

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



前言

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

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

一、前期准备

我们现在功能比较多,所有为了让程序运行起来比较直观,我们需要创建一个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){ //有红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 以上是关于王者荣耀中皮肤和英雄技能java实现的主要内容,如果未能解决你的问题,请参考以下文章

20行Python代码爬取王者荣耀全英雄皮肤

20行Python代码爬取王者荣耀全英雄皮肤

Matlab爬虫获取王者荣耀英雄皮肤

12.奇怪知识 --Matlab爬虫获取王者荣耀英雄皮肤

教你用python爬取王者荣耀英雄皮肤图片,并将图片保存在各自英雄的文件夹中。(附源码)

用python的requests第三方模块抓取王者荣耀所有英雄的皮肤