instrukcja - Transportu

instrukcja - Transportu instrukcja - Transportu

09.03.2014 Views

Laboratorium z informatyki sem. II/ćw. 5 Wydział Transportu PW - 2012/13 public void stop(){ alfa0=0; alfa=0; ruch=false; } 3. Aby umożliwić uruchamianie i zatrzymywanie wahadła za pomocą myszy, dodaj do nagłówka apletu słowa implements MouseListener. Zaimportuj ten interfejs, utwórz wszystkie jego abstrakcyjne metody, usuń w nich instrukcje throw … wyrzucające wyjątek, a metodę mousePressed() uzupełnij do postaci: public void mousePressed(MouseEvent e) { if(e.getButton() == MouseEvent.BUTTON1){ int x=e.getX(); int y=e.getY(); W.start(Math.atan2(x-getWidth()/2, y-30)); }else W.stop(); } 4. Uzupełnij metodę init() instrukcją dodającą nasłuch akcji: addMouseListener(this); 5. Uruchom aplet i sprawdź jego działanie. // początkowy kąt wychylenia jest wskazany myszą IV Przykład apletu z animacją – symulacja kuli bilardowej 1. Utwórz nowy projekt typu Java Class Library zapisz go w folderze roboczym pod nazwą Aplet4. Dodaj do projektu klasę typu JApplet o nazwie Kula. 2. Na początku klasy Kula umieść następujące deklaracje pól: int x=0, y=0, d=30, dx = 3, dy = 5 , dt=20; 3. W treści metody init() wpisz wywołanie metody ustawiającej kolor tła: setBackground(Color.green); 4. Utwórz metodę paint(), która na kanwie obiektu graficznego ma rysować kulę jako czerwone koło wpisane w kwadrat o lewym górnym wierzchołku (x, y) i boku d: public void paint(Graphics g) { g.clearRect(0, 0, getWidth(), getHeight()); g.setColor(Color.red); g.fillOval(x, y, d, d); } 5. Uruchom aplet, a następnie dopisz na początku metody paint() instrukcje, które spowodują rysowanie kuli w odstępach czasu dt oraz przesunięcie kuli o wektor (dx, dy) i zmianę kierunku ruchu, jeśli kula dotarła do brzegu okna: public void paint(Graphics g) { x += dx; y += dy; if (x >= getWidth()-d || x = getHeight()-d || y

