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

1

15.06.2008, 08:03

Dynamische STL Listen möglich?

HI,

In meinem Spiel, was ich grade programmiere, gibt es unterschiedliche Gegnertypen, diese Gegnertypen sind bei mir Klassen, die von der Basisklasse Gegner abgeleitet sind.

Das ganze soll nacher so aussehen, dass wenn ein Level betreten wird alle Gegner in eine Liste geladen werden. Bei jedem Durchlauf soll dann in einer Schleife festgestellt werden ob Spieler Gegner berührt oder ob der Gegner überhaupt dargestellt werden soll die Schleife geht dann einmal durch die ganze Liste.

Wenn das Level dann verlassen wird z.b um ein neues Level zu berteten, sollen alle Gegner aus der Lsite wirder gelöscht werden, damit am Start des nächsten Levels wieder Gegner in die Liste geschoben werden können.

Nun ist das Problem, dass es ja viele verschiedene Gegnertypen gibt bzw nacher geben soll und ich deswegen ja für jeden Gegnertyp eine unterschiedliche Liste bräuchte..

Beispiel um das Problem nochmal aufzuzeigen:

In Level 1 gibt es 10 Gegner des Typs A und 10 Gegner des Typs B
IN Level 2 gibt es 10 Gegner des Typs C und 10 Gegner des Typs D

Nun bräuchte ich 4 Listen für jeden Typ eine..

Nun wäre es sinvoll, wenn es eine Möglichkeit gebe, dass ich die selben Listen die ich in Level 1 verwendet habe auch für die beiden Gegnerklassen in Level 2 verwenden könnte.

Also das ich nacher dann z.b 2 Listen hätte, die ich alle möglichen Gegnertypen aufnehmen können und die am Schluß jedes Levels wieder gelöscht werden, um im nächsten Level vieleicht wieder 2 ganz andere Gegnertypen aufnehmen zu können.

Ich würde mich über Hilfe freuen :)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

15.06.2008, 11:00

Wenn deine Gegner alle das selbe Interface (gemeinsame Basisklasse) haben geht das:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class IEnemy
{
};

class EnemyA : public IEnemy
{
};

class EnemyB : public IEnemy
{
};

// etc...


int main()
{
    std::list< IEnemy* > foobar;
}
@D13_Dreinig

3

15.06.2008, 11:16

Okey Danke,

Ich hab aber noch ein weiteres Problem mit Listen. Ich habe 2 Listen erstellt und diese mit Werten gefüllt. Allerdings scheitere ich die ganze Zeit an dieser Fehlermeldung:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
1>------ Erstellen gestartet: Projekt: Super_Engine_01, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>Game.cpp
1>Verknüpfen...
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___CrtDbgReportW" in Funktion ""public: class CAreaScanning * const & __thiscall std::list<class CAreaScanning *,class std::allocator<class CAreaScanning *> >::_Const_iterator<1>::operator*(void)const " (??D?$_Const_iterator@$00@?$list@PAVCAreaScanning@@V?$allocator@PAVCAreaScanning@@@std@@@std@@QBEABQAVCAreaScanning@@XZ)".
1>.\Debug/Super_Engine_01.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
1>Das Buildprotokoll wurde unter "file://c:\Program Files\Super Mario Engine\Super_Engine_11\Debug\BuildLog.htm" gespeichert.
1>Super_Engine_01 - 2 Fehler, 0 Warnung(en)


Diese wird irgendwie durch diesen QUelltext hervorgerufen:

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
// Testlevel

//

// Aufgabe: Testlevel ausführen

//

void CGame::Testlevel()
{
    //Abfrage ob schon Intaliesiert wurde

    if (m_bIntal == false)
    {

        //Wenn nein dann Intaliesieren 


        //Temporär Instanzen

        CEnemy *m_Enemy_Temp;      //Für Gegner

        CAreaScanning *m_Area_Temp; //Für Objekte


        //Listen und Iterator

        list<CAreaScanning*> m_lArea;
        list<CAreaScanning*>::iterator iter_Area;

        list<CEnemy*> m_lEnemy;
        list<CEnemy*>::iterator iter_Enemy;
        
        
        m_Area_Temp = new  CAreaScanning(1136, 0, 0, 3000);
        m_lArea.push_back (m_Area_Temp);

        m_Enemy_Temp = new CEnemy;
        m_lEnemy.push_back(m_Enemy_Temp);

        //Es wurde schon intaliesiert

        m_bIntal = true;


        
    }

    AreaAbfragen ();
    m_Player.Update_Screen();

    //Bildschirm Ubdaten und Rendern

    m_Backgroundmap->ScreenUpdate(m_Player);
    m_Backgroundmap->ScreenRender();

    //Spieler Rendern

    m_Player.Render();

    //Alle Gegner durchlaufen und Rendern wenn Gegner im Sichtbereich ist

    for (iter_Enemy = m_lEnemy.begin (); iter_Enemy != m_lEnemy.end(); ++ iter_Enemy )
    {
            (*iter_Enemy)->Render(m_Player);
    }
    

}


