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

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

21

30.03.2010, 17:11


Ach KeksX ich wollte ma fragen ob deine Textausgabe Funktioniert weil ich habe meine weitesgehend von dir übernommen nur das ich das rendern der Sprite.cpp überlasse aber es kommt kein Text auf den Bildschirm.

Ich schicke dir eine PM mit meiner Version, die auch funktioniert. Und aktualisier die mal aus meinem Thread. Bist nicht der erste, bei dem das nicht richtig funktioniert.^^
WIP Website: kevinheese.de

little_Progger

Treue Seele

  • »little_Progger« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

22

03.04.2010, 13:36

So KeksX jetzt hab ich das mal alles umgestellt und auch die Text.h /.cpp neu geschrieben.
Diesmal habe ich es so geschrieben wie -=Andreas=- weil ich das selber ein wenig übersichtlicher finde im Bezug auf das aufrufen.

Nun habe ich aber ein Problem was mich schon davor gestört hat als ich versucht noch etwas an der Pause FUnktion zu verändern.

Hier die Fehlermeldung:

Quellcode

1
2
3
1>c:\...\game.hpp(32) : error C2143: Syntaxfehler: Es fehlt ';' vor '*'
1>c:\...\game.hpp(32) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>c:\...\game.hpp(32) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.



Und Hier der gemeinte Code:

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

#include "Safe_Delete.h"
#include "Player.hpp"
#include "Asteroid.hpp"
#include "Framework.hpp"
#include "Text.h"
#include <iostream>
#include <fstream>

class CGame
{
  public:
    CGame ();

    void Init ();
    void Run  ();
    void Quit ();

  private:
    void ProcessEvents   ();
    void SpawnAsteroids  ();
    void RenderAsteroids ();
    void CheckCollisions  ();
    void WriteHighscore ();
    void OpenFiles ();
    void NormalGameRun ();
    void PausedGameRun ();

    CSprite *m_pSpriteBackground;   // Sprite für den Hintergrund
    CPlayer *m_pPlayer;             // Spieler-Instanz
    CSprite *m_pSpriteAsteroid;     // Sprite für die Asteroiden
    CText *m_pMessagePaused;    /** Message für Pauiert Modus **/
    float    m_fAsteroidTimer;      // Zeitgeber für nächsten Asteroiden
    bool    m_bGameRun;             // Läuft das Spiel noch?
    short    m_Gamestate;            // 
    list<CAsteroid> m_AsteroidList; // Liste der Asteroiden
    unsigned int m_Punkte;          // Punkte 
    bool m_bPaused;                 // Sperre für "P" falls gedrückt
    short m_PlayerHealth;           // Leben des Spielers       

};

#endif


Ich habe keine ahnung was in der Zeile falsch ist.

Gruß

23

03.04.2010, 14:03

Hast du eventuell die hier gezeigte Header Datei auch in der Player.hpp inkludiert? Wenn ja, das geht nicht! Musst du dann in der .cpp Datei inkludieren und in der Header Datei nur einen Prototyp der Klasse bekannt machen.
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

little_Progger

Treue Seele

  • »little_Progger« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

24

03.04.2010, 14:43

Danke Insane :)
Hatte wirklich die Game.hpp in der Player.hpp inkludiert :whistling:

Wieso funktioniert das dann eigentlich nicht?

