我用java實現(xiàn)了王者榮耀的皮膚和英雄技能
一、前期準(zhǔn)備
提示:如果友友你沒有看過系列一的文章點擊這個鏈接:王者榮耀中一個英雄是怎么被產(chǎn)生的?(一)
我們現(xiàn)在功能比較多,所有為了讓程序運行起來比較直觀,我們需要創(chuàng)建一個Menu包,來定義一些操作的界面;

Menulogin是游戲選擇英雄皮膚,銘文和進入游戲的界面;代碼簡單易懂,我就不解釋了
package Menu;
import java.util.Scanner;
public class Menulogin {
public static int Menulogin(){
System.out.println("*****備戰(zhàn)選擇*****");
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("參數(shù)錯誤,嘗試重新連接"); 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是攻擊目標(biāo)野怪的菜單,主要是通過選擇野怪,并且完成擊殺,獲得金幣
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.藍(lán)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是玩家是進入裝備頁面,購買裝備,增加全方位屬性,目前只實現(xiàn)了抵抗之靴,反甲,暗影戰(zhàn)斧
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.暗影戰(zhàn)斧");
System.out.println("4.極寒風(fēng)暴");
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 皮膚選擇界面設(shè)計
我們主要是后端設(shè)計,所有我們分析分析一下,如何實現(xiàn)一個皮膚。
如果友友玩過王者榮耀,那么你一定知道,不管一個皮膚有多貴,它可以固定給穿戴的英雄加20點的攻擊力,我是亞瑟的皮膚,所以加20點物理攻擊。如果創(chuàng)建了一個法師英雄,那么加20點法術(shù)攻擊。花里胡哨的皮膚,其實底層實現(xiàn)很容易,就是建模,美工比較折磨人。

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. 亞瑟-心靈戰(zhàn)警 ");
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("亞瑟穿上了“亞瑟-心靈戰(zhàn)警 ”皮膚");
int phyattack =20;
return phyattack;
}
}
沒錯,這是我的想法,如果你感興趣,可以在自己創(chuàng)造新的,牛,開掛的皮膚。哈哈哈
2.2 如何將皮膚屬性賦給英雄
這個十分簡單,我們只需要拿到所選的皮膚返回值,然后將該返回值賦給英雄的基礎(chǔ)攻擊力就實現(xiàn)了屬性賦予。
代碼如下:
if(menulogin.Menulogin()==1){
int num = Yaseisskin.Yaseisskin();
yase.setPhyattack(yase.getPhyattack()+num);
System.out.println("皮膚穿戴成功!");
System.out.println(yase.getName()+"當(dāng)前屬性為"+" 金幣 "+yase.getMoney()+" 物理攻擊 "+yase.getPhyattack()+" 血量 "+yase.getBlood()+" 移速 "+yase.getMove()
);
}

四個皮膚具體實現(xiàn):
原皮 :亞瑟-圣騎之力 無加成
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;
}碎片兌換皮膚:亞瑟-心靈戰(zhàn)警
private static int Thirdskin(){
System.out.println("亞瑟穿上了“亞瑟-心靈戰(zhàn)警 ”皮膚");
int phyattack =20;
return phyattack;
}
三、沒有牛的英雄技能,玩?zhèn)€錘子!
3.1 確定英雄技能效果
我們實現(xiàn)好皮膚后,點擊進入游戲,那么,我們玩什么,當(dāng)然是刷怪,打人,推塔(打人,推塔在系列三開始實現(xiàn))。我現(xiàn)在創(chuàng)建的英雄是亞瑟。 亞瑟有三個技能和一個被動技能;(被動技能我沒有實現(xiàn),因為木有好想法,友友快快幫忙?。? **第一個技能:**
//亞瑟的一技能
public static int[] Firstable(boolean Redbuff){ //給技能一個參數(shù),如果有紅buff或藍(lán)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內(nèi)無法釋放技能。
res[3] = 1;//標(biāo)志1為該技能的效果是可以沉默;
return res;
}
第二個技能實現(xiàn):
//亞瑟的二技能
public static int[] Secondable(boolean Redbuff,boolean bluebuff){ //給技能一個參數(shù),如果有紅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){ //有藍(lán)buff
time1 = 6000;
res1[3]=time1;
}
return res1;
}
第三個技能實現(xiàn):
//亞瑟的三技能
public static int[] Thirdable(boolean Redbuff,boolean bluebuff){ //給技能一個參數(shù),如果有紅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){ //有藍(lán)buff
time2 = 10000;
res2[0]=phyattack ;
res2[1]=blood ;
res2[2]=move ;
res2[3]=time2;
}
return res2;
}
3.2 英雄技能使用
**利用技能菜單,完成技能的使用,**
int flag=menulogin.Menulogin(); //游戲開始標(biāo)記符;
Boolean red = false;
Boolean blue = false; //默認(rèn)英雄初始是沒有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("當(dāng)前使用一技能誓約之盾!");
arr = Firstable(red);
break;
case 2:
System.out.println("當(dāng)前使用二技能回旋打擊!");
arr = Secondable(red, blue);
break;
case 3:
System.out.println("當(dāng)前使用二技能圣劍裁決!");
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("系統(tǒng)錯誤");
}
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("系統(tǒng)錯誤");
}
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()+"當(dāng)前屬性為"+" 金幣 "+yase.getMoney()+" 物理攻擊 "+yase.getPhyattack()+" 血量 "+yase.getBlood()+" 移速 "+yase.getMove()
+" 當(dāng)前技能冷卻時間 "+arr[3]+"ms");
}
里面嵌套了裝備購買和刷怪的代碼實現(xiàn),代碼十分基礎(chǔ),聰明的友友你一定看的懂。
刷野怪主要是給每個野怪設(shè)定了不同的金幣數(shù)量,然后通過Switch,進行判斷。
buff是根據(jù)返回值,來確定當(dāng)前是否有buff;
裝備購買的代碼原理一樣,調(diào)用裝備類,在購買裝備前先判斷經(jīng)濟是否滿足條件;
3.3 技能釋放演示

