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

21

17.06.2008, 15:51

Dein Post hat mich dazu gebracht eine Rückschritt zu machen und das ganze Projekt jetzt wieder mit Visual C++ 6.0 zu programmieren. Okey, ich habe jetzt vieleicht nicht mehr das schön bunte Design und ein paar kleine Komfortdefizite aber zumindest keine Fehler mehr :)

Ich vermute mal stark, dass es wie du schon gesagt hast Probleme mit den nicht mit VS 2008 kompelierten SDL Datein gab. Aber das ganze hat mich jetzt so generft (und 1 Wochende gekostet), so dass ich eine lange Zeit nicht mehr mit VS2008 arbeiten werde und möchte..

Ich will das Programm jetzt nicht schlecht machen und es ist sicherlich eher der User als das Programm selber aber denoch möchte ich mir die Arbeit nicht noch zusätzlich erschwären und Arbeite jeztz liebend gern mit dem alten Kompiler weiter :)

An dieser Stelle Danke für die Hilfe ;)

Beliah

Treue Seele

Beiträge: 115

Wohnort: Söhlde - LK Hildesheim

Beruf: FI-Anwendungsentwicklung

  • Private Nachricht senden

22

17.06.2008, 15:56

Und wie siehts mit der 2005er Version also 8.0 aus? VC 6.0 ist ziemlich veraltet und viele raten davon ab es zu benutzen.
Debuggers don't remove bugs, they only show them in slow motion.

Google Suche ohne Werbung und Cookies: Scroogle

Derzeitige(s) Freizeitprojekt(e)

23

17.06.2008, 16:43

Ich hab das auch drauf und werde es mal testen :)

Ich hab aber nun noch ein kleines Problem "deses hat jetzt wirdklich mal was mit den Listen direkt zutun denke ich":

Follgernder Code Funktioniert alleine ohne Probleme:


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    list<CAreaScanning>::iterator itArea;

    //Bodenkontakt zurücksetzen

    m_bContact = false;

    //ALle Objekte durchlaufen

    for (itArea = m_lArea.begin(); itArea != m_lArea.end(); ++ itArea)
    {
        //Abfrage ob Sprung aus ist

        if (m_Player.StatusRueckgabe() != 3)
        {
            //Wenn ja Abfrage ob Spieler Bodenkontakt hat

            if (itArea->Abfrage_Oben(m_Player) == true)
            {
                //Wenn ja Bodenkontakt bestätigen

                m_bContact = true;

            }
    
        }
    
    }


Nun versuche ich aber einige Codezeilen tiefer den selben Iterator nochmal zu verwenden:





C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
        //Abfrage ob Sprung aus ist

        if (m_Player.StatusRueckgabe() == 3)
        {
            //Wenn ja -> Alle Objekte Durchlaufen und Kollisonsabfrage durchführen Unten

            for (itArea = m_lArea.begin(); itArea != m_lArea.end(); ++ itArea)
            {
                itArea->Abfrage_Unten(m_Player);


            }
        }
            


Dies funktioniert nicht mehr.. Die Konsolle hinterlässt mir dabei follgenden Auswurf:

Fatal Signal: Segementation Fault <sdl parachute deployed>

Wie kann ich jetzt noch mal durch die ganze Liste laufen lassen ohne einen Fehler herbeizuführen?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

24

17.06.2008, 16:50

Du bist dort ja bereits in einer Schlaufe drin. Warum machst du den nochmal eine?

25

17.06.2008, 17:12

Es war noch ein kleiner logischer Fehler drinne. Die Bedingung unter der die zweite Schleife aufgerufen werden soll, ist wenn der Spielerstatus genau 3 ist und nicht ungleich 3.

Es gibt eine möglichkeit alles in eine Schleife zu packen allerdings fand ich es so übersichtlicher. Ist es denn nicht möglich zweimal hintereinander die selbe Liste zu durchlaufen?

C-/C++-Quelltext

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
    if (m_bListe == false)
    {
            CAreaScanning m_Area; //Für Objekte

            m_lArea.push_back(m_Area);
            m_bListe = true;
    }


    //SCREEN zum beschreiben vorbereiten

    g_pFramework->Update ();
    g_pFramework->Clear (); 

    //Spieler Bewegungen ubdaten

    m_Player.Update_Movement();

    list<CAreaScanning>::iterator itArea;

    //Bodenkontakt zurücksetzen

    m_bContact = false;

    //ALle Objekte durchlaufen

    for (itArea = m_lArea.begin(); itArea != m_lArea.end(); ++ itArea)
    {
        //Abfrage ob Sprung aus ist

        if (m_Player.StatusRueckgabe() != 3)
        {
            //Wenn ja Abfrage ob Spieler Bodenkontakt hat

            if (itArea->Abfrage_Oben(m_Player) == true)
            {
                //Wenn ja Bodenkontakt bestätigen

                m_bContact = true;

            }
            //SPrung ist nicht aus

            else
            {
                //Abfragen ob beim Sprung mit etwas zusamengestossen wird

                itArea->Abfrage_Unten(m_Player);

            }

                //Kollisonen mit den Seiten eines Objektes abfragen 

                itArea->Abfrage_Rechts(m_Player);
                itArea->Abfrage_Links(m_Player);
        }
    
    }


Ich hab jetzt alle in eine Schleife gepackt, was zum selben Ergebniss führt..

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

26

17.06.2008, 17:19

Doch schon, aber der Code oben suggeriert, dass du das INNERHALB der anderen Schlaufe machst, was nicht sehr sinnvoll wäre und zu einem Absturz kommen würde, wenn die Liste nicht leer ist.

27

17.06.2008, 17:26

Ich wollte nur drauf hinweisen das ich jetzt alles in eine SChleife gepackt habe was nicht funktioniert.. siehe voriger Post..

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

28

17.06.2008, 17:32

1. Wo genau tritt der Fehler auf?
2. Kommentier mal testweise alle Abfragen aus und kommentiert sie einzeln wieder ein, weil ein segfault ist soweit ich weiß ein Zeigerfehler.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

29

17.06.2008, 17:40

Also ich hab jetzt mal alle Abfragefunktionen auskommentiert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
            else
            {
                //Abfragen ob beim Sprung mit etwas zusamengestossen wird

                //itArea->Abfrage_Unten(m_Player);


            }

                //Kollisonen mit den Seiten eines Objektes abfragen 

                //itArea->Abfrage_Rechts(m_Player);

                //itArea->Abfrage_Links(m_Player);

        }


Keine Meldung im Konsolen Fenster -> Programm läuft normal
Sobalt ich eine Auskommentierung wieder Rausnehme bei einer der drei unteren Richtungsabfragen bekomme ich wieder die Meldung und das Programm sürtzt ab..

Beliah

Treue Seele

Beiträge: 115

Wohnort: Söhlde - LK Hildesheim

Beruf: FI-Anwendungsentwicklung

  • Private Nachricht senden

30

17.06.2008, 17:44

Geh doch mal das Programm schritt für schritt durch mit dem Debugger und überprüfe ob nicht etwas innerhalb der aufgerufenen Methode schiefläuft.
Debuggers don't remove bugs, they only show them in slow motion.

Google Suche ohne Werbung und Cookies: Scroogle

Derzeitige(s) Freizeitprojekt(e)

Werbeanzeige