# Pixelweise Tiles-location herausfinden?



## Schnitter (14. Dez 2007)

Hi,

ich habe eine Map-Klasse, die aus einzelnen Tiles besteht. Dazu habe ich ein 2D-Array.
Mein Screen ist 1024x768px groß, was bei Tiles von 32x32px größe 32x24 Tiles wären.

Ich versuche also das Tile an Maus-Position so herauszufinden:

tileX = (int)(Mouse.getX()/32);
tileY = (int)(Mouse.getY()/24);

funktioniert auch...zumindest im niedrigeren Bereich. Wenn ich an den unteren Bildschirmrand gehe, wird das Ergebnis noch nicht verfälscht(klar).

Aber wenn ich mit der Maus weiter nach oben gehe, verschiebt sich das ergebnis auch immer weiter nach oben - aber auch immer wwiter vom Mauszeiger weg!

Naja - und da liegt auch schon das Problem.

Wie löse ich das/Gibt es auch bessere Ansätze?



MfG


----------



## Guest (14. Dez 2007)

das Problem liegt nicht an deinem geposteten code.


----------



## Guest (14. Dez 2007)

außer deine "Mouse" Klasse gibt falsche Werte zurück...


----------



## Schnitter (14. Dez 2007)

Das ist die Mouse-Klasse der LWJGL, und die hat sonst eigentlich auch gut funktioniert.

Zur Hilfe mal noch die Map-Klasse:
http://nopaste.info/0e1fba67a9.html

und die Start-Klasse:
http://nopaste.info/c05991ceff.html


----------



## Schnitter (15. Dez 2007)

Hat keiner mehr ne Idee?


----------



## Marco13 (15. Dez 2007)

tileY = (int)(Mouse.getY()/*24*); 

public void refreshLocations(){
....
tiles[x][y].setLocation((x*32f)+16f, (y**32f*)+16f);

Das passt (soweit ich das nach einem kurzen Überfliegen beurteilen kann) nicht zusammen. Bei
tileY = (int)(Mouse.getY()/*24*); 
sollte nicht durch die _Anzahl_ der Tiles getile..teilt werden, sondern durch ihre _Größe_ in Y-Richtung. Wenn man davon ausgeht, dass die Tiles 32x32 groß sind, sollte es wohl
tileY = (int)(Mouse.getY()/*32*); 
heißen... Oder besser gleich
private static final int TILE_SIZE_Y = 32;
...
tileY = (int)(Mouse.getY()/*TILE_SIZE_Y*);


----------



## Schnitter (15. Dez 2007)

Wuah, ich liebe dich! 

Daaanke ^^


----------

