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
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
void tileScene::getTileID(std::map<int,QPixmap> &map, std::map<int,QPixmap>::iterator &it) { for(it = map.begin(); it != map.end();++it) { if(x - it->second.rect().x() < 32 && y - it->second.rect().y() < 32 && x - it->second.rect().x() >-32 && y - it->second.rect().y() >-32) { std::cout << "test"; } } } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
void tileScene::getTileID(const std::map<int,QPixmap> &map) //const hinzugefügt, da nur ausgelesen wird { for(auto it : map) { if(x - it.second.rect().x() < 32 && y - it.second.rect().y() < 32 && x - it.second.rect().x() >-32 && y - it.second.rect().y() >-32) { std::cout << "test"; } } } |
Das habe ich bis jetzt immerso gemacht, ich weiß das ich das auch mit auto it = liste.begin() lösen könnte.Zitat
Was ich mich aber gerade frage: Warum übergibst du den Iterator als Parameter an die Funktion?
Ja, die Elemente sind alle in der Map drin.Zitat
Debug mal und schau ob da wirklich mehrere Elemente in der Map sind.
Ja sind sie.Zitat
Sind die Mauskoordinaten korrekt?
Ich probiers mal aus dankeZitat
Dank C++11 kannst du das Ganze übrigens auch auf folgendes kürzen:
Die Funktion ist auch noch nicht fertig und ich war zu faul return zu schreiben deshalb habe ich void genommenZitat
Der Name der Fuktion irritiert mich im Übrigen, wenn ich auf ihren Typen gucke.
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Administrator
Ich habe es jetzt anders gelöst und die TileMap in ein QTableWidget geladen, dadurch kann ich dann die aktuelle zeile und spalte herausfinden und damit dann den Index ausrechnen.
Danke für die ganzen Antworten
Klingt nicht so gut, weil du damit Logik und Darstellung vermischst.
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Genau so ist es.Zitat
(Bei einer Tabelle gehe ich auch davon aus, dass man den Inhalt der
Zellen separat zeichnet und nicht die Tiles als Tabellenhintergrund, um
dann die Zellen nur für den Input zu verwenden.)
Werbeanzeige