使用一技能:



四、光放技能有什么用,刷怪買裝備!
4.1 刷怪實現(xiàn)的方法
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("系統(tǒng)錯誤");
}
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("系統(tǒng)錯誤");
}
break;




總結(jié)
我完全是外行,這是通過自己的興趣來練習(xí)練習(xí)對象的使用和方法的調(diào)用,通過這種興趣與愛好的結(jié)合,我發(fā)現(xiàn)才可以主觀的學(xué)到更多知識,接下來我要使用比較難的,那就是多線程,并結(jié)合Web,來實現(xiàn)兩個英雄的戰(zhàn)斗!大家多多關(guān)注!不喜勿噴,嗚嗚嗚。
到此這篇關(guān)于我用java實現(xiàn)了王者榮耀的皮膚和英雄技能的文章就介紹到這了,更多相關(guān)java王者榮耀內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java實現(xiàn)哈希表的基本功能
- Java實現(xiàn)FTP文件上傳
- 教你用Java實現(xiàn)RSA非對稱加密算法
- java實現(xiàn)樹形菜單對象
- Java實現(xiàn)多線程中的靜態(tài)代理模式
- java實現(xiàn)Linux(centos) 中docker容器下命令交互的代碼(配置向?qū)В?/a>
- java實現(xiàn)表單必填參數(shù)驗證的方法
- 用Java實現(xiàn)24點游戲
- Java實現(xiàn)NIO聊天室的示例代碼(群聊+私聊)
- Java實現(xiàn)簡單的掃雷圖
- 圖文詳解JAVA實現(xiàn)快速排序
- 教你怎么使用Java實現(xiàn)WebSocket
- Java實現(xiàn)雪花算法的原理
- 教你怎么用Java實現(xiàn)給圖片打上水印
- 教你怎么用java實現(xiàn)客戶端與服務(wù)器一問一答
- Java實現(xiàn)學(xué)生信息管理系統(tǒng)IO版本
- Java實現(xiàn)學(xué)生成績管理系統(tǒng)
- Java數(shù)據(jù)結(jié)構(gòu)之實現(xiàn)跳表
相關(guān)文章
詳解Mybatis 傳遞參數(shù)類型為List的取值問題
這篇文章主要介紹了詳解Mybatis 傳遞參數(shù)類型為List的取值問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
URLConnection發(fā)送HTTP請求的方法_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了URLConnection發(fā)送HTTP請求的方法,主要介紹了如何通過Java(模擬瀏覽器)發(fā)送HTTP請求,有興趣的可以了解一下2017-07-07
MyBatis中的SQL映射文件如何配置參數(shù)映射和使用方法
MyBatis 是一種開源的 Java 持久化框架,它可以自動將數(shù)據(jù)庫中的數(shù)據(jù)映射到 Java 對象中,并且使得 Java 對象可以非常方便地存儲到數(shù)據(jù)庫中,本文將介紹 MyBatis 中 SQL 映射文件的參數(shù)映射配置和使用方法,需要的朋友可以參考下2023-07-07
Shiro整合Springboot和redis,jwt過程中的錯誤shiroFilterChainDefinition問
這篇文章主要介紹了Shiro整合Springboot和redis,jwt過程中的錯誤shiroFilterChainDefinition問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04
Mybatis-plus如何查詢返回對象內(nèi)有List<String>屬性
在使用Mybatis-Plus進行開發(fā)時,我們經(jīng)常會遇到需要處理一對多關(guān)系映射的情況,例如,查詢用戶數(shù)據(jù)時,可能需要同時獲取該用戶管理的所有小區(qū)名稱列表,這要求我們在返回的實體類中包含一個List<String>屬性,用于存放小區(qū)名稱,實現(xiàn)這一功能2024-10-10
spring?cloud中Feign導(dǎo)入jar失敗的問題及解決方案
這篇文章主要介紹了spring?cloud中Feign導(dǎo)入jar失敗的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
mybatis框架之mybatis中dao層開發(fā)的兩種方法
這篇文章主要介紹了mybatis框架之mybatis中dao層開發(fā)的兩種方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07

