- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- 我用java實(shí)現了王者榮耀的皮膚和英雄技能
提示:如果友友你沒(méi)有看過(guò)系列一的文章點(diǎn)擊這個(gè)鏈接:
我們現在功能比較多,所有為了讓程序運行起來(lái)比較直觀(guān),我們需要創(chuàng )建一個(gè)Menu包,來(lái)定義一些操作的界面;
Menulogin是游戲選擇英雄皮膚,銘文和進(jìn)入游戲的界面;代碼簡(jiǎn)單易懂,我就不解釋了
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 :進(jìn)入游戲"); 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 :自動(dòng)平A"); System.out.println("按10 :攻擊野怪"); System.out.println("按11 :購買(mǎi)裝備"); 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是攻擊目標野怪的菜單,主要是通過(guò)選擇野怪,并且完成擊殺,獲得金幣
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.小鳥(niǎo)"); System.out.println("3.河蟹"); System.out.println("4.小兵"); System.out.println("5.炮車(chē)"); System.out.println("6.紅buff"); System.out.println("7.藍buff"); System.out.println("10.進(jìn)入技能頁(yè)面"); System.out.println("11.進(jìn)入裝備頁(yè)面"); 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("無(wú)效操作"); return 12; } } }
Menuzhuangbei是玩家是進(jìn)入裝備頁(yè)面,購買(mǎi)裝備,增加全方位屬性,目前只實(shí)現了抵抗之靴,反甲,暗影戰斧
package Menu; import java.util.Scanner; public class Menuzhuangbei { //裝備頁(yè)面 public static int Menuzhuangbei(){ System.out.println("++++++++++++++++++++++"); System.out.println("1.抵抗之靴"); System.out.println("2.反甲"); System.out.println("3.暗影戰斧"); System.out.println("4.極寒風(fēng)暴"); System.out.println("5.破軍"); System.out.println("6.碎星錘"); System.out.println("7.魔女斗篷"); System.out.println("10.進(jìn)入技能頁(yè)面"); System.out.println("11.進(jìn)入刷怪頁(yè)面"); 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; } } }
我們主要是后端設計,所有我們分析分析一下,如何實(shí)現一個(gè)皮膚。
如果友友玩過(guò)王者榮耀,那么你一定知道,不管一個(gè)皮膚有多貴,它可以固定給穿戴的英雄加20點(diǎn)的攻擊力,我是亞瑟的皮膚,所以加20點(diǎn)物理攻擊。如果創(chuàng )建了一個(gè)法師英雄,那么加20點(diǎn)法術(shù)攻擊?;ɡ锖诘钠つw,其實(shí)底層實(shí)現很容易,就是建模,美工比較折磨人。
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; } }
沒(méi)錯,這是我的想法,如果你感興趣,可以在自己創(chuàng )造新的,牛逼,開(kāi)掛的皮膚。哈哈哈
這個(gè)十分簡(jiǎn)單,我們只需要拿到所選的皮膚返回值,然后將該返回值賦給英雄的基礎攻擊力就實(shí)現了屬性賦予。
代碼如下:
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() ); }
四個(gè)皮膚具體實(shí)現:
原皮 :亞瑟-圣騎之力 無(wú)加成
private static int Yuanshenskin(){ System.out.println("亞瑟穿上了“亞瑟-圣騎之力”皮膚"); int phyattack =0; return phyattack; }
賽季皮膚:亞瑟-獅心王
private static int Secondskin(){ System.out.println("亞瑟穿上了“亞瑟-獅心王 ”皮膚"); int phyattack =20; return phyattack; }
活動(dòng)皮膚:亞瑟-死亡騎士
private static int Firstskin(){ System.out.println("亞瑟穿上了“亞瑟-死亡騎士”皮膚"); int phyattack =20; return phyattack; }
碎片兌換皮膚:亞瑟-心靈戰警
private static int Thirdskin(){ System.out.println("亞瑟穿上了“亞瑟-心靈戰警 ”皮膚"); int phyattack =20; return phyattack; }
我們實(shí)現好皮膚后,點(diǎn)擊進(jìn)入游戲,那么,我們玩什么,當然是刷怪,打人,推塔(打人,推塔在系列三開(kāi)始實(shí)現)。我現在創(chuàng )建的英雄是亞瑟。 亞瑟有三個(gè)技能和一個(gè)被動(dòng)技能;(被動(dòng)技能我沒(méi)有實(shí)現,因為木有好想法,友友快快幫忙?。? **第一個(gè)技能:**
//亞瑟的一技能 public static int[] Firstable(boolean Redbuff){ //給技能一個(gè)參數,如果有紅buff或藍buff,那么技能屬性就會(huì )提升 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{ //無(wú)紅buff int phyattack = 100; int blood = 0; int move = 100; res[0]=100; res[1]=0; res[2]=100; } //一技能特殊屬性,沉默英雄,也就是說(shuō),被擊中的英雄2s內無(wú)法釋放技能。 res[3] = 1;//標志1為該技能的效果是可以沉默; return res; }
第二個(gè)技能實(shí)現:
//亞瑟的二技能 public static int[] Secondable(boolean Redbuff,boolean bluebuff){ //給技能一個(gè)參數,如果有紅buff,那么技能屬性就會(huì )提升 int[] res1 = new int[4]; int phyattack = 300; int blood = 0; int move = 50; int time1 = 7000; // 每7s ,一個(gè)二技能 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; }
第三個(gè)技能實(shí)現:
//亞瑟的三技能 public static int[] Thirdable(boolean Redbuff,boolean bluebuff){ //給技能一個(gè)參數,如果有紅buff,那么技能屬性就會(huì )提升 int[] res2 = new int[4]; int phyattack = 600; int blood = 0; int move = 50; int time2 = 12000; //每12s一個(gè)三技能 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; }
**利用技能菜單,完成技能的使用,**
int flag=menulogin.Menulogin(); //游戲開(kāi)始標記符; Boolean red = false; Boolean blue = false; //默認英雄初始是沒(méi)有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){ //進(jìn)入裝備購買(mǎi)頁(yè)面 case 1: Shoe shoe = new Shoe(); if(yase.getMoney()>=200){ System.out.println(yase.name+"購買(mǎi)了"+shoe.name); yase.phyfangyu+=shoe.getPhyattack(); yase.move+=shoe.getMove(); yase.money=yase.money-200; }else{ System.out.println("金幣不足,無(wú)法購買(mǎi)"+shoe.name); };break; case 2: Fajia fajia = new Fajia(); if(yase.getMoney()>=1200){ System.out.println(yase.name+"購買(mǎi)了"+fajia.name); yase.phyattack+=fajia.getPhyattack(); //攻擊力+ yase.phyfangyu+=fajia.getPhyfanyu(); //防御力+ yase.money=yase.money-1200; }else { System.out.println("金幣不足,無(wú)法購買(mǎi)"+fajia.name); };break; case 3: Anyinzhanfu anyinzhanfu = new Anyinzhanfu(); if(yase.getMoney()>=2000){ System.out.println(yase.name+"購買(mǎi)了"+anyinzhanfu.name); yase.phyattack+=anyinzhanfu.getPhyattack(); //攻擊力+ yase.blood+=anyinzhanfu.getBlood(); //生命力+ yase.money=yase.money-2000; }else { System.out.println("金幣不足,無(wú)法購買(mǎi)"+anyinzhanfu.name); } break; case 10: case 11: default: System.out.println("系統錯誤"); } break; case 4: return; default: System.out.println("自動(dòng)平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() +" 當前技能冷卻時(shí)間 "+arr[3]+"ms"); }
里面嵌套了裝備購買(mǎi)和刷怪的代碼實(shí)現,代碼十分基礎,聰明的友友你一定看的懂。
刷野怪主要是給每個(gè)野怪設定了不同的金幣數量,然后通過(guò)Switch,進(jìn)行判斷。
buff是根據返回值,來(lái)確定當前是否有buff;
裝備購買(mǎi)的代碼原理一樣,調用裝備類(lèi),在購買(mǎi)裝備前先判斷經(jīng)濟是否滿(mǎ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("系統錯誤"); } break;
程序運行演示:
int res2 = menuzhuangbei.Menuzhuangbei(); switch (res2){ //進(jìn)入裝備購買(mǎi)頁(yè)面 case 1: Shoe shoe = new Shoe(); if(yase.getMoney()>=200){ System.out.println(yase.name+"購買(mǎi)了"+shoe.name); yase.phyfangyu+=shoe.getPhyattack(); yase.move+=shoe.getMove(); yase.money=yase.money-200; }else{ System.out.println("金幣不足,無(wú)法購買(mǎi)"+shoe.name); };break; case 2: Fajia fajia = new Fajia(); if(yase.getMoney()>=1200){ System.out.println(yase.name+"購買(mǎi)了"+fajia.name); yase.phyattack+=fajia.getPhyattack(); //攻擊力+ yase.phyfangyu+=fajia.getPhyfanyu(); //防御力+ yase.money=yase.money-1200; }else { System.out.println("金幣不足,無(wú)法購買(mǎi)"+fajia.name); };break; case 3: Anyinzhanfu anyinzhanfu = new Anyinzhanfu(); if(yase.getMoney()>=2000){ System.out.println(yase.name+"購買(mǎi)了"+anyinzhanfu.name); yase.phyattack+=anyinzhanfu.getPhyattack(); //攻擊力+ yase.blood+=anyinzhanfu.getBlood(); //生命力+ yase.money=yase.money-2000; }else { System.out.println("金幣不足,無(wú)法購買(mǎi)"+anyinzhanfu.name); } break; case 10: case 11: default: System.out.println("系統錯誤"); } break;
我完全是外行,這是通過(guò)自己的興趣來(lái)練習練習對象的使用和方法的調用,通過(guò)這種興趣與愛(ài)好的結合,我發(fā)現才可以主觀(guān)的學(xué)到更多知識,接下來(lái)我要使用比較難的,那就是多線(xiàn)程,并結合Web,來(lái)實(shí)現兩個(gè)英雄的戰斗!大家多多關(guān)注!不喜勿噴,嗚嗚嗚。
到此這篇關(guān)于我用java實(shí)現了王者榮耀的皮膚和英雄技能的文章就介紹到這了,更多相關(guān)java王者榮耀內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。
Copyright ? 2009-2021 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 珠海市特網(wǎng)科技有限公司 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站