Anfänger braucht hilfe
-
Ich hab folgendes Problem, ich kenn mich zwar verdammt gut in VB aus, versuch aber grad n bissel C++ zu lernen. Nun hab ich ein Beispiel um auf dem Dreamcast ein Bild darzustellen so verändert das sozusagen einen Animation ablaufen sollte. Doch irgendwie bleibt der Bildschirm schwarz. Kann sich vielleicht mal einer diesen Code anschauen und mir sagen ob ich die schleife so richtig geschrieben hab (Ich weiss das ist nicht die beste lösung, aber fürn anfang sollte es reichen)
int main(void) { int i=0; /* init kos */ pvr_init_defaults(); /* init background */ while(i < 3){ i++; switch( i ) { case 1 : back_init("cd/background1.png"); usleep(5*1000*1000); case 2 : back_init("cd/background2.png"); usleep(5*1000*1000); case 3 : back_init("cd/background3.png"); usleep(5*1000*1000); } } return 0; }
P.s. in back_init wird das bild geladen und ausgegeben. Mich interessiert nur ob das rein theoretisch laufen müsste, oder was falsch ist.
Danke
-
Im Gegensatz zu VB ist am Ende einer case-Anweisung ein break notwendig, damit die nachfolgende case-anweisung nicht ausgeführt wird, also so:
switch( i ) { case 1 : back_init("cd/background1.png"); usleep(5*1000*1000); break; case 2 : back_init("cd/background2.png"); usleep(5*1000*1000); break; case 3 : back_init("cd/background3.png"); usleep(5*1000*1000); break; }
Das void hinter main kannst du weglassen, und das return ist acuih relativ überflüssig, da es bei main automatisch zurückgegeben wird.
Der Rest sieht eigentlich ganz ok aus...
-
Danke, hab jetzt glaúb ich den fehler. Hatte noch was vergessen. back_init initalisiert nur, ich depp muss danach noch die ausgabe funktion aufrufen. :0)
naja bin jetzt trotzdem n bissel schlauer geworden
-
Und du könntest die Schleife und den switch auch weglassen:
back_init("cd/background1.png"); usleep(5*1000*1000); back_init("cd/background2.png"); usleep(5*1000*1000); back_init("cd/background3.png"); usleep(5*1000*1000);
Macht genau das selbe
-
Stimmt, das kommt aber von dem was ich eigentlich vor hatte. Nämlich den Dateinamen aus "cd/background", i und ".png" zusammenzusetzen. In VB wärs ganz einfach zb.
Pfad = "cd/background" & i & ".png"
nur wie das in C++ funzt hab ich leider keinen plan. Wie gesagt ich lerne grad erst C++ weil man bestimmte dinge in VB einfach nicht gebacken bekommt und was mir früher schon aufgefallen ist, das einiges in C++ manchmal einfacher zu ermöglichen ist bzw weniger Code braucht.
-
Ist das der "Algorithmus", mit dem auf dem Dreamcast animationen abgespielt werden ???
Show(Bild1); Sleep (50); Show(Bild2); Sleep(50); Show(Bild3); Sleep(50); //usw....
GENIAL , dadurch wird ein Höchstmaß an Performance garantiert
Großes Lob an die Kollegen von Sega
Gruß
E-the-Real
-
Nein ist es nicht. Das ist nur ein versuch von mir überhaupt erst mal was darzustellen was sich bewegt! klar könnte ich dazu auch n video abspielen lassen, aber ich bin erst mal froh das ich überhaupt n bild darstellen kann. Das soll ja kein Spiel werden sondern nur ne billige animation.
-
BLACKTOOLZ schrieb:
Pfad = "cd/background" & i & ".png"
#include <sstream> ... std::ostringstream pfad_stream; pfad_stream << "cd/background" << i << ".png"; std::string pfad = pfad_stream.str();