mehrer Verschiedene Objekte in einer Klasse erstellen.

Diskutiere mehrer Verschiedene Objekte in einer Klasse erstellen. im Allgemeine Java-Themen Forum; Hallo, Ich bin auf der suche nach einer Möglichkeit in einer Spielerklasse 2-4 Spieler erstellen zu lassen je nachdem was der Benutzner eingibt...

  1. Phänox
    Phänox Mitglied
    Hallo,
    Ich bin auf der suche nach einer Möglichkeit in einer Spielerklasse 2-4 Spieler erstellen zu lassen je nachdem was der Benutzner eingibt das ist im Prinzip kein Problem
    Code (Text):

    for (int n=0;n<Benutzereingabe;n++)
    {
          new spieler;
       }
     
    Aber jetzt habe ich ja nur 2-4 Objekte erstellt die alle die selben sind nur Jeder spieler soll andere eigenschaften haben und auch gleiche z.B jeder hat andere X und Y werte aber jeder hat das gleiche Startkapital( was sich aber im Laufe des Spieles verändern soll) nun Frage ich mich wie ich das Schreiben muss damit dies klappt und ich auch auf die Eigenschaften von jedem einzelnen Object jederzeit zugreifen kann. Jemand eine idee ?

    Vielen Dank im Voraus hoffe die frage ist verständlich gestellt:)
     
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. Robat
    Robat Aktives Mitglied
    Eine Variante wäre sich eine ArrayList<Spieler> arraySpieler = new ArrayList<>(); zu erstellen und in deiner for-Schleife den Spieler zu der ArrayList hinzuzufügen. So kannst du dann über spielerArray.get(index); auf den Spieler zugreifen und bswp spielerArray.get(0).setHealthPoints(200); aufrufen.

    Übrigens, wenn du nur new Spieler schreibst, dann bekommst du keine Instanz deines Objektes :)


    Ich weiß ja nicht, was du für ein Spiel machst aber die Koordinaten könntest du anhand deines i berechnen. Sagen wir mal, dass jeder Spieler um 50 verschoben sein soll.
    Dann könntest du sagen:
    Code (Java):

    ArrayList<Spieler> arraySpieler = new ArrayList<>();
    for(int i=0; i < len; i++)
    {
        arraySpieler.add(new Spieler(50 + (i * 100), 100, 50, 100));
    }

    // In dem Beispiel nehme ich an, dass  der Konstruktor so aussieht:

    public Spieler(int x, int y, int width, int height){ .. }

    // Die Werte für len = 3 der einzelnen Spieler würden dann so aussehen:
    /*   i       i*100      x        y     width     height
    *   0          0        50     100    50         100
    *   1        100     150     100    50         100
    *   2       200      250     100    50         100
    */

     
    Wie du siehst, hast du nun 3 Spieler die sich um 100 in ihrer X-Koordinate unterscheiden.
     
  4. Phänox
    Phänox Mitglied
    Vielen Dank erstmal! nur leider nicht ganz was nach ich suche. Das Spiel um was es gehen soll ist Monoply ich hab mir das so vorgestellt das es ja maximal 4 Spieler geben kann und ich dann auf jedem rechteck(Straße) einen Platz für einen Spieler habe z.b ein rechteck breite 100 das dann der erste von 0-25 steht der zweite von 25-50 usw. Das Heißt jeder hat seine Startkoordinaten. Und dann lass ich sie sich bewegen je nach dem was gewürfelt wird. Und dann muss ich halt auf die Koordinaten zugreifen können um sie zu verändern. Aber z.B das Startgeld ist Gleich und muss aber auch natürlich veränderbar sein. Und dann kommen noch eigenschaften dazu wie zum Beispiel Welche Straßen sie haben. Ich hoffe das hilft ihnen mir zu helfem ^^ :).
     
  5. Robat
    Robat Aktives Mitglied
    So alt bin ich noch nicht :p ..

    Eig. beschreibt das von oben relative gut was du suchst.

    Du hast dir ja sicherlich eine eigene Spielerklasse geschrieben die meinetwegen so aussieht:
    ~quick'n'dirty

    Code (Java):

    public class Spieler {
         private int money;
         private int xPos;
         private int yPos;
         private int width;
         private int height;
         private ArrayList<Streets> streets = new ArrayList<>();
         //...

         public Spieler(int xPos, int yPos, int width, int height, int money)
         {
               this.xPos = xPos;
               this.yPos = yPos;
               this.width = width;
               //....
         }
       
        // Getter und Setter für die Variablen
        public int getXPos() { return this.xPos; }
        public void setXPos(int xPos) { this.xPos = xPos; }
       
        public int getYPos() { return this.yPos; }
        public void setYPos(int yPos) { this.yPos = yPos; }

        /**
         * Methode, die eine erworbene Straße {@see Street }
         * dem Spieler hinzufügt.
         * @param street  die Straße, die hinzugefügt werden soll
         */

        public void addStreet(Street street) { streets.add(street); }
        // ...
    }
     
    Soo..

    Wenn du jetzt in deiner for-Schleife die 4 Spieler erstellst, dann kannst du das wie oben machen. Du musst eben nur die Koordinaten deinen Wünschen anpassen.
    Wenn du dir vorher eine ArrayList mit den 4 Spieler erstellst, dann hat das Array nach der for-Schleife 4 Instanzen deiner Spieler-Klasse. Auf jede Instanz dieser Klasse
    kannst du über den Array-Index zugreifen und die bswp. Koordinate für die eine Instanz ändern. Über die Getter und Setter / weitern Methode kannst du dann Spezifika der Spieler ändern.

    Code (Java):

    ArrayList<Spieler> arraySpieler = new ArrayList<>();

    // initialisiere die Spieler
    for(int i = 0; i < 4; i++)
    {
        arraySpieler.add(new Spieler(0 + (i*25), 0, 25, 25, 16000);
        // So erstellst du dir 4 Spieler, die von 0-25, 25-50, 50-75 und 75-100 gehen, bei einer y-Koord. von 0 anfangen, 25 Breit und 25 hoch sind. Das Startgeld ist 16000
    }

    //Wenn du jetzt weißt, dass Spieler 1 dran ist und eine 1 gewürfelt hat, dann willst du ihn auf nächstes Feld setzten.
    //Wenn die Y Koordinate des nächsten Feldes bei 100 liegt dann kannst du den Spieler so bewegen:
    arraySpieler.get(0).setYPos(100);
     
    Gruß
    Robert
     
    Phänox gefällt das.
  6. Phänox
    Phänox Mitglied
    Vielen Dank !!!! ich versuch das alles gleich mal alles :)
    hoffe bei rückfragen kann ich mich an dich wenden :)
     
    Zuletzt bearbeitet: 4. Dez. 2016
    Robat gefällt das.
Die Seite wird geladen...

mehrer Verschiedene Objekte in einer Klasse erstellen. - Ähnliche Themen

Lock über mehrere Abschnitte in verschiedenen Methoden
Lock über mehrere Abschnitte in verschiedenen Methoden im Forum Allgemeine Java-Themen
Mehrere/Verschiedene Objekte umcasten
Mehrere/Verschiedene Objekte umcasten im Forum Java Basics - Anfänger-Themen
EditText mehrere Zeilen - verschiedene Farbe
EditText mehrere Zeilen - verschiedene Farbe im Forum Mobile Geräte
[Maven] mehrere Abhängigkeiten benutzen gleichbenannte aber verschiedene Resource
[Maven] mehrere Abhängigkeiten benutzen gleichbenannte aber verschiedene Resource im Forum Deployment
Mehrere verschiedene Textfelder auslesen?
Mehrere verschiedene Textfelder auslesen? im Forum AWT, Swing, JavaFX & SWT
Thema: mehrer Verschiedene Objekte in einer Klasse erstellen.