Java控制台游戏~600行代码实现打怪小游戏(多图预警)

一,先放个启动界面(一些英雄,怪物技能介绍跟装备属性都写在里边):

二,在这个简单的小游戏里,你可以体验到:

1.打怪:

2.随机玩法寻宝:

3.英雄/Boos怪物/装备技能:

and其他
三,实现过程:
1.创建Hero类定义英雄属性

String name;//名称int hp;//生命值int MaxHp;//最大生命值int attackNum;//攻击力int skillType;//技能标号String skill;//技能描述int skillTimes;//技能可用次数boolean enable;//是否可用boolean Luckly;//幸运属性(曹操专属)String skillName;//技能名int weaponSkill;//武器技能标号(寒冰剑专属)boolean zqUsed;//再起是否可用(孟获专属)

2.创建Monster类定义怪物属性:

String name;//名称int hp;//生命值int MaxHp;//最大生命值int attackNum;//攻击力int skillType;//技能标号String skill;//技能描述String skillName;//技能名int skillTimes;//技能可用次数boolean sfUsed;//神愤是否可用(神鬼无双吕布专属)

3,创建Weapon类定义装备属性:

String name;//名称int damage;//伤害int addHp;//血量增值int addVihp;//村庄血量增值String skill;//技能描述String skillName;//技能名int skillType;//技能标号

4,创建Village类定义村庄属性:

int hp;

5,Hero类,Monster类,Weapon类分别实现相关攻击和技能方法

//英雄攻击方法public void attack(int hattackNum, Monster mo, Hero he, Weapon[] arrWeapon, Village vi, Monster[] arrMonster){Scanner sc = new Scanner(System.in);Random r = new Random();if (he.weaponSkill!=0){//不为默认值0则说明该英雄被拥有技能的武器赋过值(weaponType),则执行该武器技能(weaponSkill);switch (he.weaponSkill){case 1:System.out.println("您是否发动"+arrWeapon[4].name+"技能【"+arrWeapon[4].skill+"】?(键入“Q”发动技能,或按回车取消)");String w = sc.nextLine();int addVhp;if ("Q".equals(w) || "q".equals(w)) {//执行技能if ((attackNum/2)>50){addVhp=50;}else {addVhp=(attackNum/2);}vi.hp=vi.hp+addVhp;System.out.println("您取消了伤害并为村庄回复"+(he.Luckly==false? addVhp:addVhp/2)+"点生命值");//判断是否触发曹操技能System.out.println("!!!现在村庄的生命值是"+vi.hp);} else {mo.hp = mo.hp - hattackNum;System.out.println(mo.name + "受到" + hattackNum + "点伤害,血量为" + mo.hp + "...");if (mo.skillType==1){//神吕布技能时机mo.skills(mo, arrMonster);int damage = r.nextInt(51);he.hp=he.hp-damage;System.out.println(he.name + "受到" + damage + "点伤害,血量为" + he.hp + "...");}}}}else {mo.hp = mo.hp - hattackNum;System.out.println(mo.name + "受到" + hattackNum + "点伤害,血量为" + mo.hp + "...");if (mo.skillType==1){//神吕布技能时机mo.skills(mo, arrMonster);int damage = r.nextInt(51);he.hp=he.hp-damage;System.out.println(he.name + "受到" + damage + "点伤害,血量为" + he.hp + "...");}}}//英雄技能方法public void skills(Hero he,Monster mo){switch (skillType){case 1:System.out.println(he.name+"发动了技能"+he.skillName);System.out.println(he.skill);int AddAttack=((mo.MaxHp-mo.hp)/100)*50;mo.hp=mo.hp-(AddAttack+300);System.out.println(mo.name+"受到"+(AddAttack+300)+"点伤害,血量为"+mo.hp+"...");he.skillTimes=0;//技能次数用尽break;case 2:System.out.println(he.name+"发动了技能"+he.skillName);System.out.println(he.skill);int Attack= (int)((he.MaxHp)*0.4);mo.hp=mo.hp-Attack;he.hp=he.hp-(Attack/2);System.out.println("黄忠扣除了"+(Attack/2)+"点生命值,血量为"+he.hp+"...");System.out.println(mo.name+"受到"+Attack+"点伤害,血量为"+mo.hp+"...");he.skillTimes--;//技能次数减一break;case 3:System.out.println(he.name+"发动了技能"+he.skillName);System.out.println(he.skill);break;case 4:System.out.println(he.name+"发动了技能"+he.skillName);System.out.println(he.skill);he.hp=500;he.attackNum=120;he.zqUsed=false;//再起技能用尽break;}

