# Spielfeld vergrößern Monopoly



## Elyt (23. Feb 2020)

Hallo zusammen,
ich habe leider nicht so viel Ahnung von Java und benötige daher etwas Hilfe.
Ich möchte das *angegebene Spielfeld vergrößern*. Somit also Felder hinzufügen, die von der gleichen Größe sind. So, dass es insgesamt so ein Feld ergibt:
 

Es soll also *39 Felder* geben wobei sich *auf jeder Seite 10* befinden. 

Derzeit sieht es so aus: 


Es fehlen also einige Felder.

Ich hoffe sehr, dass jemand mir schnell helfen kann ich muss dazu eine Facharbeit am Mittwoch abgeben... und ich verzweifle leider an solchen Sachen. 
_Vielen vielen Dank!_

Hier einmal die Stellen des Codes, an denen die Implementierung erfolgt:

*Das Brett und die einzelnen Felder an sich:*

```
public Brett(int xCoord, int yCoord, int width, int height) {
    setBorder(new LineBorder(new Color(0, 0, 0)));
    setBounds(xCoord, yCoord, 612, 612);
    this.setLayout(null);
    initializeFelder();
  }

  private void initializeFelder() {
    // TODO Auto-generated method stub
    String[] felderNamen = {
        "Start",
        "Badstraße",
        "Gemeinschaftsfeld",
        "Turmstraße",
        "Chaussee Straße",
        "Roll once",
        "St. Charles Place",
        "Chance",
        "States Ave",
        "Virginia Ave",
        "Free Parking",
        "St. James Place",
        "Community Chest",
        "Tennessee Ave",
        "New York Ave",
        "Squeeze Play",
        "Pacific Ave",
        "North Carolina Ave",
        "Chance",
        "Pennsylvania Ave"   
    };
    

    // Felder oben
    Feld feld00 = new Feld(6,6,100,100,felderNamen[0],135);
    this.add(feld00);
    alleFelder.add(feld00);
    unverkaeuflicheFelder.add(feld00);
    
    Feld feld01 = new Feld(106,6,100,100,felderNamen[1],180);
    this.add(feld01);
    alleFelder.add(feld01);
    
    Feld feld02 = new Feld(206,6,100,100,felderNamen[2],180);
    this.add(feld02);
    alleFelder.add(feld02);
    unverkaeuflicheFelder.add(feld02);
    
    Feld feld03 = new Feld(306,6,100,100,felderNamen[3],180);
    this.add(feld03);
    alleFelder.add(feld03);
    
    Feld feld04 = new Feld(406,6,100,100,felderNamen[4],180);
    this.add(feld04);
    alleFelder.add(feld04);
    
    Feld feld05 = new Feld(506,6,100,100,felderNamen[5],-135);
    this.add(feld05);
    alleFelder.add(feld05);
    unverkaeuflicheFelder.add(feld05);

    // Felder rechts
    Feld feld06 = new Feld(506,106,100,100,felderNamen[6],-90);
    this.add(feld06);
    alleFelder.add(feld06);
    
    Feld feld07 = new Feld(506,206,100,100,felderNamen[7],-90);
    this.add(feld07);
    alleFelder.add(feld07);
    unverkaeuflicheFelder.add(feld07);
    
    Feld feld08 = new Feld(506,306,100,100,felderNamen[8],-90);
    this.add(feld08);
    alleFelder.add(feld08);
    
    Feld feld09 = new Feld(506,406,100,100,felderNamen[9],-90);
    this.add(feld09);
    alleFelder.add(feld09);
    
    Feld feld10 = new Feld(506,506,100,100,felderNamen[10],-45);
    this.add(feld10);
    alleFelder.add(feld10);
    unverkaeuflicheFelder.add(feld10);

    // Felder unten
    Feld feld11 = new Feld(406,506,100,100,felderNamen[11],0);
    this.add(feld11);
    alleFelder.add(feld11);
    
    Feld feld12 = new Feld(306,506,100,100,felderNamen[12],0);
    this.add(feld12);
    alleFelder.add(feld12);
    unverkaeuflicheFelder.add(feld12);
    
    Feld feld13 = new Feld(206,506,100,100,felderNamen[13],0);
    this.add(feld13);
    alleFelder.add(feld13);
    
    Feld feld14 = new Feld(106,506,100,100,felderNamen[14],0);
    this.add(feld14);
    alleFelder.add(feld14);
    
    Feld feld15 = new Feld(6,506,100,100,felderNamen[15],45);
    this.add(feld15);
    alleFelder.add(feld15);
    unverkaeuflicheFelder.add(feld15);
    
    // Felder links
    Feld feld16 = new Feld(6,406,100,100,felderNamen[16],90);
    this.add(feld16);
    alleFelder.add(feld16);
    
    Feld feld17 = new Feld(6,306,100,100,felderNamen[17],90);
    this.add(feld17);
    alleFelder.add(feld17);
    
    Feld feld18 = new Feld(6,206,100,100,felderNamen[18],90);
    this.add(feld18);
    alleFelder.add(feld18);
    unverkaeuflicheFelder.add(feld18);
```

*Hier die Rotation und und Grafischen Ergänzungen:*

