Spielfeld vergrößern Monopoly

Elyt

Mitglied
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:
SpielfeldDurchnummeriert.png

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

Derzeit sieht es so aus:
eXFB8gGY3G.png

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:
Java:
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:
Java:
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

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

Elyt

Mitglied
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.
 

Ähnliche Java Themen

Neue Themen


Oben