Witajcie,
Chcę napisać aplikację w której poruszamy się samochodzikiem po ekranie [nic więcej]. Aktualnie mój projekt składa się z klas:
- Klasa koło
- klasa karoseria
- klasa auto
- klasa płótno
W klasie auto tworze 4 obiekty koło i jeden obiekt karoseria i tutaj zaczyna się 1 problem bo po ekranie muszę przemieszczać 5 obiektów.
Funkcja rysująca jest wywoływana cyklicznie, dysponuję obsługą klawiatury.
każdy element to obrazek o pewnych współrzędnych x,y oraz własnej szerokości i wysokości
aktualnie:
- Strzałka w górę zmniejszam współrzędną y każdego obiektu o -1 co cykl;
- Strzałka w dół zwiększam współrzędną y każdego obiektu o 1 co cykl;
- strzałka lewo/prawo - wykorzystuję ,,AffineTransform" wyznaczam oś obrotu mniej więcej w środku koła i obracam je.
tzn mogę jechać do przodu/ do tyłu i skręcać kołami w prawo i lewo
public void Rysuj(Graphics g)
{
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(karoseria.getImage(), karoseria.x, karoseria.y, null);
if(RotateFlag == 1)
{
// transformacja wzgledem dolnych kol
AffineTransform at = AffineTransform.getTranslateInstance(LwheelD.x, 55/2+ RwheelD.y-182);
AffineTransform at2 = AffineTransform.getTranslateInstance(RwheelD.x , 55/2+ RwheelD.y-182);
at.rotate(Math.toRadians(Rotate), 24/2, 55/2);
at2.rotate(Math.toRadians(Rotate), 24/2, 55/2);
g2d.drawImage(LwheelU.getImage() , at, null);
g2d.drawImage(RwheelU.getImage() , at2, null);
}
else
{
g2d.drawImage(LwheelU.getImage(), LwheelU.x, LwheelU.y, null);
g2d.drawImage(RwheelU.getImage(), RwheelU.x, RwheelU.y, null);
}
g2d.drawImage(LwheelD.getImage(), LwheelD.x, LwheelD.y, null);
g2d.drawImage(RwheelD.getImage(), RwheelD.x, RwheelD.y, null);
}