Kleines logisches Problem in meinem Programm.
-
das sprite wird ohne fehler geladen, falls du das meinst. wenn ich nur eines von beiden zeichnen lasse funktioniert das ja prima.
-
schreib mal das
std::cout << "Sprites.size()=" << sprites.size() << std::endl;
als erste zeile in void Barkanoid::Application::run()
(include <iostream> nicht vergessenwuerd mich interessieren ob da dann immer 0 steht
da naechste checkpunkt waer dann in der loop
if(sprites[i]->visible()){
//kommt er jede loop daher?
sprites[i]->draw();
}und im sprite
if(m_visible)
{
//macht er das jede loop fuer jede was gezeichnet werden soll?
SDL_BlitSurface(m_bitmap,&m_src,m_screen,&m_position);
}
-
Sorry dAhA, dass ich deine Vorschläge ignoriere, jedoch liegt der Fehler sicher woanders.
Es ist langsam zum verzweifeln. Folgende Anwendungsfälle funktionieren wenn die Taste "Pfeiltaste nach oben" gedrückt wurde: [code jetzt leicht abgeändert]
Anwendungsfall 1:
while(SDL_PollEvent(&event)) { switch(event.key.keysym.sym) { case SDLK_UP: std::cout<<"lolol"; //Funktioniert! break; case SDLK_DOWN: break; case SDLK_ESCAPE: return EXIT_PROGRAM; break; } switch(event.type) { case SDL_QUIT: return EXIT_PROGRAM; break; } }AnwFall 2:
//bissel gekürzt switch(event.key.keysym.sym) { case SDLK_UP: return EXIT_PROGRAM; //funzt break; case SDLK_DOWN: break; case SDLK_ESCAPE: return EXIT_PROGRAM; break; }Aber vollkommen unlogischerweise funktioniert folgendes nicht:
switch(event.key.keysym.sym) { case SDLK_UP: newGame->visibility(false); break; case SDLK_DOWN: break; case SDLK_ESCAPE: return EXIT_PROGRAM; break; }wenn ich jedoch schlicht und einfach irgendwo anders an der stelle des codes die sichtbarkeit ausstelle, verschwindet das sprite wie es soll.
langsam bin ich echt ratlos
debugger gibt auch keine anderen werde als erwartet.
-
TravisG schrieb:
if(keys[SDLK_UP] || keys[SDLK_DOWN]) newGameIsSelected = !newGameIsSelected;ist das dauernde flippen absicht?
-
TravisG schrieb:
Sorry dAhA, dass ich deine Vorschläge ignoriere, jedoch liegt der Fehler sicher woanders.
naja, dann wuensch ich dir weiterhin viel spass beim fehler suchen
edit:
ich finds lustigTravisG schrieb:
Es ist langsam zum verzweifeln.
TravisG schrieb:
langsam bin ich echt ratlos
bei mir geht dein prog mittlerweile, gratulation, ist damit auf mehreren plattformen lauffaehig, einmal is neues spiel hell, einmal dunkel..
-
@TravisG: Lern einfach mal den Debugger benutzen. f'`8k
AutocogitoGruß, TGGC (making great games since 1992)
-
daHa schrieb:
TravisG schrieb:
Sorry dAhA, dass ich deine Vorschläge ignoriere, jedoch liegt der Fehler sicher woanders.
naja, dann wuensch ich dir weiterhin viel spass beim fehler suchen
edit:
ich finds lustigTravisG schrieb:
Es ist langsam zum verzweifeln.
TravisG schrieb:
langsam bin ich echt ratlos
bei mir geht dein prog mittlerweile, gratulation, ist damit auf mehreren plattformen lauffaehig, einmal is neues spiel hell, einmal dunkel..
kein grund gleich sauer zu werden, jeder kann sich ja mal irren. ich glaub ich weiss jetzt worauf du hinaus wolltest, hab das wohl irgendwie überlesen. da du wohl hier kein bock mehr hast versuch ich jetzt rauszufinden wie ich den fehler mit sprite.size() = 0 behebe.
edit:
TravisG schrieb:
jeder kann sich ja mal irren
sorry, bis auf tggc natürlich.
-
bin und war nicht sauer
vielleich hilft dir das zu einem erfolgerlebnis
constructor
destructor
copyconstructor
zuweisungsoperator
haengt wie mit
variable
referenz
pointer
zusammen, insbesondere, bezug zu deinem problem, wenn mans an funktionen uebergibtfunktionen die behauten etwas zurueckzugeben sollten das auch tun
zuerst wild drauflos coden und sich um speicherfreigaben dann zu kuemmern ist ganz schlecht
compiler warnings sollte man ernst nehemn
-
daHa schrieb:
bin und war nicht sauer
vielleich hilft dir das zu einem erfolgerlebnis
constructor
destructor
copyconstructor
zuweisungsoperator
haengt wie mit
variable
referenz
pointer
zusammen, insbesondere, bezug zu deinem problem, wenn mans an funktionen uebergibtdanke, im moment versteh ich noch nicht was du damit sagen willst, aber vielleicht find ich das noch raus

-
hm.. so wie es aussieht wird das Objekt der Klasse GS_Mainmenu irgendwo gelöscht / neu erstellt oder ich habe irgendwas anderes verpasst. nach deinem tip probierte ich mal das mit einem counter aus:
int run (t Application) { //... ++counter; std::cout<<"counter: "<<counter<<std::endl; //.. }und es wird tatsächlich immer 1 ausgegeben.
jetzt muss ich noch rausfinden wo das speicherproblem entsteht, auf den ersten blick sehe ich hier nichts weiter.
-
Vielleicht jetzt einfach mal an den richtigen Stellen die Breakpoints setzen? f'`8k
AutocogitoGruß, TGGC (making great games since 1992)
-
int run (t Application)
was passiert da?
constructor
destructor
copyconstructor
zuweisungsoperatorund warum?
und wie koenntest da was beeinflussen?wennst das hast bist einen wirklichen schritt weiter gekommen, dann fehlt dir nur mehr sauberes aufraeumen, und aja, das mit den rueckgabewerten von funktionen
so nutz man optimal einen regentag
-
ja, das problem ist endlich gelöst. jetzt wo ich es entdeckt habe erscheint es mir doch ziemlich doof, so etwas zu übersehen. danke für die hilfe