spec.md 3.14 KB
Newer Older
M1888's avatar
M1888 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
# Lottokone

TTOS0300 kurssin harjoitustyö.

Joeli Hokkanen / M1888@student.jamk.fi

## Sovelluksen yleiskuvaus

Tarkoituksena on tehdä peli, joka näyttää miten hölmöä lottoaminen käytännössä on. Pelin voittaa, kun voittaa lotossa päävoiton, ja pisteet tulevat siitä kuinka vähän olet saanut tilisi miinukselle.

Tätä varten loton toimintaa tulisi siis simuloida mahdollisimman tarkasti. Tämä sisältää mm.:

- 7 numeroa (1-40) per lottorivi, lisänumerot
- simuloituja pelaajia (tuhansia), joiden riveistä ja niiden hinnasta potti muodostuu
- pelaajalle mahdollisuus valita omat vakiorivit, ja arpoa automaattisesti rivejä
- simuloitujen pelaajien voitot

Lisää pohdintaa ominaisuuksista:

- Asetukset ja pisteet tullaan tallentamaan paikalliseen SQLite-kantaan
- Suorituskyvyn kannalta kaikkien simuloitujen pelaajien satunnaisesti luotujen lottorivien tarkastus joka kierroksella kuulostaa raskaalta. Harkitaan ehkä massojen kohdalla vain todennäköisyyteen perustuvaa voittomäärettä?


## Pelin kulku

Peli mittaa vuosien ja viikkojen kulumista, joka viikko suoritetaan yksi lottoarvonta kuten oikeastikin. Alkupäivä voisi olla vaikka kuluvan vuoden alku. Pelaajalla on alussa tietty määrä *rahaa*, ja mahdollisuus syöttää *vakiorivejä*, jotka pysyvät viikosta toiseen samana. Lisäksi voi määritellä *arparivien* määrän, jotka ovat siis joka arvontaan uudelleen arvottavia rivejä.

Kun halutut rivit on syötetty, laitetaan peli käyntiin. Peli luo simuloituja pelaajia, jotka lottoavat oikean pelaajan kanssa. Jokainen lottorivi maksaa tietyn määrän (esim. 1€), ja peli pitää kirjaa lottoriveistä muodostuvasta voittopotista, sekä pelaajan tilin saldosta.

Tilin saldon meneminen miinukselle tulee olemaan luultavasti väistämätöntä. Peli ei kuitenkaan tähän pääty, vaan saat jatkaa tilin vinguttamista miinukselle rajattomasti. Tarkoituksena onkin voittaa lotossa päävoitto häviten ennen sitä mahdollisimman vähän rahaa.

Kun päävoitto osuu kohdalle, ilmoittaa peli siitä, ja ottaa pistesaldoksi tilin saldon ennen kuin sille on juuri kohdalle osunut päävoitto lisätty. Tästä saadaan pistetaululle pisteet.

## Käyttöympäristö ja käytetyt teknologiat

Peli tullaan toteuttamaan C# ja XAML -kielillä WPF:ää käyttäen. Kohdealustana on Windows sekä .NET Framework 4.6.

M1888's avatar
M1888 committed
38
Tietojen säilyttämiseen ohjelma tulee käyttämään SQLiteä, ja C#:n [System.Data.SQLite](https://www.nuget.org/packages/System.Data.SQLite) -pakettia.
M1888's avatar
M1888 committed
39

M1888's avatar
M1888 committed
40
Harkintalistalla on myös toteuttaa käyttöliittymä [AdonisUI:n avulla](https://github.com/benruehl/adonis-ui), mikäli aikaa tähän tutustumiseen jää.
M1888's avatar
M1888 committed
41 42 43 44 45 46 47 48 49 50 51 52

## Käyttäjäroolit

Peli on paikallinen yksinpeli, ja käyttäjärooleja on siten vain yksi: Pelaaja.

## Toteutettavat toiminnot

- [ ] Yleinen käyttöliittymä
- [ ] Rahan/pisteiden tarkastelu
- [ ] Lottosimulaatiosta tulostetta ja statistiikkaa, jota näkee pelin aikana
- [ ] Vakiorivejen syöttö
- [ ] Arparivien määrittely
M1888's avatar
M1888 committed
53
- [ ] Lottosimulaation asetusten säätö
M1888's avatar
M1888 committed
54 55
- [ ] Scoreboard

M1888's avatar
M1888 committed
56

M1888's avatar
M1888 committed
57 58
## Käyttötapauskaavio

M1888's avatar
M1888 committed
59
![](usecaset.png)
M1888's avatar
M1888 committed
60 61 62 63 64 65

## Luokkamalli

Alustava luokkakaavio ohjelman komponenteista:

![](luokkakaavio-v1.png)