Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

42

Frischling

  • »42« ist der Autor dieses Themas
  • Private Nachricht senden

1

03.07.2003, 14:57

If PixelSet

Hallihallo zusammen,

Dank DragonMaster und David bin ich jetzt bald bei der ersten Testphase des Programmes. Nur noch eines brauche ich dann muss mein Debugger herhalten:
Gibt es eine Möglichkeit zu prüfen ob Pixel(x,y) eine bestimmte Farbe hat, oder ob er "gesetzt" wurde mit SetPixel?

Vielen Dank euch beiden nochmals,

42
Jedem sei ein Neuanfang gestatt...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

42

Frischling

  • »42« ist der Autor dieses Themas
  • Private Nachricht senden

3

03.07.2003, 15:08

LOL, schlicht und ergreifend ein echter Kracher.... seit ich von VB auf C++ bin habe ich Angst vor logischen Benennungen von Funktionen. :) Danke David, werde meine VB Denkweise wieder anfangen.
Jedem sei ein Neuanfang gestatt...

42

Frischling

  • »42« ist der Autor dieses Themas
  • Private Nachricht senden

4

03.07.2003, 17:25

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
case WM_RBUTTONDOWN:
        hdc = GetDC(hWnd);
        
        i = 0;
        i2 = 0;
        while(i <= 200)
        {
            MessageBox(hWnd, "For", "For1", MB_OK);
            while(i2 <= 200)
            {               
                MessageBox(hWnd, "For", "For1", MB_OK);
                if(GetPixel(hdc, i, i2) == 000000)
                {
                    MessageBox(hWnd, "Pixel gefunden", "Pixel gefunden", MB_OK);
                    drawData[i + (i2*200)] = 1;
                    SetPixel(hdc, i, i2, 999999);
                };
                i2++;
            };
            i++;
        };
        ReleaseDC(hWnd, hdc);

Warum durchläuft er das erste while nur einmal und warum findet er kein Pixel ob wohl der Pixel eigentlich dort sich befindet?

edit:
lasst euch nicht von den messageboxen beeinflussen, sind nur zur kontrolle.
Jedem sei ein Neuanfang gestatt...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

03.07.2003, 18:52

Du setzt die Variable der inneren Schleife ja nur einmal zurück, daher wird sie auch nur einmal durchlaufen.
Aber warum verwendest Du nicht einfach zwei for-Schleifen?

42

Frischling

  • »42« ist der Autor dieses Themas
  • Private Nachricht senden

6

03.07.2003, 21:52

DAs mit den For Schleifen tut nichts zur Sache... habe ich auch schon ausprobiert, da fühklt sich mein Computer überlastet und ignoriert eine, also lieber mit weil, aber was meinst du warum das mit dem GetPixel nicht funktioniert?=
Jedem sei ein Neuanfang gestatt...

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

7

03.07.2003, 22:14

Zitat von »"42"«

DAs mit den For Schleifen tut nichts zur Sache... habe ich auch schon ausprobiert, da fühklt sich mein Computer überlastet und ignoriert eine, also lieber mit weil, aber was meinst du warum das mit dem GetPixel nicht funktioniert?=

Sorry, aber da musst Du wohl was falsch gemacht haben. Mit den while-Schleifen ist das wirklich nur unnötig kompiliert und schön aussehen tut's auch nicht.

42

Frischling

  • »42« ist der Autor dieses Themas
  • Private Nachricht senden

8

04.07.2003, 13:40

So, das ganze mal auf For Schleifen umgesetzt, aber warum startet das Programm die erste Schleife nicht?

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
case WM_RBUTTONDOWN:
        MessageBox(hWnd, "For", "Klick", MB_OK);
        hdc = GetDC(hWnd);
        MessageBox(hWnd, "For", "HDC", MB_OK);
        for(x = 0; x > 199; x++)
        {
            MessageBox(hWnd, "For", "For1", MB_OK);
            for(y = 0; y > 199; y++)
            {               
                MessageBox(hWnd, "For", "For2", MB_OK);
                if(GetPixel(hdc, x, y) == 000000)
                {
                    MessageBox(hWnd, "Pixel gefunden", "Pixel gefunden", MB_OK);
                    drawData[x + (y*200)] = 1;
                    SetPixel(hdc, x, y, 999999);
                };
            };
        };
        MessageBox(hWnd, "For", "Release", MB_OK);
        ReleaseDC(hWnd, hdc);
    break;


edit:
So habe ein paar MessageBoxes hinzugefügt, er überpspringt einfach die For Schleife.
Jedem sei ein Neuanfang gestatt...

CuTeX0r

Treue Seele

Beiträge: 174

Wohnort: Deutschland

  • Private Nachricht senden

9

04.07.2003, 14:09

Quellcode

1
for(x = 0; x > 199; x++) 


öhm, weißt du was diese schleife macht?? Eine Variable x bekommt den Wert 0, und dann erhöhst du sie bei jedem Schleifendurchlauf, aber unter der Bedingung, dass x GRÖßER als 199 sein soll... kein wunder dass es nicht geht, x ist doch 0!!!
geändert sähe das dann so aus:

Quellcode

1
for(int x = 0; x < 199; x++) 


Und lass die Strichpunkte nach den Endklammern } von den if- bzw. for-Blöcken weg!

42

Frischling

  • »42« ist der Autor dieses Themas
  • Private Nachricht senden

10

04.07.2003, 14:45

Merci Monsieur! Jetzt klapt es, ich dachte der logische Satz hinter der For Schleife wäre Solange bis x gleich 200 oder eben solange bis x größer als 199 :), ich wieder ;). vielen Dank
Jedem sei ein Neuanfang gestatt...

Werbeanzeige