Announcement

Collapse
No announcement yet.

4 gewinnt

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • 4 gewinnt

    Hy!
    Hab ein Spielbrett mit einem Array für 4 gewinnt gezeichnet (8x8). Dieses besteht nun aus 64 grafiken.
    leider hab ich nun auch schon das erste Problem:
    Eine Anforderung ist, dass das Spielbrett skalierbar sein muss....
    Das Problem ist nun dass wenn ich es wie unten mit getWidth und getHeight mache, es mir jede einzelne Grafik skaliert
    und nicht das fertig gezeichnete Spielbrett.
    Könnt ihr mir bitte helfen, wie ich das lösen kann?

    Code:
    for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 8; j++) {
    g.drawImage(play, posX, posY, (int) this.getSize().getWidth(), (int) this.getSize().getHeight(), null);
    posX=posX+50;
    }
    posX=0;
    posY=posY+50;
    }

  • #2
    Was konnte das Spielbrett sein??

    Bsp. ein JPanel -> dessen Größe mit setSize anpassen
    Christian

    Comment


    • #3
      So Änderung!*g

      habe die Grafiken jetzt auch selbst gezeichnet mit:
      Code:
      Graphics2D g2 = (Graphics2D) g;
              g2.setColor(Color.BLUE);
              myRectangle.setFrame(10, 10, 50, 50);
              g2.fill(myRectangle);
              
              g2.setColor(Color.WHITE);
              myCircle.setFrame(15, 15, 40, 40);
              g2.fill(myCircle);
      => Viereck mit weißen Kreis! Denk mir dieser ist dann leichter zum füllen!

      wie mach ich das jetzt in einem Array mit der Position?

      Comment


      • #4
        Siehe Beitrag 2

        Da sich deine Grafikausgabe der Größe des Fensters anpassen soll ->grundsätzlich:

        Größe des Fensters ermitteln
        Division Breite durch die Anzahl deiner Elemente >8
        Division Höhe durch die Anzahl deiner Elemente >8
        Ermitteln des kleinsten Wertes der beiden Divisionen. Dies ist die maßgebende Größe für ein Spielfeld.
        Deine Schleifen zur Ausgabe der Spielfelder wobei das Rectangle und der Circle an die ermittelte Größe angepasst werden
        Zuletzt editiert von Christian Marquardt; 17.02.2010, 14:22. Reason: Rechtschreibung
        Christian

        Comment


        • #5
          super danke!
          schon geschafft

          Comment


          • #6
            aber wenn ich jetzt eine dieser Kreise gelb färben möchte, wie kann ich denn das angehen?

            weil so klappts nicht:

            Code:
            @Override
                public void paintComponent(Graphics g) {
                    super.paintComponent(g);
                    this.setBackground(Color.BLUE);
                    int posX = 0, posY = 0;
                    int circleWidth = ((int) this.getSize().getWidth()) / 8;
                    int circleHeight = (int) this.getSize().getHeight() / 8;
                    int i = 0;
                    int j = 0;
            
                    Graphics2D g2 = (Graphics2D) g;
            
                    int[][] board = new int[i][j];
                    Color[][] farben = new Color[8][8];
            
                    for (i = 0; i < 8; i++) {
                        for (j = 0; j < 8; j++) {
                            g2.setColor(Color.WHITE);
                            myCircle.setFrame(posX + 5, posY + 5, circleWidth - 5, circleHeight - 5);
                            g2.fill(myCircle);
                            
                            posX += circleWidth;
                        }
                        posX = 0;
                        posY += circleHeight;
                    }
                    farben[5][5] = Color.YELLOW;
                }

            Comment


            • #7
              "Klappt nicht" ist kein Fehler

              Kann nicht erkennen, wo du irgendwo etwas gelb färbst
              Christian

              Comment


              • #8
                Code:
                farben[5][5] = Color.YELLOW;
                naja ich habe versucht ein Color Array zu machen aber da macht er genau gar nichts!

                die Frage ist einfach nur, wie ich einen bestimmten Kreis (zB den an der Stelle 1/1) gelb färben kann?

                Comment


                • #9
                  Mit setColor

                  Du solltest eine Klasse Feld anlegen. Diese enthält alle Info zu deinem einzelnen Spielfeld (Farbe, Spieler u.v.m.)

                  Dann legst du ein Array mit dieser Klasse an (kein int o.a.)
                  Dann gehst du das in der Schleife durch

                  Wenn Feld x,y gehört zu keinem Spieler -> Farbe weiss
                  Wenn Feld x,y gehört zu Spieler 1-> Farbe rot
                  Wenn Feld x,y gehört zu Spieler 2-> Farbe blau

                  Aonsonsten gilt
                  setColor setzt die Farben für alle Ausgaben, bis eine andere setColor Anweisung kommt
                  Zuletzt editiert von Christian Marquardt; 17.02.2010, 18:27. Reason: Rechtschreibung
                  Christian

                  Comment

                  Working...
                  X