```
public Feld(int xCoord, int yCoord, int width, int height, String labelString, int rotationDegrees) {
    nummer = felderGesamt;
    felderGesamt++;
    setBorder(new LineBorder(new Color(0, 0, 0)));
    setBounds(xCoord, yCoord, width, height);
    name = labelString;
    this.setLayout(null);

    if(rotationDegrees == 0) {
      nameLabel = new JLabel(labelString);
      nameLabel.setFont(new Font("Lucida Grande", Font.PLAIN, 9));
      nameLabel.setHorizontalAlignment(SwingConstants.CENTER);
      nameLabel.setBounds(0,20,this.getWidth(),20);
      this.add(nameLabel);
    } else { 
      // rotating a Jlabel: https://www.daniweb.com/programming/software-development/threads/390060/rotate-jlabel-or-image-in-label
      
      nameLabel = new JLabel(labelString) {
        protected void paintComponent(Graphics g) {
          Graphics2D g2 = (Graphics2D)g;
          g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
              RenderingHints.VALUE_ANTIALIAS_ON);
          AffineTransform aT = g2.getTransform();
          Shape oldshape = g2.getClip();
          double x = getWidth()/2.0;
          double y = getHeight()/2.0;
          aT.rotate(Math.toRadians(rotationDegrees), x, y);
          g2.setTransform(aT);
          g2.setClip(oldshape);
          super.paintComponent(g);
        }
      };
      if(rotationDegrees == 90) {
        nameLabel.setBounds(20, 0, this.getWidth(), this.getHeight());
      }
      if(rotationDegrees == -90) {
        nameLabel.setBounds(-10, 0, this.getWidth(), this.getHeight());
      }
      if(rotationDegrees == 180) {
        nameLabel.setBounds(0, 0, this.getWidth(), this.getHeight());
      }
      if(rotationDegrees == 135 || rotationDegrees == -135 || rotationDegrees == -45 || rotationDegrees == 45) {
        nameLabel.setBounds(0, 0, this.getWidth(), this.getHeight());
      }
      nameLabel.setFont(new Font("Lucida Grande", Font.PLAIN, 9));
      nameLabel.setHorizontalAlignment(SwingConstants.CENTER);
      
      this.add(nameLabel);
    }

  }

  public void paintComponent(Graphics g) {
    super.paintComponent(g);
    if(this.nummer == 1 || this.nummer == 3 || this.nummer == 4) {
      g.drawRect(0, this.getHeight()-20, this.getWidth(), 20);
      g.setColor(Color.BLUE);
      g.fillRect(0, this.getHeight()-20, this.getWidth(), 20);
    }
    if(this.nummer == 6 || this.nummer == 8 || this.nummer == 9) {
      g.drawRect(0, 0, 20, this.getHeight());
      g.setColor(Color.PINK);
      g.fillRect(0, 0, 20, this.getHeight());
    }
    if(this.nummer == 11 || this.nummer == 13 || this.nummer == 14) {
      g.drawRect(0, 0, this.getWidth(), 20);
      g.setColor(Color.ORANGE);
      g.fillRect(0, 0, this.getWidth(), 20);
    }
    if(this.nummer == 16 || this.nummer == 17 || this.nummer == 19) {
      g.drawRect(this.getWidth()-20, 0, 20, this.getHeight());
      g.setColor(Color.GREEN);
      g.fillRect(this.getWidth()-20, 0, 20, this.getHeight());
    }

  }
```

ä


----------



## Elyt (23. Feb 2020)

Ich denke, dass wenn man da einmal durchgeschaut hat, dass es dann ziemlich einfach ist. Nur leider schaff ich das Druchschauen nicht so wirklich..


----------



## Kirby.exe (23. Feb 2020)

Verstehe ich das richtig, dass du lediglich neue Spielfelder hinzu fügen möchtest?


----------



## Elyt (23. Feb 2020)

Kirby_Sike hat gesagt.:


> Verstehe ich das richtig, dass du lediglich neue Spielfelder hinzu fügen möchtest?


Ja richtig. Aber die sollen halt richtig angeordnet sein mit dem Spielfeld und allem..


----------



## Kirby.exe (23. Feb 2020)

Elyt hat gesagt.:


> Ja richtig. Aber die sollen halt richtig angeordnet sein mit dem Spielfeld und allem..


Welches IDE benutzt du? Eigentlich sollte es zum Beispiel mit dem Window Builder von Eclipse nicht sonderlich schwierig sein neue Felder hinzuzufügen, geht per drag and drop


----------



## Elyt (23. Feb 2020)

Kirby_Sike hat gesagt.:


> Welches IDE benutzt du? Eigentlich sollte es zum Beispiel mit dem Window Builder von Eclipse nicht sonderlich schwierig sein neue Felder hinzuzufügen, geht per drag and drop


Nutze Java Editor... muss den leider auch benutzen.
Ich hab jetzt mal durchblickt wie es aufgebaut ist. 
Füge jetzt per Copy/Paste neue Felder hinzu und änder die Koordinaten.
Hoffe das geht dann alles. 
Falls nicht schreibe ich hier nochmal was rein.


----------

