Eu tenho um projeto Java que me obriga a ter duas classes chamados: Pokemon.java e Move.java para que eu possa adicionar novos Pokemon e seus movimentos. Eu já escrevi todos os métodos que foram necessários para o projeto, mas estou tendo problemas armazenar e modificar os movimentos, especificamente o método forgetMove na classe Pokemon.
Aqui está o código para Pokemon.java:
public class Pokemon
{
// Private constants
private static final int MAX_HEALTH = 100;
private static final int MAX_MOVES = 4;
private String name;
private int health;
private Move move;
// Write your Pokemon class here
public Pokemon(String theName, int theHealth)
{
name = theName;
if(theHealth <= MAX_HEALTH)
{
health = theHealth;
}
}
public String getName()
{
return name;
}
public int getHealth()
{
return health;
}
public boolean hasFainted()
{
if(health <= 0)
{
return true;
}
else
{
return false;
}
}
public boolean canLearnMoreMoves()
{
if(Move.getNumOfMoves() < 4)
{
return true;
}
else
{
return false;
}
}
public boolean learnMove(Move move)
{
if(canLearnMoreMoves())
{
this.move = move;
return true;
}
else
{
return false;
}
}
public void forgetMove(Move other)
{
if(Move.equals(other))
{
move -= other;
}
}
public String toString()
{
return name + " (Health: " + health + " / " + MAX_HEALTH + ")";
}
}
e aqui está o código para Move.java:
public class Move
{
// Copy over your Move class into here
private static final int MAX_DAMAGE = 25;
private static String name;
private static int damage;
public static int numMoves;
public Move(String theName, int theDamage)
{
name = theName;
if(theDamage <= MAX_DAMAGE)
{
damage = theDamage;
}
numMoves++;
}
public static String getName()
{
return name;
}
public static int getDamage()
{
return damage;
}
public static int getNumOfMoves()
{
return numMoves;
}
public String toString()
{
return name + " (" + damage + " damage)";
}
// Add an equals method so we can compare Moves against each other
public static boolean equals(Move other)
{
if(name.equals(other.getName()))
{
return true;
}
else
{
return false;
}
}
}
Aqui está o código para PokemonTester.java:
public class PokemonTester extends ConsoleProgram
{
public void run()
{
Pokemon p1 = new Pokemon("Charrizard", 100);
Move m1 = new Move("Flamethrower", 90);
System.out.println(p1);
System.out.println(m1);
}
}
Isto parece que poderia ser a lição de casa para que eu não vou dar-lhe uma implementação completa .
Se você está simplesmente preenchendo os métodos necessários para o Pokemon e classe Mover, gostaria de começar por repensar a forma como você está armazenando movimentos.
O getNumOfMoves
fornece um indício de que sua classe Pokemon deve armazenar mais do que um movimento, uma maneira comum de fazer isso é com matrizes ou listas .
Se tiver guardado os seus movimentos em uma lista, a função forgetMove pode ser parecido com este:
public void forgetMove(Move other){
moves.remove(other);
}