Laboratorium z informatyki sem. II/ćw. 5 Wydział Transportu PW - 2012/13 Pliki z obrazkami są czytane za pomocą konstruktora klasy ImageIcon, który umożliwia wczytywanie plików graficznych GIF, JPG lub PNG. Parametr konstruktora ImageIcon() określa adres URL pliku graficznego. 5. Utwórz metodę paint(), wpisując w niej instrukcje rysowania kolejnego obrazka: public void paint(Graphics g) { try { rys [nr].paintIcon(null, g, 100, 50); }catch (Exception e) { g.drawString("Błąd grafiki", 100, 100);} } 6. Uruchom aplet a następnie dopisz w treści metody paint() instrukcje, które w odstępach czasu dt będą rysować kolejne klatki animacji o numerach od 0 do 16: public void paint(Graphics g) { // dotychczasowa treść metody nr++; // zwiększenie nr o 1 if (nr > 16) {nr = 0;} // jeżeli nr przekroczył 16, jest ponownie zerowany try { Thread.sleep(dt); } catch (InterruptedException e){} repaint(); } 7. Uruchom aplet. Spróbuj w ten sam sposób wykonać animację wykorzystując przykładowe obrazki z pakietu JDK, które znajdziesz w folderze X:\Informatyka\I1\Beans Zadania do samodzielnego wykonania 1. Zmiana koloru kuli. Zmodyfikuj Aplet4 tak, aby przy odbiciu kuli od krawędzi okna kolor kuli zmieniał się na losowy odcień czerwieni. Wskazówka: W klasie Kula zadeklaruj nowe pole klasy Color o nazwie kolor i wartości początkowej Color.RED; wykorzystaj to pole w metodzie paint(), jako parametr wywołania metody g.setColor(). W metodzie paint() dopisz w odpowiednich miejscach instrukcję zmieniającą wartość pola kolor: kolor=new Color((int)(256*Math.random()), 0, 0); 2. Wykorzystanie myszy do uruchamiania i zatrzymywania kuli. Zmodyfikuj Aplet4 tak, aby umożliwić uruchamianie i zatrzymywanie kuli po naciśnięciu lewego lub prawego przycisku myszy w oknie apletu. Wskazówka: W klasie Kula zadeklaruj nową zmienną typu boolean o nazwie ruch. W metodzie paint() wykorzystaj tę zmienną, umieszczając instrukcje zmieniające położenie kuli wewnątrz instrukcji warunkowej: if (ruch) { x += dx; y += dy; } Zaimplementuj interfejs MouseListener, zaimportuj go i utwórz wszystkie jego abstrakcyjne metody, usuń w nich instrukcje throw wyrzucające wyjątek, a w metodzie mousePressed() wpisz instrukcję zmieniającą wartość zmiennej ruch na true albo false, zależnie od tego, który przycisk myszy został naciśnięty. 3. Wesoły bałwan. Utwórz nowy aplet z ruchomym bałwankiem, rysowanym na kanwie graficznej za pomocą kilku elips, odcinka i prostokąta (jak na rysunku obok). Bałwanek porusza się pionowo od środka dolnej krawędzi okna do połowy wysokości, po czym zawraca do dołu okna, gdzie rozpoczyna kolejny ruch do góry itd. Wskazówka: Wzorując się na symulacji kuli bilardowej utwórz nowy aplet lub skopiuj projekt Aplet4 i zmodyfikuj jego treść. W metodzie rysuj() wpisz instrukcje, które zamiast jednego koła pozwolą narysować złożoną figurę. Wybierz jeden punkt (x, y), będący punktem odniesienia dla rysowanych figur. W metodzie paint() odpowiednio zmodyfikuj warunek zmiany kierunku ruchu. 4. Zmiana kierunku ruchu w animacji poklatkowej. Zmodyfikuj Aplet5 tak, aby Duke (maskotka Javy) przesuwał się na zmianę raz w lewo, raz w prawo. Wskazówka: W klasie Obrazki zadeklaruj pole typu boolean o nazwie powrót. W metodzie paint(), wewnątrz instrukcji if (nr > 16) {…} (po wyświetleniu 17-tu klatek) zmieniaj wartość tego pola na przeciwną instrukcją powrót = !powrót; W metodzie rysuj(), przy pomocy instrukcji warunkowej, określ numer obrazka wyświetlanego metodą paintIcon() jako nr, jeżeli pole powrót ma wartość false lub jako 16-nr, jeżeli pole powrót ma wartość true. Materiały do użytku wewnętrznego strona 3

Laboratorium z informatyki sem. II/ćw. 5 Wydział <strong>Transportu</strong> PW - 2012/13<br />

public void stop(){<br />

alfa0=0; alfa=0; ruch=false;<br />

}<br />

3. Aby umożliwić uruchamianie i zatrzymywanie wahadła za pomocą myszy, dodaj do nagłówka apletu słowa<br />

implements MouseListener. Zaimportuj ten interfejs, utwórz wszystkie jego abstrakcyjne metody, usuń w nich<br />

instrukcje throw … wyrzucające wyjątek, a metodę mousePressed() uzupełnij do postaci:<br />

public void mousePressed(MouseEvent e) {<br />

if(e.getButton() == MouseEvent.BUTTON1){<br />

int x=e.getX();<br />

int y=e.getY();<br />

W.start(Math.atan2(x-getWidth()/2, y-30));<br />

}else W.stop();<br />

}<br />

4. Uzupełnij metodę init() instrukcją dodającą nasłuch akcji: addMouseListener(this);<br />

5. Uruchom aplet i sprawdź jego działanie.<br />

// początkowy kąt wychylenia jest wskazany myszą<br />

IV Przykład apletu z animacją – symulacja kuli bilardowej<br />

1. Utwórz nowy projekt typu Java Class Library zapisz go w folderze roboczym<br />

pod nazwą Aplet4. Dodaj do projektu klasę typu JApplet o nazwie Kula.<br />

2. Na początku klasy Kula umieść następujące deklaracje pól:<br />

int x=0, y=0, d=30, dx = 3, dy = 5 , dt=20;<br />

3. W treści metody init() wpisz wywołanie metody ustawiającej kolor tła:<br />

setBackground(Color.green);<br />

4. Utwórz metodę paint(), która na kanwie obiektu graficznego ma rysować kulę jako<br />

czerwone koło wpisane w kwadrat o lewym górnym wierzchołku (x, y) i boku d:<br />

public void paint(Graphics g) {<br />

g.clearRect(0, 0, getWidth(), getHeight());<br />

g.setColor(Color.red);<br />

g.fillOval(x, y, d, d);<br />

}<br />

5. Uruchom aplet, a następnie dopisz na początku metody paint() instrukcje, które spowodują rysowanie kuli<br />

w odstępach czasu dt oraz przesunięcie kuli o wektor (dx, dy) i zmianę kierunku ruchu, jeśli kula dotarła do<br />

brzegu okna:<br />

public void paint(Graphics g) {<br />

x += dx; y += dy;<br />

if (x >= getWidth()-d || x = getHeight()-d || y

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!