Nur ein Bild wird angezeigt...weitere nicht :(



  • Hallo,

    also ich programmiere ein Spiel und ich will viele Bilder anzeigen, doch er zeigt immer nur das erste an...

    for (int i=0; i<=10; i++)
    		{
    			for (int j=0; j<=10; j++)
    			{
    				switch( field[i][j] )
    				{
    				case 0:
    					Graphics()->DrawPic(bmpFreefield, i*32, j*32 + 1, 32, 32);
    					break;
    				case 1:
    					Graphics()->DrawPic(bmpMinefield, i*32, j*32 + 1, 32, 32);
    					break;
    				}
    
    			}
    

    Die Bilder sind dabei am Anfang von BITMAP zu LPDIRECTDRAWSURFACE konvertiert worden. Ich danke allen, die mir helfen wollen 😉



  • solltest du da nicht noch irgendwo den backbuffer leeren und sie tauschen?

    grs Grave



  • ok, sorry, bisschen unvollständig:

    if( !Graphics() ) return;
    		if( !initialized) initialized = InitGame();
    		HRESULT hr;
    		RECT rc = Graphics()->GetGraphicsRect();
    		Graphics()->Cls();
    		for (int i=0; i<=10; i++)
    		{
    			for (int j=0; j<=10; j++)
    			{
    				switch( field[i][j] )
    				{
    				case 0:
    					Graphics()->DrawTextString(i*32, j*32, clrFF0000, "0");
    					Graphics()->DrawPic(bmpFreefield, i*32, j*32 + 1, 32, 32);
    					break;
    				case 1:
    					Graphics()->DrawTextString(i*32, j*32, clrFF0000, "1");
    					Graphics()->DrawPic(bmpMinefield, i*32, j*32 + 1, 32, 32);
    					break;
    				}
    
    			}
    		}
    		Graphics()->Flip();
    

    Edit: Und noch bisschen zum besseren Verständnis:
    Graphics()->Cls(); löscht die Buffer
    field[][] wird mit 0 uns 1 vollgefüllt



  • Kryan schrieb:

    und ich will viele Bilder anzeigen, doch er zeigt immer nur das erste an...

    Entweder siehst du einfach nur das erste Bild oder die anderen Drawcalls schlagen fehl. Was passiert, wenn du das erste Bild weg laesst? f'`8k

    Autocogito

    Gruß, TGGC (\-/ has leading)



  • Ja, danke...
    das Programm hat nur in dem Bereich 0,0,32,32 gezeichnet, weil die Funktion DrawPic fehlerhaft war...

    SetRect(&rc, x, y, x + width, y + height);

    Danke, du hast mich auf die Lösung gebracht 🙂


Anmelden zum Antworten