| Java syventävät |
| Tehtävä 1 |
Kirjoita
kello. Piirrä kellotaulu ja viisarit drawLine()-metodilla. Varaa
kerran sekunnissa toimiva Timer-säie ja kutsu sieltä
repaint()-metodia, jolloin Java itse pyyhkii vanhat viisarit pois.
Ohjelman täytyy osata skaalata viisarit oikean kokoisiksi
riippumatta ikkunan koosta. Kellotaulun ympyrämuodon kaava voidaan
laskea sin()- ja cos()-funktioilla. Kun origo on vasemmassa yläkulmassa,
kaavan koordinaatit ovat muotoa,
- Keskipiste: ikkunan_leveys/2-ikkunan_korkeus/2
-
X-koordinaatti: ikkunan_leveys/2+sin(x)*haluttu_etäisyys_keskipisteestä
- Y-koordinaatti: ikkunan_korkeus/2-cos(x)*haluttu_etäisyys_keskipisteestä
jossa x on haluttu kulma radiaaneissa (00:00 on nolla ja
12:00 on 2*PII radiaania).

Ratkaisu: ClockApp.java
ClockFrame.java ClockPanel.java
|
| Tehtävä 2 |
| Kirjoita
ohjelma, joka osaa muuntaa valuuttoja kuvan esittämällä tavalla.
'-->'-nappi siirtää Valuutta 1:n edit-kontrolliin kirjoitetun
valuuttamäärän Valuutta 2:n edit-kontrolliin valittuun
valuuttamuotoon ja päinvastoin. Jos muunnos ei ole mahdollinen
palautetaan pelkästään 0.

Ratkaisu: ValuuttaApp.java
ValuuttaFrame.java
|
| Tehtävä 3 |
| Kirjoita
ristinolla peli. Ikkunaan piirretään käyttäjän merkkinä ympyröitä
ja tietokonepelajan merkkinä ristejä. Käyttäjä aloittaa ja
tietokone siirtää pelaajan jälkeen automaattisesti. Peli loppuu
kun jompi kumpi saa kolmen suoran. Työkalurivissä on Aloitus,
Pisteiden nollaus ja Tietoja ohjelmasta napit. Aloitusnappi aloittaa
pelin uudestaan, nollaus nollaa voittolaskurit sekä aloittaa pelin
alusta ja tietoja nappi avaa pienen dialogin jossa kerrotaan
ohjelmasta jotain hauskaa. Ylänurkassa on ohjelmakuvake (sama kuin
tietoja napissa). Alareunassa on JLabel-kontrollista tehty tilarivi
joka näyttää voitttojen lukumäärää tai voittajaa kun
sellainen tulee.

Ratkaisu: TicTacToeApp.java
TicTacToeFrame.java TicTacToePanel.java
TicTacToeHelp.java help.gif
start.gif reset.gif
tictactoe.gif
|
| Tehtävä 4 |
| Kirjoita
kello apletti. Ota tämän sivun alussa olevasta Kello tehtävästä
paneli ja käytä sitä tässä tehtävässä.
Ratkaisu: ClockApplet.java
ClockAppletPanel.java
|