6,定义Play类写入循环实现回合制

int num = 1;//回合数while(true) {if (mo.hp<=0&&mo.sfUsed==false) {System.out.println("您的英雄" + he.name + "战胜了怪物,成功守卫村庄!!!");isWin = true;break;}else if (mo.hp<=0&&mo.sfUsed==true){//神愤技能时机mo.skills(mo, arrMonster);System.out.println("您的对手"+mo.name+"已替换成"+arrMonster[2].name);mo.sfUsed=false;mo=arrMonster[2];}if(vi.hp<=0||he.hp<=0){break;}else{if (he.hp > 0 && vi.hp > 0||he.zqUsed==true) {System.out.println("*******************************************************************************");System.out.println("第" + num + "回合");

7,循环体内调用相关攻击,技能方法

public void skills(Hero he,Monster mo){switch (skillType){case 1:System.out.println(he.name+"发动了技能"+he.skillName);System.out.println(he.skill);int AddAttack=((mo.MaxHp-mo.hp)/100)*50;mo.hp=mo.hp-(AddAttack+300);System.out.println(mo.name+"受到"+(AddAttack+300)+"点伤害,血量为"+mo.hp+"...");he.skillTimes=0;//技能次数用尽break;case 2:System.out.println(he.name+"发动了技能"+he.skillName);System.out.println(he.skill);int Attack= (int)((he.MaxHp)*0.4);mo.hp=mo.hp-Attack;he.hp=he.hp-(Attack/2);System.out.println("黄忠扣除了"+(Attack/2)+"点生命值,血量为"+he.hp+"...");System.out.println(mo.name+"受到"+Attack+"点伤害,血量为"+mo.hp+"...");he.skillTimes--;//技能次数减一break;case 3:System.out.println(he.name+"发动了技能"+he.skillName);System.out.println(he.skill);break;case 4:System.out.println(he.name+"发动了技能"+he.skillName);System.out.println(he.skill);he.hp=500;he.attackNum=120;he.zqUsed=false;//再起技能用尽break;}

8,利用生成随机数制作搜寻宝物随机事件

Random ra = new Random();
int ran1 = ra.nextInt(x);//生成0~x(不包含x)的随机数

9,循环嵌套中写入各种技能时机

 he.weaponSkill=we.skillType;//为英雄装备技能赋初值,这个值会在Hero类attack方法被调用时,先判断改英雄是否拥有we.skillType这个值,以便确定是否拥有武器寒冰剑及其技能
System.out.println("&&您的英雄搜寻到了武器" + we.name + "攻击力加"+ (he.Luckly==false?/*判断是否为英雄曹操,若是则增益减半*/ we.damage:we.damage/2)+ "!");
he.attackNum = he.attackNum + (he.Luckly==false? we.damage:we.damage/2);
System.out.println("现在"+he.name+"的攻击力是"+he.attackNum);

10,编写启动界面,英雄,怪物,装备列表,使用数组保存参数

Monster mo3 = new Monster();arrMonster[3]=mo3;mo3.hp=2000;mo3.MaxHp=mo3.hp;mo3.name="【Boos】神吕布";mo3.attackNum=60;mo3.skillName="神愤";//技能名mo3.skillType=1;mo3.sfUsed=true;mo3.skill="【神愤:神吕布每次受到攻击,会对英雄反弹0~50点随机伤害;当神吕布战死,游戏不会结束,他会替换成吕布继续战斗!】";
Hero he4=new Hero();arrHero[4]=he4;he4.hp=200;he4.MaxHp=he4.hp;he4.name ="孟获";he4.attackNum=30;he4.enable=true;he4.skillName="再起";he4.skillType=4;he4.zqUsed=true;he4.skill="【再起:(限定技)当孟获处于濒死阶段,令其恢复生命值至500,调整攻击力为120;之后的每个英雄的结束阶段,孟获流失70点生命值】";
Hero he3=new Hero();arrHero[3]=he3;he3.hp=400;he3.MaxHp=he3.hp;he3.name ="曹操";he3.attackNum=30;he3.enable=true;he3.skillName="奸雄";he3.skillType=3;he3.skillTimes=0;he3.Luckly=true;he3.skill="【奸雄:(被动技)曹操搜寻到物品的概率提升为100%,但受到宝物的增益效果减半】";
Weapon we5 = new Weapon();arrWeapon[4]=we5;we5.name = "寒冰剑";we5.damage = 10;  //  5/33we5.skillName="寒冰";we5.skill="当您的英雄造成伤害后,您可以取消该伤害,改为为村庄回复基于该伤害50%的生命值";we5.skillType=1;

11,修饰完善

四,效果预览

没打过…(这个Boss得开个小挂,调一下参数才好打…)

五,代码
1.Hero类:

package com.bai.demo05;import java.util.Random;
import java.util.Scanner;public class Hero {String name;//名称int hp;//生命值int MaxHp;//最大生命值int attackNum;//攻击力int skillType;//技能标号String skill;//技能描述int skillTimes;//技能可用次数boolean enable;//是否可用boolean Luckly;//幸运属性(曹操专属)String skillName;//技能名int weaponSkill;//武器技能标号(寒冰剑专属)boolean zqUsed;//再起是否可用(孟获专属)//英雄攻击方法public void attack(int hattackNum, Monster mo, Hero he, Weapon[] arrWeapon, Village vi, Monster[] arrMonster){Scanner sc = new Scanner(System.in);Random r = new Random();if (he.weaponSkill!=0){//不为默认值0则说明该英雄被拥有技能的武器赋过值(weaponType),则执行该武器技能(weaponSkill);switch (he.weaponSkill){case 1:System.out.println("您是否发动"+arrWeapon[4].name+"技能【"+arrWeapon[4].skill+"】?(键入“Q”发动技能,或按回车取消)");String w = sc.nextLine();int addVhp;if ("Q".equals(w) || "q".equals(w)) {//执行技能if ((attackNum/2)>50){addVhp=50;}else {addVhp=(attackNum/2);}vi.hp=vi.hp+addVhp;System.out.println("您取消了伤害并为村庄回复"+(he.Luckly==false? addVhp:addVhp/2)+"点生命值");//判断是否触发曹操技能System.out.println("!!!现在村庄的生命值是"+vi.hp);} else {mo.hp = mo.hp - hattackNum;System.out.println(mo.name + "受到" + hattackNum + "点伤害,血量为" + mo.hp + "...");if (mo.skillType==1){//神吕布技能时机mo.skills(mo, arrMonster);int damage = r.nextInt(51);he.hp=he.hp-damage;System.out.println(he.name + "受到" + damage + "点伤害,血量为" + he.hp + "...");}}}}else {mo.hp = mo.hp - hattackNum;System.out.println(mo.name + "受到" + hattackNum + "点伤害,血量为" + mo.hp + "...");if (mo.skillType==1){//神吕布技能时机mo.skills(mo, arrMonster);int damage = r.nextInt(51);he.hp=he.hp-damage;System.out.println(he.name + "受到" + damage + "点伤害,血量为" + he.hp + "...");}}}//英雄技能方法public void skills(Hero he,Monster mo){switch (skillType){case 1:System.out.println(he.name+"发动了技能"+he.skillName);System.out.println(he.skill);int AddAttack=((mo.MaxHp-mo.hp)/100)*50;mo.hp=mo.hp-(AddAttack+300);System.out.println(mo.name+"受到"+(AddAttack+300)+"点伤害,血量为"+mo.hp+"...");he.skillTimes=0;//技能次数用尽break;case 2:System.out.println(he.name+"发动了技能"+he.skillName);System.out.println(he.skill);int Attack= (int)((he.MaxHp)*0.4);mo.hp=mo.hp-Attack;he.hp=he.hp-(Attack/2);System.out.println("黄忠扣除了"+(Attack/2)+"点生命值,血量为"+he.hp+"...");System.out.println(mo.name+"受到"+Attack+"点伤害,血量为"+mo.hp+"...");he.skillTimes--;//技能次数减一break;case 3:System.out.println(he.name+"发动了技能"+he.skillName);System.out.println(he.skill);break;case 4:System.out.println(he.name+"发动了技能"+he.skillName);System.out.println(he.skill);he.hp=500;he.attackNum=120;he.zqUsed=false;//再起技能用尽break;}}
}

2.HeroMonsterAndWeapon类:

package com.bai.demo05;
import java.util.Scanner;
public class HeroMonsterAndWeapon {public  void HAndM() {Hero[] arrHero=new Hero[10]; Monster[] arrMonster=new Monster[10]; Weapon[] arrWeapon=new Weapon[10];//英雄Hero he0 = new Hero();arrHero[0]=he0;he0.hp = 10000;he0.MaxHp=he0.hp;he0.name = "测试";he0.attackNum=70;he0.enable=true;he0.skillName="null";he0.skillType=0;he0.skillTimes=0;he0.skill="【测试技能为空】";//用于测试,不参与选择列表Hero he1 = new Hero();arrHero[1]=he1;he1.hp = 1500;he1.MaxHp=he1.hp;he1.name = "甘宁";he1.attackNum=70;he1.enable=true;he1.skillName="奇袭";he1.skillType=1;he1.skillTimes=1;he1.skill="【奇袭:(限定技)甘宁发出蓄力一击,扣除怪物300点生命值,怪物已损失生命值每超过100,这个伤害将追加50】";Hero he2=new Hero();arrHero[2]=he2;he2.hp=500;he2.MaxHp=he2.hp;he2.name ="黄盖";he2.attackNum=40;he2.enable=true;he2.skillName="苦肉";he2.skillType=2;he2.skillTimes=3;he2.skill="【苦肉:扣除自身最大生命值的20%,对怪物造成双倍于这个数值的伤害!】";Hero he3=new Hero();arrHero[3]=he3;he3.hp=400;he3.MaxHp=he3.hp;he3.name ="曹操";he3.attackNum=30;he3.enable=true;he3.skillName="奸雄";he3.skillType=3;he3.skillTimes=0;he3.Luckly=true;he3.skill="【奸雄:(被动技)曹操搜寻到物品的概率提升为100%,但受到宝物的增益效果减半】";Hero he4=new Hero();arrHero[4]=he4;he4.hp=200;he4.MaxHp=he4.hp;he4.name ="孟获";he4.attackNum=30;he4.enable=true;he4.skillName="再起";he4.skillType=4;he4.zqUsed=true;he4.skill="【再起:(限定技)当孟获处于濒死阶段,令其恢复生命值至500,调整攻击力为120;之后的每个英雄的结束阶段,孟获流失70点生命值】";//怪物Monster mo0 = new Monster();arrMonster[0]=mo0;mo0.hp = 10000;mo0.MaxHp=mo0.hp;mo0.name = "无名小卒";mo0.attackNum = 1;//用于测试,不参与选择列表Monster mo1 = new Monster();arrMonster[1]=mo1;mo1.hp = 1500;mo1.MaxHp=mo1.hp;mo1.name = "沙摩柯";mo1.attackNum = 30;Monster mo2 = new Monster();arrMonster[2]=mo2;mo2.hp=1200;mo2.MaxHp=mo2.hp;mo2.name="吕布";mo2.attackNum=40;Monster mo3 = new Monster();arrMonster[3]=mo3;mo3.hp=2000;mo3.MaxHp=mo3.hp;mo3.name="【Boos】神吕布";mo3.attackNum=60;mo3.skillName="神愤";//技能名mo3.skillType=1;mo3.sfUsed=true;mo3.skill="【神愤:神吕布每次受到攻击,会对英雄反弹0~50点随机伤害;当神吕布战死,游戏不会结束,他会替换成吕布继续战斗!】";//村庄Village vi = new Village();vi.hp = 1000;//宝物Weapon we1 = new Weapon();arrWeapon[0]=we1;we1.name = "麒麟弓";we1.damage = 30;  //  15/33Weapon we2 = new Weapon();arrWeapon[1]=we2;we2.name="白银狮子";we2.addHp=200;  //  5/33Weapon we3 = new Weapon();arrWeapon[2]=we3;we3.name="折戟";we3.damage=10;  //  3/33Weapon we4 = new Weapon();arrWeapon[3]=we4;we4.name="家园守卫";we4.addVihp=200;  //  5/33Weapon we5 = new Weapon();arrWeapon[4]=we5;we5.name = "寒冰剑";we5.damage = 10;  //  5/33we5.skillName="寒冰";we5.skill="当您的英雄造成伤害后,您可以取消该伤害,改为为村庄回复基于该伤害50%的生命值";we5.skillType=1;SelsctHAndM se = new SelsctHAndM();se.select(arrHero,arrMonster,arrWeapon,vi);//se.select(he1,he2,he3,he4,mo0,mo1,mo2,mo3,vi,we1,we2,we3,we4);}
}

3.Monster类:

package com.bai.demo05;public class Monster {String name;//名称int hp;//生命值int MaxHp;//最大生命值int attackNum;//攻击力int skillType;//技能标号String skill;//技能描述String skillName;//技能名int skillTimes;//技能可用次数boolean sfUsed;//神愤是否可用(神鬼无双吕布专属)public void attack(int mattackNum,Hero he){int damage=mattackNum;//伤害值=初始伤害he.hp=he.hp-damage;System.out.println("^你的英雄"+he.name+"受到"+damage+"点伤害,血量为"+he.hp+"...");}public void destory(int mattackNum,Village vi){int damage=mattackNum*2;//对村庄造成双倍伤害vi.hp=vi.hp-damage;System.out.println("^村庄受到"+damage+"点伤害,血量为"+vi.hp+"...");}public void skills(Monster mo,Monster[] arrMonster){switch (skillType) {case 1://神吕布技能System.out.println(mo.name + "发动了技能" + mo.skillName);System.out.println(mo.skill);break;}}
}

4.Play类:

package com.bai.demo05;import java.util.Random;
import java.util.Scanner;public class Play {public void play(Monster mo, Hero he, Village vi, Weapon[] arrWeapon, Hero[] arrHero, Monster[] arrMonster){Random r = new Random();boolean isWin = false;Scanner sc = new Scanner(System.in);int num = 1;//回合数while(true) {if (mo.hp<=0&&mo.sfUsed==false) {System.out.println("您的英雄" + he.name + "战胜了怪物,成功守卫村庄!!!");isWin = true;break;}else if (mo.hp<=0&&mo.sfUsed==true){//神愤技能时机mo.skills(mo, arrMonster);System.out.println("您的对手"+mo.name+"已替换成"+arrMonster[2].name);mo.sfUsed=false;mo=arrMonster[2];}if(vi.hp<=0||he.hp<=0){break;}else{if (he.hp > 0 && vi.hp > 0||he.zqUsed==true) {System.out.println("*******************************************************************************");System.out.println("第" + num + "回合");if (num % 2 != 0) {//英雄回合System.out.println("您的回合");System.out.println("在本回合,您可以选择搜寻宝物或者直接攻击怪物(键入“1”搜寻宝物,或按回车直接攻击怪物)");Scanner sc2 = new Scanner(System.in);String q = sc2.nextLine();if ("1".equals(q)) {System.out.println("搜寻中......");int ran1 = r.nextInt(1000);int ran2 = r.nextInt(321);if (he.Luckly==true){//曹操技能时机he.skills(he,mo);ran1=ran2;}if (ran1 <=320) {if (ran1<149) {Weapon we=arrWeapon[0];System.out.println("&&您的英雄搜寻到了武器" + we.name + "攻击力加"+ (he.Luckly==false? we.damage:we.damage/2)+ "!");he.attackNum = he.attackNum + (he.Luckly==false? we.damage:we.damage/2);System.out.println("现在"+he.name+"的攻击力是"+he.attackNum);}else if (ran1>=150&&ran1<=199){Weapon we=arrWeapon[4];he.weaponSkill=we.skillType;//为英雄装备技能赋初值,这个值会在Hero类attack方法被调用时,先判断改英雄是否拥有we.skillType这个值,以便确定是否拥有武器寒冰剑及其技能System.out.println("&&您的英雄搜寻到了武器" + we.name + "攻击力加"+ (he.Luckly==false?/*判断是否为英雄曹操,若是则增益减半*/ we.damage:we.damage/2)+ "!");he.attackNum = he.attackNum + (he.Luckly==false? we.damage:we.damage/2);System.out.println("现在"+he.name+"的攻击力是"+he.attackNum);}else if (ran1>=200&&ran1<=249) {Weapon we = arrWeapon[1];System.out.println("&&您的英雄搜寻到了装备" + we.name + "生命值增加" +(he.Luckly==false? we.addHp:we.addHp/2) + "!");he.hp=he.hp+(he.Luckly==false? we.addHp:we.addHp/2);System.out.println("现在"+he.name+"的生命值是"+he.hp);}else if(ran1>=250&&ran1<=279) {Weapon we = arrWeapon[2];System.out.println("&&您的英雄搜寻到了糟糕的武器" + we.name + "攻击力重置为" + we.damage + "!");he.attackNum = we.damage;System.out.println("现在"+he.name+"的攻击力是"+he.attackNum);}else if(ran1>=280&&ran1<=320) {Weapon we = arrWeapon[3];System.out.println("&&您的英雄搜寻到了宝物" + we.name + "为村庄恢复" +(he.Luckly==false? we.addVihp:we.addVihp/2)+"点生命值!");vi.hp=vi.hp+(he.Luckly==false? we.addVihp:we.addVihp/2);System.out.println("!!!现在村庄的生命值是"+vi.hp);}//技能时机if (he.skillTimes==0){System.out.println("回合结束...");if ("孟获".equals(he.name)&&he.zqUsed==false){//孟获技能【再起】负面效果时机he.hp=he.hp-70;System.out.println("孟获流失了70点生命值,血量为:"+he.hp);}num++;} else{System.out.println("您的技能剩余次数为"+he.skillTimes);System.out.println("您是否发动您的技能?(键入“Q”发动技能,或按回车取消)");String w = sc.nextLine();if ("Q".equals(w) || "q".equals(w)) {he.skills(he, mo);//发动技能System.out.println("回合结束...");if ("孟获".equals(he.name)&&he.zqUsed==false){//孟获技能【再起】负面效果时机he.hp=he.hp-70;System.out.println("孟获流失了70点生命值,血量为:"+he.hp);}num++;} else {System.out.println("回合结束...");if ("孟获".equals(he.name)&&he.zqUsed==false){//孟获技能【再起】负面效果时机he.hp=he.hp-70;System.out.println("孟获流失了70点生命值,血量为:"+he.hp);}num++;}}}else {System.out.println("搜寻了个寂寞...没有找到任何宝物...");//}//技能时机if (he.skillTimes==0){if ("孟获".equals(he.name)&&he.zqUsed==false){//孟获技能【再起】负面效果时机he.hp=he.hp-70;System.out.println("孟获流失了70点生命值,血量为:"+he.hp);}System.out.println("回合结束...");num++;} else{System.out.println("您的技能剩余次数为"+he.skillTimes);System.out.println("您是否发动您的技能?(键入“Q”发动技能,或按回车取消)");String w = sc.nextLine();if ("Q".equals(w) || "q".equals(w)) {he.skills(he, mo);//发动技能System.out.println("回合结束...");if ("孟获".equals(he.name)&&he.zqUsed==false){//孟获技能【再起】负面效果时机he.hp=he.hp-70;System.out.println("孟获流失了70点生命值,血量为:"+he.hp);}num++;} else {System.out.println("回合结束...");if ("孟获".equals(he.name)&&he.zqUsed==false){//孟获技能【再起】负面效果时机he.hp=he.hp-70;System.out.println("孟获流失了70点生命值,血量为:"+he.hp);}num++;}}}}else {System.out.println("&&您的英雄" + he.name + "发起了攻击");he.attack(he.attackNum,mo,he,arrWeapon,vi,arrMonster);//技能时机if (he.skillTimes==0){System.out.println("回合结束...");if ("孟获".equals(he.name)&&he.zqUsed==false){//孟获技能【再起】负面效果时机he.hp=he.hp-70;System.out.println("孟获流失了70点生命值,血量为:"+he.hp);}num++;} else{System.out.println("您的技能剩余次数为"+he.skillTimes);System.out.println("您是否发动您的技能?(键入“Q”发动技能,或按回车取消)");String w = sc.nextLine();if ("Q".equals(w) || "q".equals(w)) {he.skills(he, mo);//发动技能System.out.println("回合结束...");if ("孟获".equals(he.name)&&he.zqUsed==false){//孟获技能【再起】负面效果时机he.hp=he.hp-70;System.out.println("孟获流失了70点生命值,血量为:"+he.hp);}num++;} else {System.out.println("回合结束...");if ("孟获".equals(he.name)&&he.zqUsed==false){//孟获技能【再起】负面效果时机he.hp=he.hp-70;System.out.println("孟获流失了70点生命值,血量为:"+he.hp);}num++;}}}}else {//怪兽回合System.out.println("怪物" + mo.name + "回合");int ran2 = r.nextInt(2);if (ran2 == 0) {System.out.println("##怪物" + mo.name + "对村庄发起了攻击");mo.destory(mo.attackNum,vi);num++;} else {System.out.println("##怪物" + mo.name + "对英雄" + he.name + "发起了攻击");mo.attack(mo.attackNum,he);if (he.hp<=0){if (he.zqUsed==true){//再起技能时机he.skills(he, mo);}}num++;}}}}}if (isWin==false){System.out.println("===============================================================================");System.out.println("战败...");System.out.println("很遗憾,您输给了自大...");System.out.println("按Enter继续尝试...");sc.nextLine();new Start().main(null);}else {System.out.println("按Enter再来一局...");sc.nextLine();new Start().main(null);}}
}

5.SelsctHAndM类:

package com.bai.demo05;public class Start {public static void main(String[] args) {//规则介绍System.out.println("游戏规则:回合制游戏,您胜利的条件是:在怪物" +"摧毁村庄前击败他,如果您死亡或村庄被摧毁,则游戏失败...");System.out.println("【怪物】:每回合会随机攻击英雄或者村庄," +"注意:怪物对村庄造成双倍伤害");System.out.println("【村庄】:这里住着您的子民,请一定保护村庄不被摧毁!");System.out.println("【搜寻】:每个你的回合,您可以选择搜寻宝物或者直接攻击怪兽," +"每次搜寻都有有30%的几率搜寻到宝物," +"也会有3%概率搜寻到糟糕的物品(糟糕的物品会造成一定的减益效果)," +"搜寻到宝物会为您提供增益,但也会浪费您一个回合!物品掉落概率及其效果如下:");System.out.println("1.您有15%的几率搜寻到麒麟弓并使攻击力增加30;");System.out.println("2.您有3%的几率搜寻到折戟,这是一件糟糕的武器,会将您的攻击力减少至10;");System.out.println("3.您有5%的几率搜寻到白银狮子,恢复您的英雄200生命值;");System.out.println("4.您有5%的几率搜寻到家园守卫,恢复您的村庄200生命值;");System.out.println("5.您有5%的几率搜寻到寒冰剑,寒冰剑拥有装备技能:当您的英雄造成伤害后,您可以取消该伤害," +"改为为村庄回复基于该伤害50%的生命值;");System.out.println("技能:您可以在任意您的结束回合使用您的技能," +"但技能有使用次数限制(限定技甚至只能用一次),请合理利用");System.out.println("===============================================================================");System.out.println("游戏开始......");new HeroMonsterAndWeapon().HAndM();}
}

6.Village类:

package com.bai.demo05;public class Village {int hp;
}

7.Weapon类:

package com.bai.demo05;
public class Weapon {String name;//名称int damage;//伤害int addHp;//血量增值int addVihp;//村庄血量增值String skill;//技能描述String skillName;//技能名int skillType;//技能标号
}

Java控制台游戏~600行代码实现打怪小游戏相关推荐

  1. 【java】百行代码 实现2048小游戏

    2048的代码不是我写的,是从牛客网的项目平台找到的项目 项目代码链接(代码放在了文章最后) https://git.nowcoder.com/11000160/2048-java/blob/mast ...

  2. Golang 控制台百行代码贪吃蛇小游戏

    Golang 并不适合在前端工作,缺少强大的图形图像包和硬件加速包,更适合做成后台服务程序.本文的贪吃蛇小游戏运行与控制台上,其中调用了Window系统kernel32.dll中控制台相关的函数. 项 ...

  3. Android 300行代码实现经典小游戏贪吃蛇

    前言 贪吃蛇算是一个非常经典的小游戏了,本人00后,初次游玩是在小时候用诺基亚手机进行游玩的.这次算是复刻一下经典hhh,贪吃蛇算是一个制作起来非常简单的小游戏,本文使用Kotlin语言进行开发,用J ...

  4. 如何用不到200行代码实现经典小游戏贪吃蛇,附源代码及详细实现思路

    不多废话,直接上链接 链接:https://pan.baidu.com/s/1ZKtVNhzR4fIzNZSGWgFKQw?pwd=zglt  提取码:zglt 有需要的好兄弟们可以直接取用,想要了解 ...

  5. 赛车小游戏c语言代码,网页赛车小游戏(纯JavaScript编写)

    赛车(改良版) 利用js实现以下功能: 在四个赛道随记生成路障,其移动速度随用户生存的时间增加而增加 用户可以通过方向键或者A.D键控制用户小车左右移动,躲避路障 当路障与用户小车碰撞,游戏结束 实时 ...

  6. java2048小游戏源码及解析_200行java代码实现2048小游戏

    本文实例为大家分享了java实现2048小游戏的具体代码,供大家参考,具体内容如下 效果图: 游戏介绍: 1.2048是一款益智类小游戏,刚开始随机出现两个数字,可以上下左右控制数字的移动. 2.当选 ...

  7. python猜拳小游戏代码200行左右_python简单小游戏代码,python简单小游戏代码200行...

    如何看懂python杨辉三角代码? 第一步先找规律,抽象化问题.首先我们观察到,第一行为[1],我们直接赋给一个变量:初始化数列 p = [1].核心点是这个除去首位两个 [1] 的中间部分:[p[0 ...

  8. python小游戏代码大全-20行python代码的入门级小游戏的详解

    背景: 作为一个python小白,今天从菜鸟教程上看了一些python的教程,看到了python的一些语法,对比起来(有其他语言功底),感觉还是非常有趣,就随手添了一点内容,改了一个小例程,当着练练手 ...

  9. python小游戏-16行代码实现3D撞球小游戏!-源码下载

    python小游戏-16行代码实现3D撞球小游戏!-源码下载 所属网站分类: 资源下载 > python小游戏 作者:搞笑 链接: http://www.pythonheidong.com/bl ...

最新文章

  1. 成都Uber优步司机奖励政策(1月7日)
  2. Apache Flink 1.10.0 发布 | 云原生生态周报 Vol. 38
  3. boost::statechart模块实现无效结果复制测试
  4. timed_waiting线程是否占用cpu_程序CPU占用率飙升,如何定位线程的堆栈信息?超详细,值得收藏看不懂还有配套视频 第319篇...
  5. html头部尾部分离组件引入(JQ)
  6. JAVA之运算符优先级
  7. Visual Studio Code 编辑器使用
  8. c++多线程——线程启动
  9. Redis命令拾遗四——集合类型(命令补充)
  10. java计算机毕业设计技术的游戏交易平台源码+数据库+系统+lw文档+mybatis+运行部署
  11. 干货满满,图文详解 HDFS 的 工作机制 及其原理
  12. STM32USB虚拟串口驱动 支持win10下载
  13. 使用ffmpeg对视频、图片进行旋转,上下翻转,水平翻转
  14. html下载链接引入element-ui
  15. 管路流体仿真matlab,MathWorks 在 Simscape 中新增建模和仿真流体系统功能
  16. 6m缓存和8m缓存差距_全能工具箱一款专门为安卓设备研发的综合型系统管理工具。实时内存、进程清理、缓存清理、SD卡文件管理、历史记录清除、开机项管理!...
  17. Texworks中文论文编辑排版优秀
  18. Flutter唤醒屏幕(Android)
  19. 每日涨停个股增量加入股票池,持续跟踪走势!股票量化分析工具QTYX-V2.6.5
  20. vue自定义指令复制内容

热门文章

  1. M,BB面试+职业求教
  2. PHP jqGrid 表格数据更新帮助代码
  3. 微信小程序:背景图片电脑开发时可以显示,手机测试时无法显示
  4. html引起qq加好友,QQ被限制加好友怎么办如何避免加好友限制
  5. Visual Studio Code (Ubuntu)安装与配置
  6. VScode 完整安装、配置及完全卸载
  7. 手游平台源码有什么用处?
  8. 养生之道---六字气决
  9. 【Web】CSS实现鼠标悬停实现显示与隐藏 特效
  10. 免费PDF转JPG的开源软件