Klasseninstanzen zufällig aufrufen

Azazel

Mitglied
Guten Tag,

Ich bin dabei ein Textadventure zu coodieren, nun hat mich jemand darauf aufmerksam gemacht, dass es viel mehr bringen würde, Klassen für meinen Code einzuführen.
Ich habe mich noch mal an die Arbeit gemacht und meinen Code neu angefangen(Siehe Code).
Java:
import java.util.Random;
import java.util.Scanner;

public class player {
  
   static Scanner input = new Scanner(System.in);
   static Random rand = new Random();
  
   static int playerHp = 200;
   static int playerDmg = 20;
   static int enemyDmg;

   public static void main(String[] args){
     enemy gegner1 = new enemy(100, 50, 50);
     enemy gegner2 = new enemy(80, 40, 40);
    
    
    
   }
}
class enemy{
  
   Random rand = new Random();
  
   String[] enemys = {"gegner1","gegner2"};
  
   int enemyHp;
   int enemyPlusDmg;
   int enemyDmg;
  
   enemy(int Hp, int Dmg, int PlusDmg){
     this.enemyHp = Hp;
     this.enemyDmg = Dmg;
     this.enemyPlusDmg = PlusDmg;
   }

}

Nun weiss ich aber nicht, wie ich zufällig eins von den beiden gegnertypen aufrufen kann.
Ich weiss auch nicht, wie ich danach Googeln soll, denn Klassen in ein Array umwandeln kann man nicht.
Es muss also eine andere Methode her.
 
Zuletzt bearbeitet von einem Moderator:

Jardcore

Top Contributor
nun hat mich jemand darauf aufmerksam gemacht, dass es viel mehr bringen würde, Klassen für meinen Code einzuführen
Hehe, das muss wohl ich gewesen sein :)
Klassenname werden in Java übrigens groß geschrieben :p
Vielleicht kann ich dir ein wenig helfen.

Eine Klasse ist sowas wie ein Bauplan für ein konkretes Objekt. Eine konkrete Enemy Klasse erstellst du mit dem Schlüsselwort "new" (was du ja schon gemacht hast)

Ich habe dir hier mal ein kleines unkommentiertes Grundkonzept erstellt. Schaus dir an und frage nach wenn du etwas nicht weißt oder wo du eine Erklärung brauchst.

Java:
public class GameStarter {
    public static void main(String[] args) {
        new Game();
    }
}
Java:
public class Game {
    private Player player;
    private List<Enemy> enemies = new ArrayList<>();

    public Game() {
        player = new Player(666, 30, 1.5);
        enemies.add(new Enemy(200, 20, 1));
        enemies.add(new Enemy(200, 20, 1));
    }

}
Java:
public class Entity {
   private int health;
   private float damageMultiplier;
   private int damage;

   public Entity(int health, int damage, float damageMultiplier) {
       this.health = health;
       this.damage= damage;
       this.damageMultiplier= damageMultiplier;
   }

   public int getHealth() {
       return health;
   }

   public void setDamageMultiplier(float damageMultiplier) {
       this.damageMultiplier = damageMultiplier;
   }

   public float getDamage() {
       return damage * damageMultiplier;
   }
}
Java:
public class Enemy extends Entity {
   public Enemy(int health, int damage, float damageMultiplier) {
       super(health, damage, damageMultiplier);
   }
}
Java:
public class Player extends Entity {
   public Enemy(int health, int damage, float damageMultiplier) {
       super(health, damage, damageMultiplier);
   }
}
 

Azazel

Mitglied
Guten Tag Jardcore,
Ich danke dir vielmals für deine Mühe.
Dass ich erst jetzt, 4 Tage später zurückschreibe liegt nicht daran, dass ich mal alle 4 Tage hier rein schaue, sondern, dass ich auf jeden deiner sozusagen Tipps eingegangen bin und mich im Internet noch mal informiert hatte.
Z.B. habe ich in meinem Javabuch etwas über die Klasse LinkedList() erfahren.
Ich habe auch noch mal ein neues Packet erstellt und deine Klassen übernommen.
Ein paar Fragen hätte ich dennoch.

1. Wieso für jedes Objekt/Klasse eine eigene Textdatei(public class).
Könnte man nicht evtl. alles in eine Textdatei packen(class) ?
Ich weiss das alle das so machen, also die getrennt von einander halt, aber muss man das theoretisch ?

2. Ich habe etwas über die LinkedList() Klasse in meinem Buch erfahren, aber ich verstehe nicht, wieso man die List() Klasse auch noch benuzt.
private List<Enemy> enemies = new ArrayList<>();
 

Jardcore

