EBU4201(2021/22) Lab5 Q1

这个博客展示了如何使用Java编程创建一个怪物战斗模拟器。`TestingMonster`类管理一组怪物,包括`Monster`、`Dragon`和`Troll`子类。每个怪物有不同的攻击和移动行为。`Dragon`有概率喷火造成高伤害,而`Troll`在初始化时会检查名字。程序通过循环战斗直到总伤害达到100。

 附:TestingMonster代码段

import java.util.*;

/**
 *  Title      : TestingMonsters.java
 *  Description: This class is the test class for Monsters.
 *  @author  Laurissa Tokarchuk
 *  @version 1.0
 *  @author  Paula Fonseca
 *  @version 1.1
 */
public class TestingMonsters {
  public static void main(String[] args) {
    ArrayList<Monster> monsters = new ArrayList<Monster>();

    monsters.add(new Monster("Tom"));
    monsters.add(new Monster("George"));

    monsters.add(new Dragon("Smaug"));
    monsters.add(new Dragon("Jabosh"));

    monsters.add(new Troll("Salomon"));
    monsters.add(new Troll("Bender"));

    int damageDone = 0;
    while (damageDone < 100) {
      for (Monster m : monsters) {
        m.move((int)(Math.random()*4) + 1);
 damageDone += m.attack();
      }
    }
  }
}

java程序

代码1:Monster.java

//import java.lang.runtime.SwitchBootstraps;

public class Monster {
    public String name;

    public Monster(String name) {
        this.name = name;
    }

    public int attack() {
        int x = (int) (Math.random() * 5 + 1);
        System.out.println(this.name + ", of type "
                + getClass() + ", attacks generically: "
                + x + " points damage caused. ");
        return x;
    }

    public void move(int direction) {
        switch(direction) {
            case 1: {
                System.out.println(this.name +" is moving 1 step North. ");
                break;
            }
            case 2:{
                System.out.println(this.name +" is moving 1 step East. ");
                break;
            }
            case 3:{
                System.out.println(this.name +" is moving 1 step South. ");
                break;
            }
            default:
                System.out.println(this.name +" is moving 1 step West. ");
                break;
        }
    }
}

代码2:Dragon.java


public class Dragon extends Monster{
    public Dragon(String name){
        super(name);
        this.name = name;
    }

    @Override
    public int attack() {
        int probability = (int)(Math.random()*10 + 1);
        int x;
        if(probability <= 3) {
            x = (int) (Math.random()*50 + 1);
            System.out.println(this.name + ", of type "+ getClass()
            + ", attacks bby breathing fire: " + x
            + " points damage caused. ");
        }
        else {
            x = super.attack();
        }
        return x;
    }
}

代码3:Troll.java

public class Troll extends Monster{
    public Troll(String name){
        super(name);
        if(name.equals("Saul") || name.equals("Salomon")){
            System.out.println("This name is not available." );
            this.name = "Detritus";
        }
    }
    public String name(){
        return this.name;
    }
}

代码4:TestingMonster.java

import java.util.*;
public class TestingMonster {
    public static void main(String[] args){
        ArrayList<Monster> monsters = new ArrayList<Monster>();

        monsters.add(new Monster("Tom"));
        monsters.add(new Monster("George"));

        monsters.add(new Dragon("Smaug"));
        monsters.add(new Dragon("Jabosh"));

        monsters.add(new Troll("Salomon"));
        monsters.add(new Troll("Bender"));

        int damageDone = 0;
        while (damageDone < 100) {
            for (Monster m : monsters) {
                m.move((int)(Math.random()*4) + 1);
                damageDone += m.attack();
            }
        }
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值