Ćwiczę proste programowanie gier 2D i wymyśliłem teorię, która podczas animacji (rzeczywista zmiana położenia obrazu jest najlepiej obliczana z liczb zmiennoprzecinkowych). Mam wrażenie, że jeśli przesuniesz obraz z ints animacja nie będzie tak gładka.Co stanie się, gdy konwertujesz podwójne (lub pływające) na ints?
W Javie wydaje się, że nie można narysować obrazu z liczbami zmiennoprzecinkowymi, aby nadać obrazowi pozycję. Ale najwyraźniej, kiedy początkowo zadeklarujesz swoje numery, możesz zadeklarować je jako Double lub Float, a jeśli chodzi o rysunek, musisz je przesłać do int. Jak znajdę HERE:
/**
* Draw this entity to the graphics context provided
*
* @param g The graphics context on which to draw
*/
public void draw(Graphics g) {
sprite.draw(g,(int) x,(int) y);
}
Moje pytanie brzmi, jak Java obsługuje konwersję? Jeśli kod rzuca te dwójki w ostatniej chwili, dlaczego ma je jako dwójka? Czy Java ukrywa liczby po przecinku?
Wiem, że w C i C++ liczby po przecinku zostają odcięte i widać tylko to, co przed nim. W jaki sposób Java obsługuje ten odlew?
Po prostu upuszcza dziesiętne, tak samo jak C, C++. http://www.fluffycat.com/Java/Casting/ – dmcnelis
Powinieneś wykonywać obliczenia w podwójnej ilości, jak tylko możesz, a kiedy w końcu przekazujesz ją do metody akceptującej int, robisz Math.round(). – Stephan