- 创建Van和孙尚香的类文件
public class Van//或者SunShangxiang
{
}
设置属性:变量和常量
格式:属性属于的类型 属性名字
变量:String classID/int ad
常量:final int classID=0.01//final为最终变量
//以此设置孙尚香和Van的名字、攻击力…各种对战时所需要的属性
//设置Van(孙尚香)角色的属性
String nameID;
int ad;
int ap;
int hp;
int lv;
- 将其放入类方法里来实现
格式:返回值类型 方法名 (参数类型 参数名){//方法名}
void 技能名(攻击对象类 攻击对象的名){
}
- 选定技能使用对象
public void ack_3(Van van){
}//其中van就是技能作用的对象,它是以对象的形式作为方法的参数
- 将其技能伤害值赋予一个num(由于伤害值可能是浮点数所以这里需要将其强制转化为整数)
int num=(int)(500+0.75*ad+125*lv)
- 用hp(血量)减少来表示技能造成的伤害效果
van.hp -=num;
- 输出技能使用结果
System.out.print(nameID+"使用技能攻了"+van.nameID);
System.out.println(van.nameID+"减少了"+num+"血量,还剩hp"+van.hp);
- 孙尚香类的技能:
对于目标范围内的敌人造成500/625/750(+75%物理加成)点物理伤害
//设置孙尚香的技能
public void ack_3(Van van) {
//孙尚香类的技能 :对于目标范围内的敌人造成500/625/750(+75%魔法加成)点魔法伤害
int num=(int)(500+0.75*ad+125*lv);//将结果强制转为整数型--小数点后全部直接省略
//计算一次技能攻击之后的血量
van.hp -=num;
//输出攻击结果
System.out.print(nameID+"使用技能攻击了"+van.nameID);
System.out.println(van.nameID+"减少了"+num+"血量,还剩hp"+van.hp);
}
- Van类的技能:
对范围内的敌人造成700/1000/1300(+90%物理加成)点物理伤害
//设置Van的技能
public void ack_3(SunShangxiang ssx) {
//Van类的技能 :对范围内的敌人造成700/1000/1300(+90%物理加成)点物理伤害
int num=(int)(700+0.9*ad+300*lv);//将结果强制转为整数型--小数点后全部直接省略
//计算一次技能攻击之后的血量
ssx.hp -=num;
//输出攻击结果
System.out.print(nameID+"使用技能攻击了"+ssx.nameID);
System.out.println(ssx.nameID+"减少了"+num+"血量,还剩hp"+ssx.hp);
}
- 参数:参数类型 参数名;
- 参数名:在方法中参数名是在方法被调用的时候传入的一个参数
它可以是一个数值也可以是一个对象,
而在这个方法中我们以对象van和ssx作为参数名
在调用技能的时候我们就将van和ssx的数据传入这个方法中
一个主函数就是一个程序–简单的PK程序也是如此
也就是创建使用的英雄这个对象
- 创建对象
关键字:new
格式:类名 对象名=关键字 类名
- 创建ssx和van对象
//首先创建双方的对象
SunShangxiang ssx=new SunShangxiang();
Van van=new Van();
也就是给我们创建角色各种属性来赋值
- 赋值格式:
hy.属性名字=赋值;–属性的赋值
- 给van和ssx赋值
//给两个对象属性赋值
ssx.nameID="孙尚香";
ssx.hp=10000;
ssx.ad=100;
ssx.ap=359;
ssx.lv=18;
van.nameID="佟大为";
van.hp=9854;
van.ad=342;
van.ap=108;
van.lv=10;
也就是在程序里面使用创建对象的方法
- 方法使用格式:
hy.方法名();--方法的引用
- ssx和van的技能的使用
ssx.ack_3(van);
van.ack_3(ssx);
在对战过程中我们需要多次互相的技能使用才能决一胜负,所以我们设计一个循环结构使他们循环PK
- 设计van和ssx的循环PK结构
//用while创建循环对战过程
while(ssx.hp>0&&van.hp>0) {
ssx.ack_3(van);
van.ack_3(ssx);
}
但是这样当一个人血量先小于零
时还会再次攻击这会导致双方血量都小于零不好判断最终对战结果
所以我们设计一个if判断语句使血量小于零的对象不可以再次攻击
- 添加一个if结构
//用while创建循环对战过程
while(ssx.hp>0&&van.hp>0) {
ssx.ack_3(van);
//为了保证孙尚香每次攻击之前血量都大于0
if(van.hp>0) {
van.ack_3(ssx);}
}
在PK游戏中谁的血量小于零谁就输了,所以我们使用一个if结构来判断谁输谁赢
- 判断胜负程序
//判断哪一方胜利
if(ssx.hp>0) {
System.out.print(ssx.nameID+"更勇!!");
}
else
{System.out.print(van.nameID+"更勇!!");}
由于需要第三个角色,所以我们需要先创建一个新的角色类
- 和上面创建角色类一样的方法
-设置属性:变量和常量
格式:属性属于的类型 属性名字
变量:String classID/int ad
常量:final int classID=0.01//final为最终变量
-技能格式:返回值类型 方法名 (参数类型 参数名){//方法名}
void 技能名(攻击对象类 攻击对象的名){
}
创建先辈类
//设置属性
String nameID;
int ad;
int hp;
int lv;
//设计技能
public void chouqidan() {
//田所浩二类的技能 :对于目标范围内的敌人造成500/625/750(+75%魔法加成)点魔法伤害
int num=(int)(500+0.75*ad+125*lv);
//技能造成伤害以血量减少实现
van.hp -=num;
//输出技能攻击结果
System.out.print(nameID+"使用臭气弹攻击力"+van.nameID);
System.out.println("使其减少了"+num+"的血量,王还hp还剩"+van.hp);
}
在这里会遇到一个问题—有两个可以攻击的对象
- 解决办法一 ---写两个一样的方法分别以另外两个对象为参数
//设计技能
public void chouqidan(Van van) {
//田所浩二类的技能 :对于目标范围内的敌人造成500/625/750(+75%魔法加成)点魔法伤害
int num=(int)(500+0.75*ad+125*lv);
//技能造成伤害以血量减少实现
van.hp -=num;
//输出技能攻击结果
System.out.print(nameID+"使用臭气弹攻击力"+van.nameID);
System.out.println("使其减少了"+num+"的血量,王还hp还剩"+van.hp);
}
public void chouqidan(SunShangxiang ssx) {
//田所浩二类的技能 :对于目标范围内的敌人造成500/625/750(+75%魔法加成)点魔法伤害
int num=(int)(500+0.75*ad+125*lv);
//技能造成伤害以血量减少实现
ssx.hp -=num;
//输出技能攻击结果
System.out.print(nameID+"使用臭气弹攻击力"+ssx.nameID);
System.out.println("使其减少了"+num+"的血量,王还hp还剩"+ssx.hp);
}
在另外两个类中也需要再加一个以先辈类对象为参数的方法
ssx
public void ack_3(Xianbei tiansuohaoer) {
//孙尚香类的技能 :对于目标范围内的敌人造成500/625/750(+75%魔法加成)点魔法伤害
int num=(int)(500+0.75*ad+125*lv);//将结果强制转为整数型--小数点后全部直接省略
//计算一次技能攻击之后的血量
tiansuohaoer.hp -=num;
//输出攻击结果
System.out.print(nameID+"使用技能攻击了"+tiansuohaoer.nameID);
System.out.println(tiansuohaoer.nameID+"减少了"+num+"血量,还剩hp"+tiansuohaoer.hp);
}
van
public void ack_3(Xianbei tiansuohaoer) {
//Van类的技能 :对范围内的敌人造成700/1000/1300(+90%物理加成)点物理伤害
int num=(int)(700+0.9*ad+300*lv);//将结果强制转为整数型--小数点后全部直接省略
//计算一次技能攻击之后的血量
tiansuohaoer.hp -=num;
//输出攻击结果
System.out.print(nameID+"使用技能攻击了"+tiansuohaoer.nameID);
System.out.println(tiansuohaoer.nameID+"减少了"+num+"血量,还剩hp"+tiansuohaoer.hp);
}
将新的角色类在对战程序中创建类
类比于上述角色类对象的创建
//加入第三个角色的属性用于擂台对战
tiansuohaoer.nameID="野兽先辈";
tiansuohaoer.ad=200;
tiansuohaoer.hp=2500;
tiansuohaoer.lv=3;
以if语句来通过判断血量值来判断谁胜谁负
//选出胜利的那一个英雄与另外一个英雄PK
if(ssx.hp>0) {
}
else {
}
再次用while语句来设置循环对战并分别加入if else语句中
分别设置循环对战
孙尚香与野兽先辈
while(ssx.hp>0&&tiansuohaoer.hp>0) {
ssx.ack_3(tiansuohaoer);
//为了保证田所浩二每次攻击之前血量都大于0
if(tiansuohaoer.hp>0) {
tiansuohaoer.chouqidan(ssx);}
}
Van和野兽先辈
while(tiansuohaoer.hp>0&&van.hp>0) {
tiansuohaoer.chouqidan(van);
//为了保证田所浩二每次攻击之前血量都大于0
if(tiansuohaoer.hp>0) {
tiansuohaoer.chouqidan(van);}
}
将其加入if else结构中组成选择和对战程序
//选出胜利的那一个英雄与另外一个英雄PK
if(ssx.hp>0) {
while(ssx.hp>0&&tiansuohaoer.hp>0) {
ssx.ack_3(tiansuohaoer);
//为了保证田所浩二每次攻击之前血量都大于0
if(tiansuohaoer.hp>0) {
tiansuohaoer.chouqidan(ssx);}
}
}
else {
while(tiansuohaoer.hp>0&&van.hp>0) {
tiansuohaoer.chouqidan(van);
//为了保证田所浩二每次攻击之前血量都大于0
if(tiansuohaoer.hp>0) {
tiansuohaoer.chouqidan(van);}
}
}
用if结构来判断最终的胜者
//判断哪一方胜利
//由于所需要判断的对象有三个,所以我使用三个if结构而不是if else结构来判断他们的胜利
if(ssx.hp>0) {
System.out.print(ssx.nameID+"更勇!!");
}
if(van.hp>0)
{System.out.print(van.nameID+"更勇!!");}
if(tiansuohaoer.hp>0)
{System.out.print(tiansuohaoer.nameID+"更勇!!");}