Top Contributor
Könnte man nicht evtl. alles in eine Textdatei packen(class) ?
Ich weiss das alle das so machen, also die getrennt von einander halt, aber muss man das theoretisch ?
Das unterstützt Java nicht, bzw. nur Teilweise. Und vor Allem führt das zu schlechten Code.
2. Ich habe etwas über die LinkedList() Klasse in meinem Buch erfahren, aber ich verstehe nicht, wieso man die List() Klasse auch noch benuzt.
Wenn du darüber was gelesen hast, solltest du wissen das List die Oberklasse von LinkedList ist und ArrayList z.B. auch eine Unterklasse von List ist.
Es kommt immer darauf an was man gerade benötigt. Eine Linked List gibt dir die Möglichkeit von einem gespeicherten Objekt zurück zum vorherigen zu springen, das braucht man aber nicht immer und erzeugt nur overhead. Hier kannst du z.B sehen was den Unterschied macht.
https://github.com/benblack86/java-snippets/blob/master/resources/java_collections.pdf
Falls du das O(x) nicht verstehst, kannst du mal nach O-Notation googeln :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Mehrere Klasseninstanzen ueber Attribut sortieren? Java Basics - Anfänger-Themen 2
W n verschiedene Arrays zufällig ausgeben - mit der Random-Klasse? Java Basics - Anfänger-Themen 8
J Ein Wort aus einer Datei zufällig ermitteln Java Basics - Anfänger-Themen 3
L Werte zufällig aus Array zurückgeben Java Basics - Anfänger-Themen 15
CptK Variablen Teile eines Arrays zufällig sortieren Java Basics - Anfänger-Themen 7
J Klassen Math && Random: wie zufällig sind Zufallszahlen? Java Basics - Anfänger-Themen 19
J Zusammenzählen von zufällig generierten Zahlen in Java? Java Basics - Anfänger-Themen 16
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
K Array zufällig befüllen Java Basics - Anfänger-Themen 4
K Zweidimensionales Array erstellen und zufällig mit 0 und 1 füllen Java Basics - Anfänger-Themen 11
B ArrayList zufällig befüllen Java Basics - Anfänger-Themen 1
C Wert aus Array zufällig wählen Java Basics - Anfänger-Themen 2
H Zufällig generierte Zahlen auf Eingabe prüfen Java Basics - Anfänger-Themen 5
L Elemente zufällig in ein Array verteilen Java Basics - Anfänger-Themen 12
S Jede Reihenfolge einer zufällig langen Liste ausprobieren Java Basics - Anfänger-Themen 3
T Erste Schritte Int Array zufällig mit Zahlen füllen Java Basics - Anfänger-Themen 7
M ArrayList zufällig ausgeben Java Basics - Anfänger-Themen 4
M 3x3 - Array mit Zahlen von 0-8 zufällig belegen Java Basics - Anfänger-Themen 4
K arraylist zufällig aufteilen Java Basics - Anfänger-Themen 5
C OOP Aus Vektor zufällig einen Eintrag wählen und in Array[][] schreiben Java Basics - Anfänger-Themen 5
walker23m Datentypen Zufällig umsortieren einer Hashmap(random?) Java Basics - Anfänger-Themen 3
L JList Aktualisieren funktioniert nur Zufällig Java Basics - Anfänger-Themen 3
D Array zufällig mit 1 oder 0 oder mit true oder false füllen Java Basics - Anfänger-Themen 5
G ZUfällig "ja" "nein" oder "vielleic Java Basics - Anfänger-Themen 7
bugmenot Zufällig einen Boolschen Wert erzeugen. Java Basics - Anfänger-Themen 8
E Zahl zufällig verteilen Java Basics - Anfänger-Themen 13
I Arrays zufällig ausgeben Java Basics - Anfänger-Themen 5
T Karten zufällig anordnen Java Basics - Anfänger-Themen 4
feuervogel feld zufällig sortieren Java Basics - Anfänger-Themen 5
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
D Switch Case Methode aufrufen Java Basics - Anfänger-Themen 3
D Länge einer Liste aufrufen. Java Basics - Anfänger-Themen 19
M methode aufrufen ohne parameter Java Basics - Anfänger-Themen 1
N Klassen Methoden anderer Klassen aufrufen Java Basics - Anfänger-Themen 4
M variable in anderer funktion aufrufen Java Basics - Anfänger-Themen 10
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
D Methode aus dem Aufrufer aufrufen Java Basics - Anfänger-Themen 1
M Andere Methoden in anderen Klassen aufrufen Java Basics - Anfänger-Themen 11
ashi Variablen aufrufen Java Basics - Anfänger-Themen 17
P Mit dem Scanner Klassen aufrufen Java Basics - Anfänger-Themen 3
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
D Array in Main Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
W Verschiedene Methoden in einer Klasse in der Main aufrufen? Java Basics - Anfänger-Themen 8
W Methoden aufrufen - auch klassenübergreifend? Java Basics - Anfänger-Themen 9
Speedrunner klassen aufrufen Java Basics - Anfänger-Themen 41
D Einen boolischen Wert aus einer Methode in einer anderen Klasse aufrufen? Java Basics - Anfänger-Themen 11
J Interface methode aufrufen (interface parameter) Java Basics - Anfänger-Themen 7
H Kann man Methoden öfter aufrufen? Java Basics - Anfänger-Themen 2
L Webseite aufrufen (HTTP) Java Basics - Anfänger-Themen 8
G Rekursive Methode mit 2 Aufrufen Java Basics - Anfänger-Themen 1
T getAttribut in einer Methode aufrufen Java Basics - Anfänger-Themen 8
O Methode in while-Schleife aufrufen geht nur beim ersten Mal Java Basics - Anfänger-Themen 2
H Methode über String Wert aufrufen Java Basics - Anfänger-Themen 8
HoT verschiedene ArrayLists mit ähnlichem Namen in for-Schleife aufrufen Java Basics - Anfänger-Themen 3
H Methoden in anderen Methoden aufrufen Java Basics - Anfänger-Themen 6
F Methoden Methode richtig aufrufen Java Basics - Anfänger-Themen 3
P Methoden aufrufen - Fehler Java Basics - Anfänger-Themen 20
M Java GUI explorer aufrufen um Pfad zu bekommen Java Basics - Anfänger-Themen 3
Y Java andere Klasse aufrufen Java Basics - Anfänger-Themen 6
V Collections Methode in der Methode aufrufen Java Basics - Anfänger-Themen 2
H Referenz Objekt aufrufen Java Basics - Anfänger-Themen 12
S Methode von vererbter Klasse, statt die der "Mutterklasse" aufrufen Java Basics - Anfänger-Themen 28
M Klassen Methode in anderer Klasse aufrufen? Java Basics - Anfänger-Themen 3
M Methode in anderer Klasse aufrufen Java Basics - Anfänger-Themen 5
E Methode soll andere Methode der selben Klasse aufrufen Java Basics - Anfänger-Themen 28
A Mit einer Methode den Konstruktor aufrufen? Java Basics - Anfänger-Themen 2
S Variablen Klassenvariable über Objekt aufrufen Java Basics - Anfänger-Themen 16
J NullPointerException beim Klonnen eines Arayys und beim aufrufen einer Methode Java Basics - Anfänger-Themen 2
KopaCoda Getter mehrfach aufrufen -> ist das guter code? Java Basics - Anfänger-Themen 3
J Kompilierte Klasse mit Namespace per CMD aufrufen Java Basics - Anfänger-Themen 8
M Klassen Klasse aus anderer Klasse "aufrufen" Java Basics - Anfänger-Themen 2
scratchy1 Kann man in einer Methode eine andere aufrufen? Java Basics - Anfänger-Themen 2
W Wie kann ich meine Methode aufrufen? Java Basics - Anfänger-Themen 29
A Mit JComboBox Ergebnis einen Integer aus einer anderen Klasse aufrufen. Java Basics - Anfänger-Themen 2
scratchy1 Methode aufrufen Java Basics - Anfänger-Themen 59
A OOP Variable in anderer Klasse durch Methode aufrufen und einer anderen Variable gleichsetzen Java Basics - Anfänger-Themen 2
D Compiler-Fehler Aufrufen einer Methode von Main Java Basics - Anfänger-Themen 4
O Rekursiv aufrufen Java Basics - Anfänger-Themen 2
E Best Practice Konstruktor mit bestehender Intanz der gleichen Klasse aufrufen Java Basics - Anfänger-Themen 4
C Methoden Methode Variabel aufrufen Java Basics - Anfänger-Themen 2
W Was bedeutet im Struktogramm „zufall“ aufrufen (keine Parameterübergabe)? Java Basics - Anfänger-Themen 8
E Threads Methode einer Wartenden Klasse aufrufen Java Basics - Anfänger-Themen 3
G Objekt der selben Klasse wie selbst mit Aufrufen des Konstruktors erzeugen Java Basics - Anfänger-Themen 14
J Methoden Methode aus anderer Klasse aufrufen Java Basics - Anfänger-Themen 12
B Funktionen von außen aufrufen Java Basics - Anfänger-Themen 1
A Fenster mit Button aufrufen Java Basics - Anfänger-Themen 3
E Methoden Objekte in Methode aufrufen ohne getter und setter? Java Basics - Anfänger-Themen 1
E Referenzvariable in anderer Klasse aufrufen Java Basics - Anfänger-Themen 3
E Klassen Referenzvariable in anderer Klasse aufrufen. Java Basics - Anfänger-Themen 1
F Methode anderer Klasse aufrufen Java Basics - Anfänger-Themen 1
T CMD über Java-Programm aufrufen Java Basics - Anfänger-Themen 2
G Stringwerte aus anderen Klassen aufrufen. Java Basics - Anfänger-Themen 19
A Methode aufrufen in main-Methode Java Basics - Anfänger-Themen 5
K Compiler-Fehler Objektmethode aus einer statischen Methode heraus aufrufen Java Basics - Anfänger-Themen 34
J Methode über Scanner aufrufen Java Basics - Anfänger-Themen 15
W Methoden Methode ohne Parameter auf Instanz eines Objekts aufrufen? Java Basics - Anfänger-Themen 14
J Open Office Property Value mit Java aufrufen Java Basics - Anfänger-Themen 0
S Methoden Methode einer anderen Klasse aufrufen? Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben