开发者

External Method call help

开发者 https://www.devze.com 2023-03-28 15:53 出处:网络
So what im trying to do is to call an external method upon an object, its a bit trickier than I expected and am having problems properly implementing it.

So what im trying to do is to call an external method upon an object, its a bit trickier than I expected and am having problems properly implementing it. The method is:

attack(Player victim)

The method needs to call a hit() method on an object; then if the hit() method was successful (test this through a boolean?):

  • use an if statement to call a damage() method upon the object to determine the damage

  • call takeDamage() upon (PlayerVictim) to inflict the damage.

Here's the player class that ive coded so far; the attack() method is at the bottom. My main question is how to use an external method(s) damage() on the currentWeapon and takeDamage() on Player Victim

public class Player
{
   private String myPlayerName;
   private Weapon myWeapon;
   private int myCurrentHealth;
   private int myMaxHealth;
   private int myNumPotions;


    /**
     * Constructor initializing class Player
     * Parameters of the player should be:
     * player name, players initial health, the players weapon.
     */
    public Player(String myPlayer, int initialHealth, Weapon currentWeapon) {
        myPlayerName = myPlayer;
        this.myWeapon = currentWeapon;
        myMaxHealth = 30; 
        myCurrentHealth = initialHealth;
        myNumPotions = 0;       
    }

    /**
     * Attack method which attacks opposing player
     * with current equipped weapon.
     */
    public void attack(Player victim) {
        currentWeapon.hit();
        if (boolean currentWeapon.hit() = true) {
            currentWeapon.damage(int dam);
            return dam;

        }
        Player victim.takeDamage(int damage);

    }


}

and the weapon class:

import java.util.Random;
public class Weapon
{
    private int myHitProb;
    private int myMaxDamage;
    private Random myRNG;

    /**
     * Create a new weapon with a hit probability and damage
     */
    public Weapon(int hitProb, int dama开发者_Python百科ge) {
        myHitProb = hitProb;
        myMaxDamage = damage;
        myRNG = new Random();
    }

    public boolean hit() {

        int r = myRNG.nextInt(100);

        if (r < myHitProb) {
            return true;
        }
        else {
            return false;
        }
    }

    public int damage() {
        int dam = myRNG.nextInt(myMaxDamage) + 1;        
        return dam;
    }
}


Your attack() method may be many things, but compilable java it is not.
Perhaps this is what you meant:

public void attack(Player victim) {
    if (currentWeapon.hit()) {
        victim.takeDamage(currentWeapon.damage());
    }
}

Try to remember this guideline: If it seems hard, you're probably doing it the wrong way (unless you're working on the Mars Lander program :) )

0

精彩评论

暂无评论...
验证码 换一张
取 消