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

20.06.2010, 18:43

Text in Surface rendern

Hey !
Ich bin relativ neu in der Spieleentwicklung und habe das Buch C++ für Spieleprogrammierer fertig durchgearbeitet.

Ich bin gerade dabei, ein Menü für das Spiel zu schreiben.
Mein Problem dabei ist, dass ich es nicht schaffe, z.B. in den Menüpunkt Optionen, einen Text hineinzurendern,
der z.B. sagt, welches Level ausgewählt ist.

Ich poste mal meinen Code für das Menü:

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
Menue.hpp:

#ifndef MENUE_HPP
#define MENUE_HPP

#include "Sprite.hpp"

#define MenueStart  1
#define MenueOption 2
#define MenueHighscore 3
#define MenueQuit   4

class CMenue
{
public:
    CMenue();
    void Init();
    void Update();
    void Quit();
    void RenderText(const char Text);

    int GetSelected() { return (m_MenueSelected);}
    bool GetOpened() { return (m_bOpen); }
    bool IsClicked() { return (m_bMenueIsClicked); }
    void SetClicked(bool bStatus) {m_bMenueIsClicked = bStatus; }
    void SetOpened(bool bStatus) { m_bOpen = bStatus; }

private:
    void MenueSelection();
    void Load(int Menue_ID);
    void Render();
    CSprite *m_pSpriteMenue; //Sprite des Menues
    SDL_Surface *m_SurText; //Surface für einen Text
    bool m_bOpen; //Menü geöffnet?
    bool m_bMenueIsClicked; // Ist das Menü angeklickt worden?
    int m_MenueSelected; //Welches Menü angewählt wurde
};

#endif


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
Menue.cpp:

//Funktion zum Rendern eines Textes
void CMenue::RenderText(const char Text)
{
    TTF_Font *Font;
    SDL_Color txtColor;

    Font = TTF_OpenFont("Data/Font/arsis.ttf",sizeof(Font));
    txtColor.r = 0;
    txtColor.g = 0;
    txtColor.b = 0;

    SDL_Rect Text_Pos;
    Text_Pos.x = 10;
    Text_Pos.y = 10;

    m_SurText = TTF_RenderText_Solid(Font,&Text,txtColor);

    SDL_BlitSurface(m_SurText,NULL,g_pFramework->GetSurface(),&Text_Pos);

    SDL_FreeSurface(m_SurText);
}


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
main.cpp:

#include "Framework.hpp"
#include "Game.hpp"

#include "Menue.hpp"

int main (int argc, char *argv[])
{
    //Framework initialisieren
    if( g_pFramework -> Init(800,600,16,false) == false)
        return (0);
   
    CMenue *p_Menue;
    p_Menue -> Init();
    p_Menue ->RenderText("Hallo");

    g_pFramework -> Flip();

    delete(p_Menue);
    //Framework herunterfahren
    g_pFramework -> Quit();
    g_pFramework -> Del(); //Zeiger auf Instanz löschen 
}


--> Mein Problem:
Ich kann damit keinen Text rendern.

C-/C++-Quelltext

1
2
c:\dokumente und einstellungen\johannes\eigene dateien\c++ für spieleprogrammierer\selbst erstellt\sdl_game\main.cpp(27) : error C2664: 'CMenue::RenderText': Konvertierung des Parameters 1 von 'const char [6]' in 'const char' nicht möglich
        Es gibt keinen Kontext, in dem diese Konvertierung möglich ist


Bin über eure Hilfe sehr dankbar !!!

Liebe Grüße
Ombalat

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

20.06.2010, 19:05

C-/C++-Quelltext

1
2
3
void RenderText(const char* Text);

void CMenue::RenderText(const char* Text)
@D13_Dreinig

3

20.06.2010, 19:17

Danke für die schnelle Antwort =)

Jetzt bekomme ich zwar keine Fehlermeldung mehr, allerdingst wird mir ein Leeres Bild gezeigt, beim Ausführen des Programms.

Sollte ich jetzt nicht ein "Hallo" am Bildschirm sehen?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

4

20.06.2010, 19:20


Sollte ich jetzt nicht ein "Hallo" am Bildschirm sehen?


Weiß nicht, möglich ist alles... ;)
@D13_Dreinig

5

20.06.2010, 19:40

Hab das roblem soeben gelöst.

Ich habe nur ein Schwarzes Bild gesehen, weil ich den Text in Schwarz ausgegeben habe ^^

Jetzt bekomme ich für mein Hallo nur 5 Rote Quadrate :o --> werd mich wohl etwas herumspielen müssen :)

CBenni::O

1x Contest-Sieger

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

6

20.06.2010, 19:50

Dann scheint er eine Font nicht laden zu können...

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

7

20.06.2010, 19:57

Jepp, habs mit einer anderen Font - Datei ausprobiert --> Die schrift gefällt mir zwar nicht besonders, hätte lieber eine normale Schrift wie Arial oder so --> ABER es funktioniert wenigstens =)

Danke für die Hilfe und das es so schnell gegengen ist =)

Werbeanzeige