spec.md 3.17 KB
Newer Older
M1888's avatar
speksi  
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 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
# 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.

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

Harkintalistalla on myös toteuttaa käyttöliittymä [https://github.com/benruehl/adonis-ui](AdonisUIn avulla), mikäli aikaa tähän tutustumiseen jää.

## 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
- [ ] Lottosimulaation asetusten säätö (mm. pelaajien määrä, rivin hinta, ...)
- [ ] Scoreboard

## Käyttötapauskaavio

TODO ...

## Luokkamalli

Alustava luokkakaavio ohjelman komponenteista:

![](luokkakaavio-v1.png)