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

31

08.03.2009, 19:51

Mhh... Stimmt.
Wie könnte ich das denn sonst machen?
Ich hoffe du weist was ich meine.
Des soll halt eine Funktion sein, wo ich das Font und die Größe so bestimmen kann und nicht wie sonst des StandardFont verwendet wird.

Also ich muss einfach

TTF_CloseFont (m_pFont);
TTF_Init();

löschen.
Aber dann geht es immer noch nicht, es werden dann trotzdem für alle Texte dieses Font und die Größe übernommen.
------------------

Jonny :)

32

08.03.2009, 19:57

Die Zeile hast du vergessen:

C-/C++-Quelltext

1
m_pFont = TTF_OpenFont (FontName, Fontsize); 


Und ist ja klar, dass die anderen Texte denselben Font haben (Verwendung von m_pFont ).

Was hält dich davon ab, mehrere Schriftarten zu laden?
fka tm

33

08.03.2009, 20:33

Wie meinst du des mit mehrere Schriftarten laden?

Wie soll ich das dann machen?

Meine Funktion kann ich ja dann wegwerfen, wenn auch die 3. Zeile weg muss.

Kannst du mir das mal genauer erläutern?
------------------

Jonny :)

34

08.03.2009, 21:42

Mach aus m_pFont einen Vektor oder ein Array.
Oder m_pFont1, m_pFont2...

Die Render-Funktion macht m.E. nicht viel Sinn, wenn du dort erst den Font lädst.
Das könntest du auch in eine Init-Funktion packen.
Und naja, wegwerfen!? Kleine Codeänderungen halt ;).
So groß ist dein Programm ja auch nicht, vermute ich mal.
fka tm

35

08.03.2009, 22:57

Ok danke funktioniert jetzt.
Ich hab mal wieder viiieeeel zu kompliziert gedacht.

:D

Btw, kann man sich diese komische Spinne da aus deiner Sig auch als Desktophintergrund einrichten?
Dass die sich dann da so bewegt :) :)
------------------

Jonny :)

36

09.03.2009, 08:07

Und, wie hast du es gelöst?
---

Kannst dir ja eine komische Spinne programmieren. ;)
Drakon hat hier mal ein Tutorial über Windows Gadgets gepostet.

(btw Avatare sind die Bildchen, das andere ist die Signatur)
fka tm

37

09.03.2009, 14:35

Ach stimmt, ist ja auch egal^^.

Gelöst habe ich es folgendermaßen:

CText.cpp:

C-/C++-Quelltext

1
2
3
4
5
6
    void RenderText (const char *Text, int Color_R, int Color_G, int Color_B, int XPos,int YPos, 
                     int NumberofFontArray);

//Das ist meine Funktion, die Variable NumberofFontArray soll die Zahl im Array sein


    TTF_Font *m_pFont[2];          // Zeiger auf die Schriftart


CTex.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
//im Konstruktor

    m_pFont[0] = TTF_OpenFont("Data/KingArthur.ttf", 28);
    m_pFont[1] = TTF_OpenFont("Data/ariblk.ttf", 24);

//im Destruktor

    TTF_CloseFont(m_pFont[0]);
    TTF_CloseFont(m_pFont[1]);
    TTF_Quit ();

//und meine Funktion:

void CText::RenderText(const char *Text, int Color_R, int Color_G, int Color_B, int XPos, int YPos,
                       int NumberofFontArray)
{
    m_Rect.x = XPos;
    m_Rect.y = YPos;
    SDL_Color m_Color = {Color_R, Color_G, Color_B};
    SDL_Surface *TextToRender = NULL;
    TextToRender = TTF_RenderText_Solid (m_pFont[NumberofFontArray], Text, m_Color);
    SDL_BlitSurface (TextToRender, NULL, m_pScreen, &m_Rect );

}


Die Klasse kann ich jetzt ganz einfach erweitern, indem ich einfach das Array vergrößere und dann noch die gewünschten Fonts öffne.
------------------

Jonny :)

baz

Frischling

  • Private Nachricht senden

38

14.03.2009, 13:52

Hallo ich bin's mal wieder,
ich hab die Texte von JoNnY in meine eingebaut, doch jetzt bekomme ich folgende Fehlermeldung:

Quellcode

1
2
3
4
5
6
7
8
9
--------------------Konfiguration: SDL_Game - Win32 Debug--------------------
Kompilierung läuft...
Asteroid.cpp
Framework.cpp
Game.cpp
c:\projekte\spielms\game.cpp(54) : fatal error C1001: INTERNER COMPILER- FEHLER
        (Compiler-Datei "msc1.cpp", Zeile 1786) 
         Bitte wählen Sie im Menü "?" von Visual C++ 
         den Befehl "Software Service", oder öffnen Sie die Hilfedatei für den Software Service, um weitere Informationen zu erhalten

Auf der Microsoft Hilfeseite stand nur, dass ich mein Projekt bereinigen soll. Der Fehler blieb aber bestehen.

39

14.03.2009, 14:52

Zeig bitte mal den Code der game.cpp.
Und markiere die Zeile 54, an der sich der Compiler verabschiedet.
fka tm

baz

Frischling

  • Private Nachricht senden

40

14.03.2009, 15:02

hier:

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
void CGame::Init ()
{
  // Neuen Spieler initialisieren

  m_pPlayer = new CPlayer;
  m_pPlayer->Init ();
  m_pPlayer->Reset ();

  // Hintergrundbild (Sprite) laden

  m_pSpriteBackground = new CSprite;
  m_pSpriteBackground->Load ("Data/Background.bmp");

  // Sprite für Asteroiden laden

  m_pSpriteAsteroid = new CSprite;
  m_pSpriteAsteroid->Load ("Data/Asteroid.bmp", 20, 64, 64);
  m_pSpriteAsteroid->SetColorKey (255, 0, 255);

  // Timer für Asteroiden zurücksetzen

  m_fAsteroidTimer = 0.0f;

 
  //Instanz eines Textes

  m_pText = new CText ;  // in der Init Funktion von CGame




// RenderText

//

// Aufgabe: Text auf den Bildschirm ausgeben (Standard)

//

  void CText::RenderText (const char *Text)
  {
    SDL_Color m_Color = {0,0,0};
    SDL_Surface *TextToRender = NULL; // Text, der später gerendert wird

    TextToRender = TTF_RenderText_Solid(m_pFont, Text, m_Color);
    SDL_BlitSurface(TextToRender, NULL, m_pScreen, &m_Pos);
  } // RenderText



  // Spiel läuft

  m_bGameRun = true;

} // Init




{-unter:" void CText::RenderText (const char *Text)" ist Zeile 54

Werbeanzeige