又是抄代码的一天 每日更新 转载 https://blog.csdn.net/weixin_44170221/article/details/104574963
做一个代码小游戏
创建NamedRole抽象类
package magic;
import aoi.Role;
public abstract class NamedRole implements Role{
private String name;
private int age;
public NamedRole(String name) {
this.name = name;
}
public NamedRole(int age) {
this.age = age;
}
public NamedRole(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int attack() {
return 0;
}
@Override
public void practise() {
}
}
创建Role 接口
package aoi;
public interface Role {
public int attack(); // 表示攻击,返回值表示对敌人的伤害
public void practise(); //表示练习。练习之后对敌人的伤害会增加
}
先写法师
创建MagicStick 接口
package aoi;
public interface MagicStick {
public int fire(); //表示法师使用法杖
}
在创建BlackStick和GreenStick类
用来判段一年之内什么时间段来修炼的若如果6到8月份修炼等级加2级
其他就加1级
package magic;
import aoi.MagicStick;
import java.util.Date;
public class BlackStick implements MagicStick {
Date d=new Date();
@Override
public int fire() {
if (d.getMonth() %2==0){
return 2;
}
return 1;
}
}
```bash
import aoi.MagicStick;
import java.util.Date;
public class GreenStick implements MagicStick {
Date d=new Date();
@Override
public int fire() {
if (d.getMonth()>=6&&d.getMonth()<=8){
return 2;
}
return 1;
}
}
创建Magicer类来在测试界面传入值
写了判断法师是否装备法杖如果装备 攻击力等于修炼后的等级*5也就是如果装备法杖法师的修炼等级会提高从而攻击力增加。
package magic;
import aoi.MagicStick;
public class Magicer extends NamedRole{
private int level;//等级
private MagicStick stick;//是否佩戴法杖
public Magicer(String name) {
super(name);
}
public Magicer(int age) {
super(age);
}
public Magicer(String name, int age,int level) {
super(name, age);
this.level=level;
}
public int attack() {
return level * 5;
}
public void practise() {
level++;
if (stick != null) {
level += stick.fire();
}
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
if (level<1||level>10){
System.out.println("等级错误");
return;
}
this.level = level;
}
public MagicStick getStick() {
return stick;
}
public void setStick(MagicStick stick) {
this.stick = stick;
}
}
测试类法师
MagicStick magicStick1 = new GreenStick();
MagicStick magicStick2 = new BlackStick();
Magicer magicer1 = new Magicer("基拉法师", 21, 10);
Magicer magicer2 = new Magicer("光鳞龙", 15, 5);
magicer1.setStick(magicStick1);
magicer2.setStick(magicStick2);
System.out.println(magicer1.getName() + "\t" + "年龄:" + magicer1.getAge() + "\t" + "初始攻击伤害:" + magicer1.attack()+"\t"+"等级"+magicer1.getLevel());
System.out.println(magicer2.getName() + "\t" + "年龄:" + magicer2.getAge() + "\t" + "初始攻击伤害:" + magicer2.attack()+"\t"+"等级"+magicer2.getLevel());
magicer1.practise();
magicer2.practise();
System.out.println(magicer1.getName() + "\t" + "年龄:" + magicer1.getAge() + "\t" + "修炼后的攻击伤害:" + magicer1.attack()+"\t"+"等级"+magicer1.getLevel());
System.out.println(magicer2.getName() + "\t" + "年龄:" + magicer2.getAge() + "\t" + "修炼后的攻击伤害:" + magicer2.attack()+"\t"+"等级"+magicer2.getLevel());
结果
基拉法师 年龄:21 初始攻击伤害:50 等级10
光鳞龙 年龄:15 初始攻击伤害:25 等级5
基拉法师 年龄:21 修炼后的攻击伤害:65 等级13
光鳞龙 年龄:15 修炼后的攻击伤害:40 等级8
这是是7月的修炼经验
为什么是3级因为修炼就会加一级在加上应为月份增加的2个等级所以就是三级
战士
创建Weapon接口和法师的一样就是战斗力的增加变成了根据年龄和姓名
public interface Weapon {
public void setSoldier(Soldier s); //该方法表示设置武器的使用者
public int fire(); //该方法的返回值表示战士使用该武器时,对敌人的伤害值
}
创建两个兵器类
Pike和Bolo类
大刀
package magic;
import aoi.Weapon;
import java.nio.file.Watchable;
public class Bolo implements Weapon { //武器大刀
private Soldier s;//武器持有者
//private int age;
@Override
public void setSoldier(Soldier s) {
this.s=s;
}
public Soldier getS() {
return s;
}
public void setS(Soldier s) {
this.s = s;
}
@Override
public int fire() {
if (s.getAge() >= 18) {
return 100;
} else {
return 50;
}
}
}
创建长矛类Pike
package magic;
import aoi.Weapon;
public class Pike implements Weapon {
private Soldier s;//武器持有者
private String name;//要输入的武器名称
public Pike(String name) {
this.name=name;
}
public Soldier getS() {
return s;
}
public void setS(Soldier s) {
this.s = s;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void setSoldier(Soldier s) {
this.s=s;
}
@Override
public int fire() {
s = new Soldier(name);
if (s.getName().equals(name)) {
return 1000;
} else {
return 25;
}
}
}
创建Soldier类
package magic;
import aoi.Weapon;
public class Soldier extends NamedRole{
private Weapon weapon; //兵器名字
private int hurt;//伤害
public Soldier(String name) {
super(name);
}
public Soldier(int age) {
super(age);
}
public Soldier(String name, int age, int hurt) {
super(name, age);
this.hurt = hurt;
}
public Weapon getWeapon() {
return weapon;
}
public void setWeapon(Weapon weapon) {
this.weapon = weapon;
}
public int getHurt() {
return hurt;
}
public void setHurt(int hurt) {
this.hurt = hurt;
}
@Override
public int attack() {
int result = hurt;
if (weapon != null) {
result += weapon.fire();
}
return result;
}
@Override
public void practise() {
hurt += 10;
}
}
创建战士测试类
Soldier soldier1 = new Soldier("Ziph", 21, 200);
Soldier soldier2 = new Soldier("狂战士", 30, 150);
Weapon weapon1 = new Bolo();
Weapon weapon2 = new Pike("Ziph");
soldier1.setWeapon(weapon1);
soldier1.setWeapon(weapon2);
soldier2.setWeapon(weapon1);
soldier2.setWeapon(weapon2);
System.out.println(soldier1.getName() + "\t" + "年龄:" + soldier1.getAge() + "\t" + "佩戴了大刀和矛之后的攻击伤害:" + soldier1.attack());
System.out.println(soldier2.getName() + "\t" + "年龄:" + soldier2.getAge() + "\t" + "佩戴了大刀和矛之后的攻击伤害:" + soldier2.attack());
soldier1.practise();
soldier2.practise();
System.out.println(soldier1.getName() + "\t" + "年龄:" + soldier1.getAge() + "\t" + "佩戴了大刀和矛,加以修炼后的攻击伤害:" + soldier1.attack());
System.out.println(soldier2.getName() + "\t" + "年龄:" + soldier2.getAge() + "\t" + "佩戴了大刀和矛,加以修炼后的攻击伤害:" + soldier2.attack());
战士结果
Ziph 年龄:21 佩戴了大刀和矛之后的攻击伤害:1200
狂战士 年龄:30 佩戴了大刀和矛之后的攻击伤害:1150
Ziph 年龄:21 佩戴了大刀和矛,加以修炼后的攻击伤害:1210
狂战士 年龄:30 佩戴了大刀和矛,加以修炼后的攻击伤害:1160