[C++ / SFML]



  • Ich möchte in meinem Projekt ein Feld erzeugen mit Hilfe von Vektoren.
    Ich habe 2 verschiedene Arten von Feldern, eine Namens Erde und die andere Namens Luft. Wenn ich das Programm starte werden jedoch nur Erdfelder erzeugt.

    Erzeugung:

    std::vector<std::vector<int>> Karte;
    	std::vector<int> TempKarte;
    
    	for(int x=0; x<40; x++)
    	{
    		for(int y=0; y<22; y++)
    		{
    			TempKarte.push_back(1);
    		}
    		Karte.push_back(TempKarte);
    	}
    
            Karte[0][0] = 0;
    	Karte[0][2] = 0;
    	Karte[3][5] = 0;
    
    	std::vector<Feld> Map;
    	for(int x=0; x<40; x++)
    	{
    		for(int y=0; y<22; y++)
    		{
    			if(Karte[x][y] == 0) 
    			{
    				Feld field = Feld("air.png",x*35,y*35);
    				Map.push_back(field);
    			}
    			else if (Karte[x][y] == 1) 
    			{
    				Feld field = Feld("dirt.png",x*35,y*35);
    				Map.push_back(field);
    			}
    			else std::cout << "ERROR" << std::endl;
    		}
    	}
    

    Zeichnen:

    for(int i=0; i<880; i++)
    		{
    			Map[i].Render(window);
    		}
    


  • Deine Frage ist völlig unklar. Sicher ist

    std::vector<int> TempKarte;
    

    möchtest du innerhalb der ersten for Schleife haben.



  • Aha, Erde ist dann wohl dirt.png. Dann prüfe mit dem Debugger, ob überhaupt air.png Felder erzeugt werden. Wenn ja, ist entweder Feld kaputt (das du nicht zeigst) oder aber der Renderbereich.


Log in to reply