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

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

1

13.09.2004, 00:23

NachrichtenSchleife Funktioniert nicht

Hi,

ich hab mal angefangen ein Spiel zu programmieren mit der TBEngine. Bei mir kommt aber immer der Fehler beim erstellen der exe:
error C2664: 'tbDoMessageLoop' : Konvertierung des Parameters 1 von 'tbResult (void)' in 'tbResult (__cdecl *)(float)' nicht möglich

Der Code ist größtenteils aus den BeispielSpielen von David

Hier die Nachrichtenschleife:

C-/C++-Quelltext

1
2
3
4
5
    if(tbDoMessageLoop(::Move, ::Render))
    {
        // Fehler!

        TB_ERROR("Fehler in der Nachrichtenschleife!", TB_ERROR);
    }


Kapselung (wobei ich nicht versteh warum des´ohne nicht funktioniert):

C-/C++-Quelltext

1
2
tbResult Move() {return g_pGQ->Move();}
tbResult Render() {return g_pGQ->Render();}


Move und Render Funktion:

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
// Bewegt das Spiel

tbResult CGalaxyQuest::Move()
{
    /*
    ######################################################################
    #
    #   Bewegt das Spiel
    #
    ######################################################################
    #
    #   Fertig!
    #
    ######################################################################
    */

    // Eingabegeräte abfragen, alten Status kopieren

    memcpy(g_pbOldButtons, g_pbButtons, tbDirectInput::GetNumButtons() * sizeof(BOOL));
    memcpy(g_pfOldButtons, g_pfButtons, tbDirectInput::GetNumButtons() * sizeof(float));
    tbDirectInput::GetState(g_pfButtons, g_pbButtons);

    // Zeit aktualisieren

    FTime = GetFTime();

    // Move Funktionen ausführen

    if(GameState('M'))
    {
        // Fehler!

        TB_ERROR("Fehler in GameState->Move!", TB_ERROR);
    }

    // Globalen Zähler erhöhen

    GTime += GetFTime();

    // Stoppuhr auf Null stellen

    FTimeReset();
    
    return TB_OK;
}

// __________________________________________________________________

// Zeichnet das Spiel

tbResult CGalaxyQuest::Render()
{
    /*
    ######################################################################
    #
    #   Zeichnet das Spiel
    #
    ######################################################################
    #
    #   Fertig!
    #
    ######################################################################
    */

    // Render Funktionen ausführen

    if(GameState('R'))
    {
        // Fehler!

        TB_ERROR("Fehler in GameState->Render!", TB_ERROR);
    }

    // Bildpuffer anzeigen

    if(tbDirect3D::Present())
    {
        // Anzeigen ist fehlgeschlagen!

        // Wahrscheinlich läuft das Programm im Vollbildmodus und es

        // wurde zwischenzeitlich minimiert.


        return TB_ERROR;
    }

    return TB_OK;
}


Danke für Eure Hilfe

Ghandi

Treue Seele

Beiträge: 218

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

2

13.09.2004, 11:43

Klammern nach ::Move und ::Render vergessen?
Alles ist gut so wie es ist, am besten ist jedoch das niemand dies akzeptiert.

error C2039: 'DerSinn' : ist kein Element von 'CLeben'

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

3

13.09.2004, 13:09

Nö, Fehlermeldung kommt immer noch!!

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

4

13.09.2004, 13:09

Nö, Fehlermeldung kommt immer noch!!

Stefan

Alter Hase

Beiträge: 668

Wohnort: Innsbruck

  • Private Nachricht senden

5

13.09.2004, 13:47

ich hatte das selbe Problem:
http://www.scherfgen-software.net/forum/…tbdomessageloop

Leider konnte mir hier auch niemand helfen, ich musste das Projekt neu anlegen, anschließend hatts dann wieder funktioniert!


cya,
Stefan

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

6

13.09.2004, 14:47

was meinst du mit neu anlegen??

NoName

Treue Seele

Beiträge: 118

Beruf: Student

  • Private Nachricht senden

7

13.09.2004, 14:49

::Move und ::Render müssen jeweils noch einen float-Parameter haben:
tbResult Move (float fTime);

bassdscho

Alter Hase

  • »bassdscho« ist der Autor dieses Themas

Beiträge: 1 056

Wohnort: Heuchlingen

Beruf: Student - Technische Informatik

  • Private Nachricht senden

8

13.09.2004, 16:51

Warum?? wird des von tbDoMessageLoop vorausgesetzt oder?

Funktioniert aber, Danke

Werbeanzeige