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

09.04.2012, 20:09

Problem mit TriBase bei eigenem Spiel/Breakanoid

Hallo Leute!
Ich hab schon etwas länger das Buch 3D-Spieleprogrammierung gekauft gehabt. Nun versuche ich mich daran,
ein eigenes SPiel mit dem WIssen aus dem Buch zu schreiben. Den Grundaufbau habe ich größtenteils von Breakanoid übernommen.
Nun hab ich aber das Problem, das bei der Run Methode der Hauptklasse CShooter (unter Breakanoid CBreakanoid)
Fehler gefundne wurden. An dem Teil habe ich aber nichteinmal was verändert.

C-/C++-Quelltext

1
2
3
4
5
6
7
tbResult CShooter::Run(){
    if(tbDoMessageLoop(::Move, ::Render))
    {
        TB_ERROR("Fehler in der Nachrichtenschleife!", TB_ERROR);
    }
    return TB_OK;
}


Und zwar bei ::Move und ::Render

Quellcode

1
2
3
4
1>d:\nico\projekt shooter\projekt shooter\src\main.cpp(181): error C2039: 'Move': Ist kein Element von '`global namespace''
1>d:\nico\projekt shooter\projekt shooter\src\main.cpp(181): error C3867: "CShooter::Move": Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie "&CShooter::Move", um einen Zeiger auf den Member zu erstellen.
1>d:\nico\projekt shooter\projekt shooter\src\main.cpp(181): error C2039: 'Render': Ist kein Element von '`global namespace''
1>d:\nico\projekt shooter\projekt shooter\src\main.cpp(181): error C3867: "CShooter::Render": Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie "&CShooter::Render", um einen Zeiger auf den Member zu erstellen.


Ich hab auch schon versucht den vorschlag vonn VC anzunehmen, bekamm dann aber den Fehler:

Quellcode

1
2
3
1>d:\nico\projekt shooter\projekt shooter\src\main.cpp(181): error C2664: 'tbDoMessageLoop': Konvertierung des Parameters 1 von 'tbResult (__thiscall CShooter::* )(float)' in 'tbResult (__cdecl *)(float)' nicht möglich
1>          Es gibt keinen Kontext, in dem diese Konvertierung möglich ist
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Ich weiß echt nicht weiter und hoffe ihr könnt helfen.
Ich benutze VC++ 2010 Express

Grüße,
Nico
PS: Nettes Forum! ;)

Sp3iky

Treue Seele

Beiträge: 232

Beruf: Entwicklungsingenieur

  • Private Nachricht senden

2

09.04.2012, 20:16

Die Funktionen Move und Render müssen natürlich existieren, damit sie im Messageloop aufgerufen werden können. Vergleiche das mal mit dem Beispielprojekt.

3

10.04.2012, 19:41

Hab ich, und sie sind auch da.
Ich hab das Problem jetzt so gelöst, das ich zwei Funktionen erstellt habe, die nur die Render bzw. Move Funktion von CShooter aufrufen. So geht es jetzt, aber ist das richtig?
Ansonsten trotzdem danke für deine Hilfe!
(Manoman, wenn das so weitergeht... DAS war doch nur der Anfang xD)
Naja, wenn es so ok ist mach ich mal ein wenig gedanken sport und überlege welche Physik Engine ich nehme :)
Oder mach ich mir slebst was kleines hm... naja... aber damit will ich jetzt nicht das Forum belasten :D
IM LAufe dieses Projektes werdet ihr bestimmt noch einige Fragen von mir bekommen...

FSA

Community-Fossil

  • Private Nachricht senden

4

11.04.2012, 07:17

Sicher das du jetzt schon über Physik nachdenken willst? Ich spreche aus Erfahrung :) Habe selbst so voreilig und alleine was machen wollen, und bin dann tierisch auf die Schnautze gefallen :) Man hat mich schließlich umgestimmt und jetzt bin ich froh auf die Tipps hier gehört zu haben.
MfG.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Werbeanzeige