题目基本描述
/*
文字版格斗游戏
回合制游戏(A打一下B,B打一下A,直到一方HP为0结束)
tips:注意采用面向对象编程思想
Java标准类的设计
*/
主要目标
1设计一个角色类
注意设计成一个JavaBean(标准Java类)
(1)封装存放角色相关信息(名称,血量,攻击力,技能)
(2)封装存放角色相关方法(获取和设置各个变量的方法,攻击方法)
2设计攻击操作
每攻击一次,对方血量应该减去自己的攻击力
注意判断攻击后,对方血量是否低于0,如果是则把对方血量置为0
代码实现部分
Character类:
角色类
package object_oriented;
/*
角色类
变量包含姓名name,血量HP,攻击力AD,技能skill
方法包含攻击Attack()
角色数量num采用静态变量
*/
public class Character {
//姓名
private String name;
//血量
private int HP;
//攻击力
private int AD;
//技能
private String skill;
//角色数量
static int num = 0;
//默认构造方法
public Character() {
}
//带参数构造方法
public Character(String name, int HP, int AD, String skill) {
this.name = name;
this.HP = HP;
this.AD = AD;
this.skill = skill;
num++;//每有一个角色,角色数量加一
}
//设置名称
public void setName(String name) {
this.name = name;
}
//设置血量
public void setHP(int HP) {
this.HP = HP;
}
//设置攻击力
public void setAD(int AD) {
this.AD = AD;
}
//设置技能
public void setSkill(String skill) {
this.skill = skill;
}
//获取名称
public String getName() {
return this.name;
}
//获取血量
public int getHP() {
return this.HP;
}
//获取攻击力
public int getAD() {
return this.AD;
}
//获取技能
public String getSkill() {
return this.skill;
}
//攻击函数,攻击对手扣血,扣血量为攻击力,如果攻击后对手血小于等于0,则置为0
public void Attack(Character cha) {
cha.setHP(cha.getHP()-this.AD);
if (cha.getHP() <= 0)
cha.setHP(0);
}
}
FightGame类
(进行格斗操作,输出打印)(包含main函数)
其中添加了自己角色和对手角色选择的过程
package object_oriented;
import java.util.Scanner;
public class FightGame {
public static void main(String[] args) {
Character[] cha = new Character[30];
//系统预设角色
cha[0] = new Character("神里凌华", 100, 10,"神里流-霜灭");
cha[1] = new Character("雷电将军", 120, 8,"梦想一刀");
cha[2] = new Character("八重神子", 90, 11,"杀生樱");
cha[3] = new Character("那维莱特", 150, 5,"水枪");
cha[4] = new Character("枫原万叶", 110, 9,"千早振");
cha[5] = new Character("神里绫人", 130, 7,"神里流-水囿");
//System.out.println(Character.num);//调试时查看创建了多少个对象
//打印角色池
System.out.println("游戏中已有的角色:");
for (int i = 0; i < Character.num; i++) {
System.out.print(cha[i].getName()+" ");
}
//选择角色和对手
System.out.println('\n'+"请选择你的角色和你的对手(第一个是自己角色第二个是对手):");
Scanner sc =new Scanner(System.in);
String userName=sc.nextLine(),enemyName=sc.nextLine();
//创建用户和对手对象
Character userCha=new Character(),enemyCha=new Character();
//系统池中寻找选择的角色和对手
for (int i = 0; i < Character.num; i++) {
if (cha[i].getName().equals(userName))
userCha = cha[i];
if (cha[i].getName().equals(enemyName))
enemyCha = cha[i];
}
//输出双方角色信息
System.out.println("你的角色信息:");
System.out.println(userCha.getName()+" 血量:"+userCha.getHP()+" 攻击力:"+userCha.getAD()+" 技能:"+userCha.getSkill());
System.out.println("对手的信息:");
System.out.println(enemyCha.getName()+" 血量:"+enemyCha.getHP()+" 攻击力:"+enemyCha.getAD()+" 技能:"+enemyCha.getSkill());
//调用格斗函数,模拟格斗过程,输出结果
Fight(userCha,enemyCha);
}
//格斗函数,负责进行格斗处理,并输出格斗过程
public static void Fight(Character cha1,Character cha2){
while (true) {
//玩家攻击对手
cha1.Attack(cha2);
System.out.println(cha1.getName()+"使用了"+cha1.getSkill()+"对"+cha2.getName()+"造成了"+cha1.getAD()+"点伤害!");
System.out.println(cha1.getName()+"剩余血量:"+cha1.getHP()+'\n'+cha2.getName()+"剩余血量:"+cha2.getHP());
//判断对手血量是否为0,如果是则游戏结束,输出结果
if (cha2.getHP() == 0){
System.out.println("恭喜您胜利了");
break;
}
//对手攻击玩家
cha2.Attack(cha1);
System.out.println(cha2.getName()+"使用了"+cha2.getSkill()+"对"+cha1.getName()+"造成了"+cha2.getAD()+"点伤害!");
System.out.println(cha1.getName()+"剩余血量:"+cha1.getHP()+'\n'+cha2.getName()+"剩余血量:"+cha2.getHP());
//判断自己血量是否为0,如果是则游戏结束,输出结果
if (cha1.getHP() == 0){
System.out.println("很遗憾您输了");
break;
}
}
}
}
运行结果展示
(为方便截图,这里只将血量显示注释后的运行结果进行展示)