EDIT---------
Ich habe das grad getestet und es funktioniert auch, aber das Programm funktioniert jetzt nicht mehr :(

Jetzt startet das Programm, aber der Bildschirm bleibt schwarz und nach ein paar sekunden stürzt das Programm ganz ab.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »little_Progger« (03.04.2010, 14:58)


NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

25

03.04.2010, 21:09

lädst du vielleicht einen font der sich nicht im ordner befindet?

C-/C++-Quelltext

1
2
3
4
    CSprite *m_pSpriteBackground;   // Sprite für den Hintergrund
    CPlayer *m_pPlayer;             // Spieler-Instanz
    CSprite *m_pSpriteAsteroid;     // Sprite für die Asteroiden
    CText *m_pMessagePaused;    /** Message für Pauiert Modus **/


warum benutzt du hier zeiger? wären einfache objekte nicht sicherer und einfacher?
"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?

little_Progger

Treue Seele

  • »little_Progger« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

26

03.04.2010, 22:59

@NachoMan

Weil es so vom Buch aus schon so gemacht wurde und ich es so jetzt fortgesetzt hab und es auch so ganz gut finde.

Gut nun habe ich es einmal mit einer direkten Instanz auf CText probiert und es klappt auch und ich finde bei der Anwendung ist es ein geringerer Schreibaufwand,
aber das Spiel stürzt trotzdem noch ab :(

27

04.04.2010, 01:33

Dann geh doch einfach mal mit dem Debugger drüber, damit solltest du die Fehlerursache innerhalb von maximal 5 Minuten gefunden haben.

Naja und das mit dem inkludieren ist ganz einfach. Das kann man am Besten mit einem Beispiel zeigen, sonst wird die Erklärung etwas verwirrend.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
//header1.h
#include "header2.h"

class header1
{
};

//header2.h
#include "header1.h"

class header2
{
};


Ergebnis beim kompilieren:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//header1.h
class header2
{
};

class header1
 {
 };

//header2.h
class header1
 {
 };

class header2
{
};


So, da du aber Include Guards benutzt, wird in einer der beiden Dateien nicht inkludiert, da es ja bereits definiert wurde.
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »-insane-« (04.04.2010, 01:39)


little_Progger

Treue Seele

  • »little_Progger« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

28

04.04.2010, 15:02

Ich habe es jetzt erstmal geschaft, auf die Fehlermeldung vom Kompiler nach dem kompilieren einen Blick zu erhaschen ohne das dieser gleich wieder vollkommen abstürzt und ich einen Neustart machen muss.

Quellcode

1
2
Unbehandelte Ausnahme bei 0x0041c471 in SDL_Game.exe: 0xC0000005: 
Zugriffsverletzung beim Lesen an Position 0x0000000c.


Das steht dann immer in einem neuen kleinen Fenster.
Das hatte ich schonmal aber ich weiß nicht warum und da hat leider nur das ausklammern der kompleten CText Klasse geholfen, aber ich weiß nich wo das Problem ist und das neuschreiben hat ja letztes mal schon nichts bewirkt :(

Wenn wer den Quelltext mal sehen möchte soll ma bescheid sagen oder ich schicke ihm das gesamte Projekt.

Gruß

EDIT------------

Ich habe jetzt mal in dem Ereignis Fenster das mir aufgezeigt wurde, ( Mögliche Buttons : Unterbrechen / Weiter / Abbrechen)
auf "Weiter" geklickt und mir wurde dieser ausschnitt im Quellcode aufgezeigt:

Ausschnitt des Ereigniss Fensters mit entsprechendem Quellcode:


(Link)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »little_Progger« (04.04.2010, 15:10)


29

04.04.2010, 15:14

m_pMessage ist nicht richtig initialisiert, überprüf das mal.
Ich weiß es dauert viel zu lange, aber ich habe echt nur Pech. Habe mir heute mal eben im Zeigefinger Nerv und Sehne durchtrennt. Dennoch kann es nicht mehr all zu lange dauern mit dem Tutorial. Außerdem kamen auch noch Prüfungen und dergleichen dazwischen.
Klatscht die Hopper an die Wand, Deutschland ist ein Raverland! :D

little_Progger

Treue Seele

  • »little_Progger« ist der Autor dieses Themas

Beiträge: 188

Wohnort: Nähe Bielefeld

Beruf: Azubi

  • Private Nachricht senden

30

04.04.2010, 15:45

Ich habe jetzt mal geschaut aber eigentlich nichts ungewöhnliches gefunden wo ich dachte das es falsch wäre.

Ich deklariere m_pMessage in der Header Datei wie alle anderen auch:

C-/C++-Quelltext

1
SDL_Surface *m_pMessage;


Anschließend setze ich den Zeiger im Konstruktor auf "NULL":

C-/C++-Quelltext

1
m_pMessage = NULL;


und weise zuletzt dem Zeiger die fertige Message zu:

C-/C++-Quelltext

1
m_pMessage = TTF_RenderText_Solid(m_pFont, ... usw.)


Ich wüsste jetzt nicht wo das problem ist aber mir ist jetzt schonmal aufgefallen das ich überhaupt vergessen hab die TTF_Init () aufzurufen und habe das schnell noch in die Init-Funktion des Frameworks und TTF_Quit () in die Quit Funktion eingetragen.

Werbeanzeige