2017-04-20 7 views
-3

Dears, Ich bin neu in Java und ich frage mich, ob ich einen Code schreiben kann, der den genauen Wert einer neuen Variablen aus verschiedenen Klassen erhalten wird. Ich möchte das int variable Monster berechnen lassen.JAVA: mit neuen Variablenwert aus verschiedenen Klassen

ORG int // private statisch int monterexp = elliador.monsters.getExp (monsters.exp);/ Ich möchte es von bestimmten Monster zählen lassen: private Static Int Monsterexp = elliador.Monsters.getExp (Monster. Zombie. Exp); Wenn Sie auch eine Technik teilen würden, wie Sie die "variable" Variable in den Code eingeben, wäre das großartig (ich meine, dass ich nicht Zombie schreiben müsste, aber es würde Zombie oder Hydra wählen, abhängig von der anderen Leere das wird das Monster wählen). Wahrscheinlich mische ich alles zusammen ... Vielen Dank für Ihre Unterstützung.

package elliador; 

import elliador.monsters; 


class source { 

private String name; 
private static int experience; 
private static int attack; 
private static int defense; 
private static int magic; 


private static int monsterexp = elliador.monsters.getExp(monsters.exp); 
private static int countofcreatures = 25; 
private static int earnexp = countofcreatures * monsterexp; 



public source(String name,int experience, int attack, int defense, int magic) { 

    this.name = name; 
    this.experience = experience; 
    this.attack = attack; 
    this.defense = defense; 
    this.magic = magic; 

} 

public void myhero() { 
    System.out.println("Name: " + getName() + " Experience: " + getExperience() + " Attack: " + getAttack() + " Defense: " + getDefense() + " Magic: " + getMagic()); 
} 

public String getName() { 
    return name; 
} 

public void setName() { 
    this.name = name; 
} 

public int getExperience() { 
    return experience; 
} 

public void setExperience() { 
    this.experience = experience + earnexp; 
} 

public int getAttack() { 
    return attack; 
} 

public void setAttack() { 
    this.attack = attack + 1; 
} 

public int getMagic() { 
    return magic; 
} 

public void setMagic() { 
    this.magic = magic + 1; 

} 

public int getDefense() { 
    return defense; 
} 

public void setDefense() { 
    this.defense = defense + 1; 
} 

} 

Klasse Monster

package elliador; 

import elliador.heroes; 

class monsters { 

private String name; 
private static int attack; 
private static int defense; 
private static int magic; 
public static int exp; 

public monsters(String name, int attack, int defense, int magic, int exp) { 

    this.name = name; 
    this.attack = attack; 
    this.defense = defense; 
    this.magic = magic; 
    this.exp = exp; 

} 

//*how to use specific monster in the int mentioned in description?*/ 
public static int getExp (int exp) { 
monsters zombie = new monsters("zombie",1,0,0,1); 
monsters hydra = new monsters("Hydra",20,12,3,2); 

return monsters.exp; 

} 



public static int getAttack (int attack) { 

monsters zombie = new monsters("zombie",1,0,0,1); 


//*monsters hydra = new monsters("Hydra",20,12,3,1); 
return monsters.attack; 
} 

} 

Klasse Helden

package elliador; 

import elliador.monsters; 

public class heroes { 

    public static void main (String[] args) throws InterruptedException { 
    source Olsen; 
    Olsen = new source("Olsen",0,1,1,1); 



    Integer i = new Integer(5); 
    Integer i2 = new Integer (5); 
    System.out.println(i.equals(i2)); 
    Olsen.myhero(); 
    Olsen.setExperience(); 
    Olsen.myhero(); 
    Olsen.setExperience(); 
    Olsen.myhero(); 
    Olsen.setAttack(); 
    Olsen.setMagic(); 
    Olsen.myhero();  
    } 

    } 
+0

Verwandle Monster in eine Sammlung. – LazerBanana

+2

formatieren Sie bitte Ihren Code richtig, es scheint, dass Sie noch nicht den ganzen Code formatiert haben. –

+1

Bitte geben Sie [mcve] an. –

Antwort

0

Erstellen Sie eine Klasse ein einzelnes Monster darstellt.

package elliador; 

class Monster { 

private String name; 
private int attack; 
private int defense; 
private int magic; 
private int exp; 

public Monster(String name, int attack, int defense, int magic, int exp) { 

    this.name = name; 
    this.attack = attack; 
    this.defense = defense; 
    this.magic = magic; 
    this.exp = exp; 

} 

public int getExp ({ 
return exp; 
} 



public int getAttack() { 
return attack; 
} 

} 

Lesen Sie die Kapselung und fügen Sie den Rest der Getter hinzu.

dann erstellen Sie eine Sammlung mit allen Monstern.

List<Monster> monsters = new ArrayList<>(); 

hinzufügen Monster

monsters.add(new Monster("Godzilla", 999, 999, 999, 999)); 

von Index spezifische Monster Get

monsters.get(0); 

Oder eine Klasse erweitern Sammlung erstellen und get-Methode außer Kraft setzt es etc namentlich

zu erhalten oder schaffen Eine Karte mit einem Schlüssel als Name und Statistiken als Liste von Attributen.

Das gleiche mit Helden, dann können Sie eine Klasse namens Game erstellen und tun, was Sie brauchen.

PS. Nach Java-Konventionen beginnen Klassennamen mit Großbuchstaben.

+0

Das gleiche Problem wie ich im Kommentar der Frage geschrieben habe: statische Variablen würden zu unerwarteten Werten führen, wenn mehr als ein "Monster" erstellt wird. –

+0

wow vielen dank! – TommyTom

+0

vergessen zu löschen statisch, ure rechts. – LazerBanana

Verwandte Themen