// AreaAbfragen

//

// Aufgabe: Kollisonsabfragen mis Objekten durchführen

//

void CGame::AreaAbfragen ()
{
    //Abrage ob grade gesprungen wird

    if (m_Player.StatusRueckgabe() != 3)
    {
        //Wenn nein Schleifenabfrage nach Boden oder Fallen beginnen

        for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++iter_Area )
        {
            //Abfrage nach Boden 

            if ((*iter_Area)->Abfrage_Oben(m_Player) == true)
            {
                //Wenn boden gefunden wurde Boden kontakt bestätigen und Schleife sofort bennden

                m_bContact = true;
                break;

            }
            //Wenn kein Boden gefunden wurde dann fällt der Spieler

            else
            {
                m_bContact = false;
            }
        }

    }
    //Abfrage ob Spung an ist

    else if (m_Player.StatusRueckgabe() == 3)
    {
        //Wenn ja SChleife durchlaufen die nach Kontakt mit Objekt über Spieler sucht

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

        }


        //Kein BOdenkontakt

        m_bContact = false;
    }

    
    //Abfrage ob Sprung "nicht" an ist

    if(m_Player.StatusRueckgabe() != 3)
    {
        //Wenn ja -> Abfrage ob Bodenkontakt da ist oder nicht

        if (m_bContact == true)
        {
            //Boden wurde gefunden also Laufen an

            m_Player.StatusAnpassen(1);
        }
        else
        {
            //kein Boden wurde gefunden also Fallen an

            m_Player.StatusAnpassen(2);
        }

    }

    //Abfrage ob grade eine BEwegung nach Links geamcht wird

    if (m_Player.MoveDirectionRueckgabe() == 1)
    {
        //Wenn ja Abfrage ob nicht Links irgendwo eine Kollison mit einem Objekt ist

        for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
        {
            (*iter_Area)->Abfrage_Links(m_Player);

        }

    }

    //Abfrage ob grade eine BEwegung nach Rechts geamcht wird

    if (m_Player.MoveDirectionRueckgabe() == 2)
    {
        for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
        {
            //Wenn ja Abfrage ob nicht Rechts irgendwo eine Kollison mit einem Objekt ist

            (*iter_Area)->Abfrage_Rechts(m_Player);

        }

    }

}


Ich muss irgend etwas falsch machen bei den Listen, konnte aber auch nach längerer Suche nicht den Fehler finden.

Ich würde mich über Hilfe freuen

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

15.06.2008, 11:26

Linkst du auch ohne /NODEFAULTLIB?
@D13_Dreinig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

15.06.2008, 11:29

Schau mal in deinen Projekteigenschaften unter C/C++ > Code Generation was da bei Runtime Library steht und stells im Debug Mode auf Debug ;)

6

15.06.2008, 11:44

Also den Befehl "/NODEFAULTLIB" hab ich bisher noch nicht verwendet und warum ich Standartbiblotheken beim Auflösen externer verweiße aus der Liste entfernen soll kann ich auch nicht so ganz nachvollziehen..

Schon alleine weil mich das "Auflösen externer Verweiße" schon genug verwirrt.

Bei Laufzeitbiblothek steht bei mir:

Multithread-DLL[/ML]

Ansonsten gibt es noch Multithreaded-Debug (/MTd) zur Auswahl oder Multithreaded-Debug-DLL (/MDd).. wüsste ich jetzt nicht was ich da einstellen muss..

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

15.06.2008, 12:15

Zitat von »"Abcd1234"«

Bei Laufzeitbiblothek steht bei mir:

Multithread-DLL[/ML]


dacht ich mir...

Zitat von »"Abcd1234"«

Ansonsten gibt es noch Multithreaded-Debug (/MTd) zur Auswahl oder Multithreaded-Debug-DLL (/MDd).. wüsste ich jetzt nicht was ich da einstellen muss..


Naja, eine der beiden Varianten mit "Debug" im Namen...
Defaulteinstellung wäre hier Multithreaded-Debug-DLL ;)

8

15.06.2008, 15:40

