Skip to content

Latest commit

 

History

History
40 lines (26 loc) · 2.35 KB

aihemäärittely.md

File metadata and controls

40 lines (26 loc) · 2.35 KB

Aihe: yatzy. Toteutetaan yatzy-peli, jossa mahdollisuus pelata ihmisiä vastaan paikallisesti.

Käyttäjät: pelaaja(t)

Käyttäjien toiminnot:

  • Pelaajanimimerkin lisääminen
  • Heitettävien noppien valitseminen
  • Noppien heittäminen
  • Pisteiden kirjaaminen

Luokkakaavio

Luokkakaavio

Rakennekuvaus

Peli-luokka toimii välittäjänä käyttöliittymän ja logiikkakomponenttien välillä. Se käyttää tuntemiensa luokkien metodeita pelin tilan siirtämiseksi eteenpäin. Tuntee seuraavat luokat:

  • VuoroKirjanpito: Pitää kirjaa pelin etenemisestä vuoronumeron ja kierrosnumeron avulla. Se tietää, milloin peli on loppu ja kuka pelaajista on vuorossa milläkin hetkellä. Tuntee Pelaaja-luokan.
  • NopanHeittaja: Huolehtii nopista ja niiden heittämisestä. Tuntee Noppa-luokan.
  • Pistelista: Tallentaa HashMap-tyyppiseen muuttujaan pelaajat, kierrokset ja niistä saadut pisteet. Laskee myös yatzyn bonus-sääntöä. Tuntee Pelaaja-luokan.
  • Pisteytyssäännöt: Sisältää joukon metodeita, joiden avulla voidaan määrittää tiettyjen pistelukujen antamat pisteet tietylle kierrokselle.

Noppa ja Pelaaja eivät tee paljoakaan. Noppa osaa arpoa itselleen pisteluvun, Pelaaja taas on vain säilö nimelle.

Käyttöliittymä koostuu muutamasta erilaisesta nappiluokasta, jotka perivät JButton:n tai JToggleButton:n. Yliluokkien toiminnallisuuden lisäksi ne tietävät asioita käynnissä olevasta pelistä. Ne toteuttavat myös Paivitettava-rajapinnan, joka määrittelee yhden metodin: paivita(). Se ajettaessa nappi päivittää oman tilansa vastaamaan pelin tilaa.

Kayttoliittyma-luokka säilöö listan Paivitettava-tyyppisia olioita, jotka ovat siis kaikki käyttöliittymän napit. Se toteuttaa itsekin tämän rajapinnan, ja sen paivita() kutsuu jokaisen listalla olevan napin paivita() -metodia. Lisäksi on tapahtumakuuntelijoita, jotka siirtävät pelin tilaa eteenpäin ja kutsuvat sen jälkeen käyttöliittymän paivita() -metodia. Näin käyttöliittymän ja pelin tila pysyvät synkronoituina.

Sekvenssikaaviot

Pelaajan lisääminen

Sekvenssikaavio: Pelaajan lisääminen

Pisteiden kirjaaminen

Sekvenssikaavio: Pisteiden kirjaaminen

Noppien heittäminen

Sekvenssikaavio: Noppien heittäminen