Schachbrett unter Win32 API



  • Hallo,
    ich soll ein Schachbrett unter Win32 API zeichnen.
    Jedes Feld soll 50x50 Pixel groß sein.
    Hab den Tipp bekommen nur jedes 2te Feld zu zeichnen (nur die Schwarzen) und mit cyClient und cxClient zu arbeiten..
    Hier mein erster Versuch der leider kläglich gescheitert ist :p
    aber hier wollt ich auch noch jedes Feld zeichnen..

    int Left = 0;
    int Top = 0;
    int Right = 50;
    int Bottom = 50;
    int y = 0;
    int x = 0;
    
    for(x; x <= 500; x+50)
    {
                for(y; y <= 500; y+50)
                {
                      Rectangle(hdc, Left, Top, Right, Bottom);
                      Top += 50;
                      Bottom += 50;
                }
    Right += 50;
    Left += 50;
    }
    

    Mfg, freue mich über jede Antwort!



  • Schnuffel91 schrieb:

    Mfg, freue mich über jede Antwort!

    Wenn du Antworten willst, solltest du erstmal eine Frage stellen.



  • Könnte mir einer bei einer For-Schleife behilflich sein, die jedes zweite Quadrat zeichnet?



  • Warum brauchst du Right und Bottom? Das ist Left + 50 und Top + 50. Dann musst du die Variablen auch nicht mitziehen. Und dann brauchst du natürlich auch kein Left und Top, dir reichen die x und y Variablen völlig.
    In deiner x Schleife, wenn du Left verschiebst, solltest du auch Top zurücksetzen. Das fängt dann wieder bei 0 an. Bzw., wenn du darauf verzichtest und gleich y verwendest, dann brauchst du da auch nichts zurücksetzen.
    Doch, du musst natürlich y zurücksetzen. Das wird einmal mit 0 initialisiert, aber beim zweiten Durchlauf der äußeren Schleife hat es immer noch den Wert 500, die innere Schleife wird also eh nicht mehr ausgeführt.
    Wenn du also gleich schreibst
    for (int y = 0; y <= 500; y += 50)

    wirds übersichtlicher und du machst weniger Fehler.



  • Mechanics schrieb:

    Wenn du also gleich schreibst
    for (int y = 0; y <= 500; y += 50)

    wirds übersichtlicher und du machst weniger Fehler.

    Ich würde gleich
    for (int y = 0; y < 10; y++)
    vorschlagen.

    < statt <= weil ich vermute dass er ein 10x10 Feld zeichnen will, nicht ein 11x11 Feld.
    Und 1 statt 50 weil dann die "schwarz oder weiss" Bedingung einfacher wird.



  • hustbaer schrieb:

    weil ich vermute dass er ein 10x10 Feld zeichnen will, nicht ein 11x11 Feld.

    Da fällt mir erst grad auf, ein Schachbrett ist eigentlich 8x8 ^^



  • ok danke dir, habs hinbekommen durch deine tipps!
    War gar nicht so schwer wie gedacht 🙄

    Die Aufgabe hat noch mehr Aufgaben, bei Fragen meld ich mich wieder hier!
    lg



  • Vermutlich wäre es gut die 50 nicht fest zu kodieren

    int breite=50, hoehe=50;

    for(int y=0; y<10; y++) {
      for(int x=y%2; x<10; x+=2) {
        Rectangle(hdc, x*breite, y*hoehe,(x+1)*breite-1, (y+1)*hoehe-1); 
      }
    }
    

Anmelden zum Antworten