Also wenn ich da was anderes auswähle krieg ich nochmehr Fehlermeldungen:

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
1>------ Erstellen gestartet: Projekt: Super_Engine_01, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>AreaScanning.cpp
1>Backgroundmap.cpp
1>Enemy.cpp
1>Framework.cpp
1>Game.cpp
1>Logfile.cpp
1>c:\program files\super mario engine\super_engine_11\logfile.cpp(31) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(237): Siehe Deklaration von 'fopen'
1>c:\program files\super mario engine\super_engine_11\logfile.cpp(49) : warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(237): Siehe Deklaration von 'fopen'
1>c:\program files\super mario engine\super_engine_11\logfile.cpp(138) : warning C4996: 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366): Siehe Deklaration von 'vsprintf'
1>c:\program files\super mario engine\super_engine_11\logfile.cpp(157) : warning C4996: 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366): Siehe Deklaration von 'vsprintf'
1>c:\program files\super mario engine\super_engine_11\logfile.cpp(176) : warning C4996: 'vsprintf': This function or variable may be unsafe. Consider using vsprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>        c:\program files\microsoft visual studio 9.0\vc\include\stdio.h(366): Siehe Deklaration von 'vsprintf'
1>main.cpp
1>Player.cpp
1>c:\program files\super mario engine\super_engine_11\player.cpp(393) : warning C4244: 'Argument': Konvertierung von 'int' in 'float', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(393) : warning C4244: 'Argument': Konvertierung von 'int' in 'float', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(437) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\player.cpp(459) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\player.cpp(462) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(489) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(507) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\player.cpp(510) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(540) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(581) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\player.cpp(585) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(612) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(631) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\player.cpp(634) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(662) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(694) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\player.cpp(805) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(809) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(844) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(848) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(880) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(948) : warning C4244: '+=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(957) : warning C4244: '-=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(966) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1024) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1028) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1089) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1093) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1152) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1156) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1213) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\player.cpp(1217) : warning C4244: '=': Konvertierung von 'float' in 'int', möglicher Datenverlust
1>Sprite.cpp
1>c:\program files\super mario engine\super_engine_11\sprite.cpp(194) : warning C4244: '=': Konvertierung von 'float' in 'Sint16', möglicher Datenverlust
1>c:\program files\super mario engine\super_engine_11\sprite.cpp(322) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>c:\program files\super mario engine\super_engine_11\sprite.cpp(322) : warning C4805: '==': unsichere Kombination von Typ 'int' mit Typ 'bool' in einer Operation
1>timer.cpp
1>Level.cpp
1>Code wird generiert...
1>Verknüpfen...
1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) ist bereits in LIBCMTD.lib(typinfo.obj) definiert.
1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) ist bereits in LIBCMTD.lib(typinfo.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: _exit ist bereits in LIBCMTD.lib(crt0dat.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: _strrchr ist bereits in LIBCMTD.lib(strrchr.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: _fprintf ist bereits in LIBCMTD.lib(fprintf.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: _fopen ist bereits in LIBCMTD.lib(fopen.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: _fgetc ist bereits in LIBCMTD.lib(fgetc.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: _fclose ist bereits in LIBCMTD.lib(fclose.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: _setvbuf ist bereits in LIBCMTD.lib(setvbuf.obj) definiert.
1>msvcrt.lib(MSVCR90.dll) : error LNK2005: __isctype ist bereits in LIBCMTD.lib(isctype.obj) definiert.
1>LIBCMTD.lib(crt0init.obj) : warning LNK4098: Standardbibliothek "msvcrt.lib" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
1>.\Debug/Super_Engine_01.exe : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.
1>Das Buildprotokoll wurde unter "file://c:\Program Files\Super Mario Engine\Super_Engine_11\Debug\BuildLog.htm" gespeichert.
1>Super_Engine_01 - 11 Fehler, 41 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Ich hab jetzt auch noch den Code verändert indem ich eine Klasse geschaffen habe in der jetzt die Listen und Instanzen erstellt werden:

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#include "Level.h"
#include "Player.h"
    
CLevel::CLevel()
{

    m_Backgroundmap = new CBackgroundmap("Data/test.bmp");
    m_Backgroundmap->ScreenLoad();

    m_Area_Temp = new  CAreaScanning(1136, 0, 0, 3000);
    m_lArea.push_back (m_Area_Temp);

    m_Enemy_Temp = new CEnemy;
    m_lEnemy.push_back(m_Enemy_Temp);
}

void CLevel::AreaAbfragen (CPlayer &Player)
{

    //Abrage ob grade gesprungen wird

    if (Player.StatusRueckgabe() != 3)
    {
        //Wenn nein Schleifenabfrage nach Boden oder Fallen beginnen

        for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++iter_Area )
        {
            //Abfrage nach Boden 

            if ((*iter_Area)->Abfrage_Oben(Player) == true)
            {
                //Wenn boden gefunden wurde Boden kontakt bestätigen und Schleife sofort bennden

                m_bContact = true;
                break;

            }
            //Wenn kein Boden gefunden wurde dann fällt der Spieler

            else
            {
                m_bContact = false;
            }
        }

    }
    //Abfrage ob Spung an ist

    else if (Player.StatusRueckgabe() == 3)
    {
        //Wenn ja SChleife durchlaufen die nach Kontakt mit Objekt über Spieler sucht

        for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
        {
            (*iter_Area)->Abfrage_Unten(Player);

        }


        //Kein BOdenkontakt

        m_bContact = false;
    }


    //Abfrage ob Sprung "nicht" an ist

    if(Player.StatusRueckgabe() != 3)
    {
        //Wenn ja -> Abfrage ob Bodenkontakt da ist oder nicht

        if (m_bContact == true)
        {
            //Boden wurde gefunden also Laufen an

            Player.StatusAnpassen(1);
        }
        else
        {
            //kein Boden wurde gefunden also Fallen an

            Player.StatusAnpassen(2);
        }

    }

    //Abfrage ob grade eine BEwegung nach Links geamcht wird

    if (Player.MoveDirectionRueckgabe() == 1)
    {
        //Wenn ja Abfrage ob nicht Links irgendwo eine Kollison mit einem Objekt ist

        for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
        {
            (*iter_Area)->Abfrage_Links(Player);

        }

    }

    //Abfrage ob grade eine BEwegung nach Rechts geamcht wird

    if (Player.MoveDirectionRueckgabe() == 2)
    {
        for (iter_Area = m_lArea.begin (); iter_Area != m_lArea.end(); ++ iter_Area )
        {
            //Wenn ja Abfrage ob nicht Rechts irgendwo eine Kollison mit einem Objekt ist

            (*iter_Area)->Abfrage_Rechts(Player);

        }

    }

}

void CLevel::LevelRun(CPlayer &Player)
{
    AreaAbfragen (Player);
    Player.Update_Screen();

    //Bildschirm Ubdaten und Rendern

    m_Backgroundmap->ScreenUpdate(Player);
    m_Backgroundmap->ScreenRender();

    //Spieler Rendern

    Player.Render();

    //Alle Gegner durchlaufen und Rendern wenn Gegner im Sichtbereich ist

    for (iter_Enemy = m_lEnemy.begin (); iter_Enemy != m_lEnemy.end(); ++ iter_Enemy )
    {
        (*iter_Enemy)->Render(Player);
    }

}


Auch wenn ich, wiegehabt "Multithreaded-DLL (/MD)" verwende wird es nicht besser ich bekomme immer wieder die selbe Fehlermeldung:

C-/C++-Quelltext

1
2
3
1>Level.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp___CrtDbgReportW" in Funktion ""public: class CAreaScanning * const & __thiscall std::list<class CAreaScanning *,class std::allocator<class CAreaScanning *> >::_Const_iterator<1>::operator*(void)const " (??D?$_Const_iterator@$00@?$list@PAVCAreaScanning@@V?$allocator@PAVCAreaScanning@@@std@@@std@@QBEABQAVCAreaScanning@@XZ)".
1>.\Debug/Super_Engine_01.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
1>Das Buildprotokoll wurde unter "file://c:\Program Files\Super Mario Engine\Super_Engine_11\Debug\BuildLog.htm" gespeichert.


Hat denn niemand eine Idee, woran das liegt?

9

16.06.2008, 06:41

Anscheinend muss ich ja aufjedenfall eine andere Laufzeitbilblothek nehmen..

Dies hab ich jetzt auch gemacht: Multithreaded-Debug-DLL (/MDd)

NUn bekomme ich aber immer noch die 1 Fehlermeldung:

C-/C++-Quelltext

1
2
3
4
5
6
1>------ Erstellen gestartet: Projekt: Super_Engine_01, Konfiguration: Debug Win32 ------
1>Das Manifest wird eingebettet...
1>mt.exe : general error c101008a: Failed to save the updated manifest to the file ".\Debug\Super_Engine_01.exe.embed.manifest". The parameter is incorrect.
1>Das Buildprotokoll wurde unter "file://c:\Program Files\Super Mario Engine\Super_Engine_11\Debug\BuildLog.htm" gespeichert.
1>Super_Engine_01 - 1 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Was mache ich dagegen?

Beliah

Treue Seele

Beiträge: 115

Wohnort: Söhlde - LK Hildesheim

Beruf: FI-Anwendungsentwicklung

  • Private Nachricht senden

10

16.06.2008, 08:13

Diesem thread nach, den ich nach sehr kurzer Suche gefunden haben, sollte es reichen ein Clean Rebuilt zu machen.
Debuggers don't remove bugs, they only show them in slow motion.

Google Suche ohne Werbung und Cookies: Scroogle

Derzeitige(s) Freizeitprojekt(e)

Werbeanzeige