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

06.03.2010, 11:49

Windowsproblem bei Kapitel 12

Hi,
ich habe Kapitel 12 durchgearbeitet und erweitert und alles hat einwandfrei funktioniert. Jetzt hab ich auch für den Spieler mit der SDL ein Reck erstellt um damit eine Kollision zwischen Spieler und Asteroiden prüfen zu können.
Jetzt spuckt mir der Compiler aber ein Windowsproblem aus, dieses "Listing_12.exe kann nicht ausgeführt werden/Problembericht senden/Nicht senden" :?:
Ich hab den Fehler auf diese Zeilen eingegrenzt:

C-/C++-Quelltext

1
2
m_Rect.w = m_pSpritePlayer->Get Rect ().w;
m_Rect.h = m_pSpritePlayer->Get Rect ().h;

Hier die Datei Player.hpp:

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
#ifndef PLAYER_HPP
#define PLAYER_HPP

#include <list>
#include "sprite.hpp"
#include "shot.hpp"

class CPlayer
{
    public:
        CPlayer     ();
        void Init   ();
        void Quit   ();
        void Render ();
        void Update ();
        void Reset  ();
        list<CShot> *GetShotList () {return &m_ShotList;}
        SDL_Rect GetRect () {return m_pRect;}

    private:
        void ProcessMoving   ();
        void ProcessShooting ();
        void CheckPosition   ();

        CSprite *m_pSpritePlayer; // Sprite für Spieler

        CSprite *m_pSpriteShot;   // Sprite für Laserschüsse

        float m_fXPos;            // X-Position des Spielers

        float m_fYPos;            // Y-Position des Spielers

        float m_fAnimPhase;       // Aktuelle Animationsphase

        bool m_bShotLock;         // Darf der nächste Schuss raus?

        list<CShot> m_ShotList;   // Liste der Schüsse

        SDL_Rect m_pRect;         // Rect des Spielers


};

#endif

Wo ist der Fehler?
:arrow: Debbugen hilft nichts,sondern führt nur zu einem halben absturz :cry:

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

06.03.2010, 13:17

das compiliert er mit leerzeichen?

C-/C++-Quelltext

1
2
m_Rect.w = m_pSpritePlayer->Get Rect ().w;
m_Rect.h = m_pSpritePlayer->Get Rect ().h; 


versuchs mal mit GetRect()
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

3

06.03.2010, 13:30

Uupss :oops:
Schon komisch.
Jetzt sollte es funktionieren, sonst geb ich noch mal Rückmeldung
Danke :)

4

06.03.2010, 14:24

Hat nichts geholfen :?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

5

06.03.2010, 14:28

der fehler muss woanders liegen. du kannst das übrigens auch gleich so schreiben:

C-/C++-Quelltext

1
m_Rect = m_pSpritePlayer->GetRect();


zeig vielleicht mal die ganze funktion :D

was genau funktioniert eigentlich nicht? startet das programm nicht? wie hast du das problem eingegrenz?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

6

06.03.2010, 16:09

Zitat von »"NachoMan"«

das compiliert er mit leerzeichen?

C-/C++-Quelltext

1
2
m_Rect.w = m_pSpritePlayer->Get Rect ().w;
m_Rect.h = m_pSpritePlayer->Get Rect ().h; 


versuchs mal mit GetRect()


Leerzeichen sowie Tabs und alles andere sind reine Formsache. Der Compiler liest eh alles, außer den Kommentaren, später alles in einen fließenden Text, Trennung findet dann nur mit ";" statt(das gibt es ja nicht umsonst.)

Kannst du bitte die Player.cpp und die Datei, in der du den oberen der beiden Quellcode verwendest zeigen? Ich habe 2 Vermutungen:

Entweder du vergisst, dem Rect des Spielers überhaupt irgendwelche Werte zuzuweisen bzw. es upzudaten(das war bei mir damals auch so und hat zu dem exakt gleichen Fehler geführt), oder du versuchst eine normale SDL_Rect Variable als Pointer zu verwenden. (Sie heißt m_pRect obwohl es kein pointer ist.)

MfG
WIP Website: kevinheese.de

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

7

06.03.2010, 16:18

hast recht. trotzdem sieht es komisch aus und ist unübersichtlich^^
probleme gäbe es wenn cPlayer eine variable mit dem namen Get hätte xD

ich glaub er hat m_pSpritePlayer noch keinen speicher zugewiesen. ;)
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

8

06.03.2010, 16:24

Zitat von »"NachoMan"«

hast recht. trotzdem sieht es komisch aus und ist unübersichtlich^^
probleme gäbe es wenn cPlayer eine variable mit dem namen Get hätte xD


Moment, jetzt hab ich mich geirrt. Dass da ein Leerzeichen zwischen Get und Rect steht, wusste ich gar nicht(darauf hab ich nicht geachtet ^^)! Shame on me!
Da hast du natürlich vollkommen Recht, DAS akzeptiert der Compiler nicht!(Da dürfte sowas kommen wie "fehlender Bezeichner vor Rect")...

Aber das wars ja eh nicht, daher vermute ich immer noch die selben Sachen ;)
WIP Website: kevinheese.de

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

9

06.03.2010, 16:32

du bringst mich noch ins grab :D
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

10

06.03.2010, 18:48

Das mit dem Leerzeichen war mein Fehler beim abtippen des Codes(Kopieren geht nicht weil auf meinem Laptop das Internet zur Zeit nicht geht).

Player.cpp kommt gleich.

Ich hab den Fehler eingegrenzt indem ich von alles in main auskommentiert hab, nur immer einen Befehl weniger, bis ich zur Fehlermeldung gekommen bin. Von da aus bin ich in die aufgerufene Funktion, ich glab Game.Init () war's usw.

Werbeanzeige