Wahrscheinlich ein total dummer Fehler: Wieso funktionieren die Forschleifen nicht?
-
Es geht darum das auf einer Karte per Mausklick ein Gebäude platziert werden soll, welches in diesem Fall 2x2 Felder groß ist, hier der Code:
bool Editor::CheckBuildPlace(int position_x, int position_y, int buildinglength, int buildingwidth) { int x = position_x/32; // Durch Tilegröße damit man ent. Tile erhält int y = position_y/32; int a = x+buildinglength-1; int b = y+buildingwidth -1; for(y; y<=b; y++) { for(x; x<=a; x++) { // Prüfe forsche mache return(0); } } return(1); }
In X Richtung überprüft er perfekt, aber er weigert sich in der y richtung weiter zu suchen. Sorry wenn es zu dürftig beschrieben ist aber ich bin gerade auf dem Sprung (und freue mich eure Antworten zu lesen wenn ich gleich daheim bin
)
-
Du solltest x für die innere Schleife zurücksetzen.
-
for(y; y<=b; y++) { for(x=position_x/32; x<=a; x++) { // Prüfe forsche mache } }
(zu spät, aber ich wiederhole gerne jemand)
-
besten dank
-
euch ist aber klar, dass das x bei
for(x;foo;bar)
nix macht, oder?
-
Ich hab gelernt sowieso immer folgendes zu schreiben:
for(x=0;x<256;x++) cout << static_cast<char>(x);
nur mal als Beispiel, oder noch besser, aber in deinem Fall halt nicht machbar(aber hier):
for(unsigned char x=0;x<256;x++) cout << static_cast<char>(x);
Also gleich mit Deklarieren.
Aber das ist Geschmackssache.
-
@Nimda: mit deinem unsigned char veursachst Du aber eine herrliche Endlosschleife. Sowas macht man nicht!!!
-
recht hast du.
Also:cout << static_cast<char>(0); for(unsigned char x=1;x>0;x++) cout << static_cast<char>(x);
Besser?
Man kann die erste Zeile auch weglassen, wenn man die 0 nicht braucht.edit: Ohne solche Fehler macht das Programmieren doch nur halb so viel Spaß, was auch viel Spaß macht:
while(x!=0); { //Hier wird jetzt x ermittelt. }
-
Nimda schrieb:
Besser?
*lol* nein
statt c<256 mach doch einfach c<=255
-
Shade Of Mine schrieb:
statt c<256 mach doch einfach c<=255
Ich schrieb:
for(unsigned char x=0;x<=255;x++) cout << static_cast<char>(x);
g++ schrieb:
comparison is always true due to limited range of data type
mal davon abgesehen, dass unsigned char nicht char ist.