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

11

04.07.2003, 19:07

;D ich denke unter VB ist das nett anders als unter C++, oder?

Vieleicht ein kleiner Tipp am Rande. Ein Ausdurck wie dieser x < y ergibt entweder "true" oder "false". In C++ wird eine Bedinung immer nur dann ausgeführt wenn der Ausdruck "true" ist.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
// Ausdruck: x <= 200
if(x <= 200)
{
  // bearbeite Bedingung
}

// Ausdruck: x < y
for(int x = 0; x < y; ++x)
{
  // bearbeite Bedingung
}

Deine for-Schleife hat noch einen kleinen Schönheitsfehler. Wenn dein Feld 200x200 Pixel breit ist muss du auch bis 200-1 Prüfen. D.h. deine For-Schleife würde Korrekt heißen

Quellcode

1
for(x = 0; x < 200; ++x) { ... }
Eine for-Schleife kann man auch als while-Schleife darstellen

Quellcode

1
2
3
4
5
6
x = 0;
while(x < 200)
{
  ....  // Auszuführender Code
  ++x;
}
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

42

Frischling

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

12

06.07.2003, 11:18

So ich habe dir jetzt mal meine noch Fehlerhafte Version geschickt...(webmaster@dragon-master.net)
Jedem sei ein Neuanfang gestatt...

42

Frischling

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

13

06.07.2003, 15:06

So langsam fehlt nur noch der letzte Strich... aber leider funktioniert etwas nicht, das ich nicht verstehe:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
void checksymbol()
{
    memset(drawData, 0, 200*200); // Alles mit NULL füllen
    hdc = GetDC(hWnd);
        MessageBox(hWnd, "Ihr gezeichnetes Bild wird nun überprüft! Alle Punkte die Sie gezeichnet haben, müssen blau werden!", "Prüfung", MB_OK);
        for(x = 0; x < 201; x++)
        {
            for(y = 0; y < 201; y++)
            {               
                if(GetPixel(hdc, x, y) == 000000)
                {
                    drawData[x + (y*200)] = 1; //Bedeutet hier wurde gezeichnet
                    if(drawData[x + (y*200)] == 1)
                    {
                    SetPixel(hdc, x, y, RGB(0, 0, 255)); //Gecheckte Pixel werden blau
                    };
                };
            };
        };
        /*WICHTIG: In diesem Code steckt irgendwo noch ein logischer Fehler! */
        MessageBox(hWnd, "Die gefundenen Pixel sind nun blau angestrichen, ist dies nicht der Fall, ist ein Error aufgetreten.", "Prüfung", MB_OK);
        
        for(x = 0; x < 201; x++)
        {
            for(y = 0; y < 201; y++)
            {               
                if(drawData[x + (y*200)] == quadratData[x + (y*200)] && drawData[x + (y*200)] == 1) //Das gemalt wurde ( == 1) und es sich befindet auf einem QuadratPunkt
                {
                    SetPixel(hdc, x, y, RGB(0, 255, 0)); //Ist dies der Fall kommt ein grüner Punkt
                }
                else
                {
                    if(drawData[x + (y*200)] == 1)
                    {
                    iFalsch++; //Ist dies nicht der Fall wird er rot und es gibt einen Minuspunkt
                    SetPixel(hdc, x, y, RGB(255, 0, 0));
                    }
                    else
                    {
                    SetPixel(hdc, x, y, RGB(255, 0, 255));
                    };
            
                };
            };
        };
        fPerc = (iFalsch / (float)(200 * 200)) * 100.0f;
        if(fPerc > 30.0f)
        {
        MessageBox(hWnd, "Nicht gefunden", "Symbol", MB_OK);
        }
        else
        {
        MessageBox(hWnd, "Gefunden", "Symbol", MB_OK);
        };
        ReleaseDC(hWnd, hdc); 
};


Warum wird alles RGB(255, 0, 255), das würde bedeuten das drawData komplet = 0 ist. Aber dies darf nicht der Fall sein... Ich verstehe nicht was falsch ist, von der Logik her müsste es doch stimmen?

42
Jedem sei ein Neuanfang gestatt...

Werbeanzeige