% Esimerkki oman komennon m��ritt�misest�. Jos komentoa tarvitaan useissa
% dokumenteissa, se kannattaa mielummin laittaa asetukset.tex-tiedostoon.
\newcommand{\tiedostonimi}[1]{\texttt{#1}}
\newcommand{\termi}[1]{\textit{#1}}



\section{Johdanto}


Asdf on Helsingin yliopiston tietojenk�sittelytieteen laitoksen 
ohjelmistotuotantoprojektin ryhm�, joka toteuttaa asiakkaan tilaaman pokeripalvelin 
ohjelmiston. T�ss� dokumentissa m��ritell��n toteutettava ohjelmisto ja siihen 
l�heisesti vaikuttavat asiat. Dokumentti on tarkoitettu projektiryhm�n, projektin 
ohjaajan ja asiakkaiden k�ytt��n. Dokumentti toimii my�s sopimuksena 
toteutettavista ominaisuuksista projektiryhm�n ja asiakkaiden v�lill�.Projektiin 
liittyv�� materiaalia tulee olemaan saatavilla ryhm�n kotisivulla osoittessa:

\texttt{http://www.cs.helsinki.fi/group/asdf/}

Projekti tehd��n iteroivana prosessimallina, joten lopullinen m��rittely saadaan 
vasta projektin viimeisess� iteraatiovaiheessa ennen lopullista ohjelmaa. Projektin 
aikana on ryhm�ll� sek� asiakkaalla mahdollisuus yhteisty�ss� neuvotella 
mahdollisista muutoksia sek� korjauksista, jos projektin edetess� ilmenee 
ep�kohtia. T�ll�in my�s m��rittelydokumentti muokataan vastaamaan todellista 
tarvetta.


Luvussa 2 annetaan yleiskuvaus sek� k�sitell��n j�rjestelm��n liittyv�t termit. 
Luvussa 3 esitell��n asiakkaan esitt�m�t vaatimukset ohjelmistolle. Luvussa 4 
k�yd��n l�pi j�rjestelm� vaatimukset. Luvussa 5 k�yd��n l�pi j�rjestelm� 
arkkitehtuuri ja Luvussa 6 k�ytt�tapaukset. 

\newpage
\section{J�rjestelm�n yleiskuvaus}

Ohjelmistotuotantoprojektiryhm� toteuttaa yleisk�ytt�isen pokeripalvelimen. 
Pokeripalvelimen on tarkoitus toimia ymp�rist�n� testattaessa erillaisia 
teko�lysovelluksia. Palvelin tulee tarjoamaan yleisen rajapinnan, jonka avulla 
pystyt��n peluuttamaan erillaisia tietokone- ja ihmispelaajia kesken��n.

\subsection{sanasto}
\begin{figure}[h]
\begin{tabular}{p{3.8cm}|p{11.5cm}}
\textbf{Sana} & \textbf{Selitys} \\
\hline
\textbf{limit} (joskus fixed) & Pokerimuoto, jossa on Kiinte�sti rajoitettu 
panostusm��r�. \\
\hline
\textbf{no limit} & Pokerimuoto, jossa ei ole rajoitettu panostuksien suuruutta.\\
\hline
\textbf{pot limit} & Pokerimuoto, jossa maksimipanostus pokeripeliss� on peliss� 
olevan potin suuruinen.\\
\hline
\textbf{Texas holdem} & Suosittu pokerimuoto, pelis��nn�t liitteess� 1.\\
\hline
\textbf{Pelitili} & Kokoelma k�ytt�jille kuuluvista pelaajista sek� 
teko�lypelaajista sek� niiden tiedoista.\\
\hline
\textbf{Pelilogiikka} & Kuhunkin pelimuotoon kuuluva pelin eteneminen, lailliset 
toiminnot ja vuorot.\\
\hline
\textbf{Teko�ly} & Teko�lyn on tarkoitus mahdollistaa tietokoneen pelaaminen 
itsen�isesti ilman ihmisen ohjausta. K�ytt�j�t voivat laittaa teko�lysovelluksia 
(botteja) pelip�yt��n ja testata n�iden k�ytt�mi� algoritmeja.\\
\hline
\textbf{sit-out} & pelaaja istuu edelleen p�yd�ss�, mutta h�nelle ei jaeta 
kortteja, eik� h�n panosta pottiin\\
\hline
\textbf{muck} & Heitet��n k�sikortit pois n�ytt�m�tt� niit� toisille pelaajille.\\
\hline
\textbf{sokkopanokset} & Sokkopanokset ovat pakolliset panostukset m��r�tyill� 
pelaajilla jo ennen korttien jakamista. Texas Hold'emissa jakajasta seuraava 
pelaaja laittaa pienen sokkopanoksen (small blind, puolet minimikorotuksesta) ja 
t�st� seuraava suuren sokkopanoksen (big blind, minimikorotuksen verran) pottiin 
kunkin k�den alussa.\\
\hline
\textbf{Rajapinta} & Liittym�, jolla eri ohjelmat voivat tehd� pyynt�j� ja vaihtaa 
tietoja eli keskustella kesken��n.\\
\hline
\textbf{Pelip�yd�n ominaisuudet} & Tarkoitetaan t�ss� toteutettavien pelien 
ominaisuuksia, kuten pelimuoto, pelaajam��r�, sokkopanosten suuruus.\\
\end{tabular}
\end{figure}

\newpage
\section{K�ytt�j�n vaatimukset}

Seuraavassa asiakkaan esitt�m�t vaatimukset ohjelmistolle.
\begin{itemize}

\item \textbf{Ohjelmiston on oltava yleisk�ytt�inen}

    Ohjelmiston on tarjottava rajapinnat, joiden avulla voidaan testata erilaisia 
teko�lyratkaisuja peluuttamalla niit� eri tasoisia ja tyylisi� tietokone- ja 
ihmisvastustajia vastaan pokeripeleiss�.

\item \textbf{Palvelimella olevia palveluita on voitava k�ytt�� et�k�ytt�n�}

    Pelaajat sek� teko�lypelaajat liittyv�t peliin verkonkautta TCP/IP yhteydell�.

\item \textbf{Ohjelmistossa on oltava vuorovaikutteinen graafinen k�ytt�liittym�.}

    Ohjelmiston on toteutettava visuaalinen ja vuorovaikutteinen k�ytt�liittym�, 
joka mahdollistaa pelaamisen seka tekoalybottien lis��misen peliin. Sek� pelien 
v�lill� navigoinnin.

\item \textbf{Teko�lypelaajat on pystyttav� k�ynnist�m��n ilman graafista liittym�� 
er�ajoon}

\item \textbf{Ohjelmiston on tarjottava samat rajapinnat pelaajalle ja 
teko�lypelaajalle}

\item \textbf{Palvelin toteuttaa pelilogiikan ja pelaajien sy�tteiden yhdist�misen}

\item \textbf{Pelis��nt�jen erottaminen palvelimesta}

    Pelilogiikka on erottu palvelimella erillisiin moduuleihin.

\item \textbf{Ohjelmistolla on pystytt�v� pelaamaan Texas holdemista k�teispelej�, 
limit ja no-limit versiona. Vuoroihin on voitava m��ritell� my�s aikaraja. 
Projektiajan puitteessa toteutetaan my�s pot-limit.}

\item \textbf{Palvelimen on toteutettava k�ytt�j�nhallinta.}

\item \textbf{Pelatuista peleist� sek� k�ytt�jist� on tallennettava tilastotietoa.}

\item \textbf{Parhaillaan pelattavia peleja on oltava mahdollisuus seurata 
graafisen k�ytt�liittym�n kautta. Projektiajan puitteessa my�s menneit� pelej�}

\item \textbf{Ohjelmiston on suoriuduttava tuhansien yhdenaikaisten pelien 
pelaamisesta sek� pelaajien hallinasta yht�aikaa}

\item \textbf{Ohjelmalla on pystytt�v� tekem��n uusia pelej� ja valitsemaan 
asetukset niihin}

\item \textbf{Ohjelmistoon on toteutetaan projektin aikarajojen puitteessa muita 
korttipelej�, kuten s�k� ja omaha.}

\item \textbf{Ohjelmassa on oltava mahdollisuus keskustella pelaajien kesken}

\item \textbf{Palvelimen on mahdollisuuksien mukaan toimittavana alustana muille 
vuoropohjaisille peleille.}

    Muita pelej� kuten shakki, back gammon ei toteuteta projektin puitteessa. 
Rajapinnat sek� palvelin kuitenkin suunnitellaan, niin ett� muiden vuoropohjaisten 
pelien toteutus pit�isi onnistua uuden pelilogikka-moduulin sek� sit� vastaavan 
asiakasohjelman toteuttamisella.

\item \textbf{Ohjelmiston on toimittava tietojenk�sittelytieteen laitoksen 
ymp�rist�ss�.}

    Palvelinosuuden ohjelmistosta on toimittava laitoksen linux-ymp�rist�ss�. 
Asiakasohjelman tulee toimia sek� windows- ett� linux-ymp�rist�ss�. Projektiryhm� 
asentaa ohjelmiston laitoksen palvelimelle.

\end{itemize}
\newpage
\section{J�rjestelm�vaatimukset}

Asiakkaan vaatimukset j�rjestelm�lle on jaettu viiteen osaan: palvelin-, peliaula-, 
pelip�yt�- ja laadulliset- sek� muut vaatimukset Palvelin on peliserveri, joka 
pit�� yll� pelej� joihin pelaajat ja teko�lybotit voivat liitty�. Peliaula tarjoaa 
liittym�n, jolla luodaan uusia pelej� palvelimelle sek� listataan k�ynniss� olevia 
pelej� sek� siirryt��n itse pelip�yt��n. Pelip�yt� on graafinen vuorovaikutteinen 
n�kym� itse pelitilanteesta. Seuraavassa on m��ritelty kunkin osan toteutuksen 
vaatimukset. Vaatimukset on priorisoitu asteikolla 1-3, numerot 1 ja 2 
toteuteaan kurssinpuitteessa, numerot 3 toteutetaan mik�li aikaa riitt��.

\subsection{Palvelin vaatimukset}

\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V0 \\
   \hline
   Nimi: & Yhteydenmuodostaminen palvelimelle \\
   Kuvaus: & Teko�lybotit ja pelaajaohjelmat kommunikoivat palvelimen kanssa et�n�. Yhteys luodaan TCP/IP tietoliikenneprotokollalla. \\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus V1 \\
   \hline
   Nimi: & Pelien erottelu toisistaan \\
   Kuvaus: & Serverill� olevat pelit on voitava yksik�sitteisesti erottaa toisistaan, pelien nimien ja muiden peliin vaikuttavien ominaisuuksien perusteella.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V2 \\
   \hline
   Nimi: & Pelin seuraaminen\\
   Kuvaus: & Palvelin l�hett�� pelitietoa sit� pyyt�ville.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V3\\
   \hline
   Nimi: & Peliin liittyminen\\
   Kuvaus: &Palvelin liitt�� pelaajat peleihin pyynn�st�.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus& V4\\
   \hline
   nimi:& Pelist� poistuminen\\
   Kuvaus:& Palvelin poistaa pelaajia peleist� pyynn�st�.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus& V5\\
   \hline
   Nimi &Pelinhaku\\
   Kuvaus:& Pelej� on voitava hakea pelip�yd�n ominaisuuksien perusteella.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus &V6\\
   \hline
   Nimi: &Pelaajanhaku\\
   Kuvaus:& Palvelin tarjoaa listan pelip�ydist� miss� etsitty pelaaja on.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus &V7\\
   \hline
   Nimi: &Uuden pelin luonti\\
   Kuvaus: &Palvelin luo pelin pyynn�st� halutuilla ominaisuuksilla.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus &V8\\
   \hline
   Nimi:& Pelin poisto\\
   Kuvaus:& Pelip�yd�t, joissa peli jo alkanut eik� en�� ole yht��n pelaajaa tai seuraajia poistettava.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus& V9\\
   \hline
   Nimi:&linkkikatko\\
   Kuvaus:& Mik�li yhteys pelaajaan menetet��n kyseinen pelaaja siirret��n "sit out" tilaan.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus& V10\\
   \hline
   Nimi:& keskustelu\\
   Kuvaus:& Palvelimen on v�litett�v� keskusteluviestej�.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus& V11\\
   \hline
   nimi:& pelilogiikka\\
   kuvaus:& Pelilogiikka on toteutettava modulaarisesti, lis�� texas holdemin pelilogiikasta aliluvussa 4.1.2\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus& V12\\
   \hline
   nimi:& Pelihistorian tallennus\\
   kuvaus:& Palvelin ottaa vastaan historiatietoa pelilogiikkamoduuleilta ja tallentaa sen \\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\newpage
\subsubsection{K�ytt�j�hallinnan vaatimukset}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V13\\
   \hline
   Nimi: & palvelimelle kirjautuminen,\\
   Kuvaus: & Palvelin autentikoi k�ytt�j�n ennalta tallennetun k�ytt�j�tunnuksen ja salasanan perusteella.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V14\\
   \hline
   Nimi: & Pelaajatilin luonti,\\
   Kuvaus: & Palvelimelle on voitava lis�t� uusia k�ytt�j�tilej�.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V15\\
   \hline
   Nimi: & Pelaajatilin poisto\\
   Kuvaus: & Pelaajatilej� tulee voida poistaa.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V16\\
   \hline
   Nimi: & Pelaajatilin tietojen s�ilytys ja hallinnointi\\
   Kuvaus: & Pelitilill� sijaitsee tilill� luodut teko�lypelaajat sek� pelaajat sek� niiden tiedot, n�it� on pystytt�v� my�s muokkaamaan ja hallinnoimaan.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\newpage
\subsubsection{Pelilogiikka texas holdemille}
   Ohjelmistossa ensisijaisesti toteutetaan k�teispelit texas holdemille. Texas 
holdemin s��nn�t tarkemmin liitteessa yksi. Seuraavassa lueteltu vaatimuksia mit� 
korttipelien logiikkaan tarvitaan.
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V17 \\
   \hline
   Nimi: & Sokkopanokset\\
   kuvaus: & Peliss� on maksettava ensimm�isell� kierrollaan big-blind, sen lis�ksi joka kierroksella kaksi kiert�v�� small-blind(jakakasta vasen) ja big-blind (seuraava vasemmalle).\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V18\\
   \hline
   nimi: & Jakajan kierto\\
   Kuvaus: & Pokeripeleiss� jakaja kiert�� my�t�p�iv�� ja panostamiskierrokset aloitetaan sokkopanoksista seuraavasta pelaajasta ja kierret��n my�t�p�iv��n.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V19\\
   \hline
   nimi: & Pelinkulku\\
   Kuvaus  & Palvelimen on hoidettava tietojen keruu ja yhdistely asiakasohjelmilta mit� kukin pelaaja tekee ja v�litett�v� se eteenp�in muille pelaajille, sek� hoidettava pelin kulkua sen mukaan\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V20\\
   \hline
   nimi: & Pelimuoto\\
   Kuvaus: & Texas holdemiin toteutetaan limit ja no-limit pelimuodot \\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V21\\
   \hline
   nimi: & pelimuoto/pot-limit\\
   kuvaus: & Texas holdemiin toteutetaan pot-limit pelimuoto\\
   Prioriteetti & 2 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V22\\
   \hline
   nimi: & Tulostenlaskenta\\
   Kuvaus: & Ratkaisee pelik�sien arvoj�rjestyksen\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V23\\
   \hline
   nimi: & Pottien hallinta\\
   kuvaus: & Rahojen siirtely tulosten laskennan j�lkeen\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V24\\
   \hline
   nimi: & K�sihistoria\\
   kuvaus: & Pelilogiikkamoduuli v�litt�� tiedot pelatuista k�sist� palvelimelle, joka tallentaa ne\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\newpage
\subsection{Peliaulan vaatimukset}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V25\\
   \hline
   Nimi: & Peliaulan hallinnointi\\
   Kuvaus: & Tarjoaa graafisen k�ytt�liittym�n palvelimen kohtiin uusipeli(V7),erin�k�iset hakemiset(V5,V6)\\
   Prioriteetti & 2\\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V26\\
   \hline
   Nimi: & Pelip�ytien j�rjesteleminen\\
   Kuvaus: & Hakuehdoilla haettu lista pelip�ydist� on voitava j�rjest�� ominaisuuksiensa perusteella.\\
   Prioriteetti & 2\\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V27\\
   \hline
   Nimi: & Pelip�yd�n pelaajalista\\
   Kuvaus: & Aula n�ytt�� valitun pelin pelaajat.\\
   Prioriteetti & 2\\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V28\\
   \hline
   Nimi: & Pelip�yt��n siirtyminen\\
   Kuvaus: & Valitusta pelist� p��st�v� siirtym��n itse pelip�yt��n.\\
   Prioriteetti & 2\\
\end{tabular}
\end{figure}

\newpage

\subsection{Pokerip�yd�n vaatimukset}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V29\\
   \hline
   Nimi: & Seuraaminen\\
   Kuvaus: & Pelip�yd�st� on voitava seurata meneill��n olevaa peli�.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V30\\
   \hline
   Nimi: & Ulkoasu\\
   Kuvaus: & Pokerip�yd�n tulee esitt�� texas holdemiin tarvittavat kortit, panokset, jakaja, potti, vapaat istuimet, p�yd�ss� olevien pelaajien nimet ja raham��r�t sek� pelitoiminnot meneill��n olevalla kierroksella.\\
   Laajennettavuus: & muut korttipelit kuten omaha,s�k�,7 card-stud\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V31\\
   \hline
   nimi: & Pelitoiminnot\\
   Kuvaus: & P�yd�n on tarjottava pelitilanteeseen tarvittavat painikkeet.\\
   Laajennettavuus: & muihin peleihin tarvittavat painikkeet, esim blackjack\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V32\\
   \hline
   Nimi: & Pelitilin hallinnointi\\
   Kuvaus: & pelip�yt� tarjoaa k�ytt�liittym�n palvelimella sijaitsevan pelitilin hallinnointiin ja tarkasteluun (palvelimen kohdat Vx, vx, vx)\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V33\\
   \hline
   Nimi: & Pelaajien lis��minen peliin\\
   Kuvaus: & Pelip�yt� tarjoaa mahdollisuuden lis�t� pelip�yd�n vapaisiin paikkoihin teko�ly- tai ihmispelaajia, samalta koneelta voi vuorotellen pelata my�s monta ihmispelaajaa. (palvelimen kohta peliin liittyminen)\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V34\\
   \hline
   Nimi: & Pelist� poistuminen\\
   Kuvaus: & Pelist� on voitava poistaa omat pelaajat sek� tietokonepelaajat.\\
   Prioriteetti & 1 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V35\\
   \hline
   Nimi: & Korttien katseleminen\\
   Kuvaus: & Pelip�yd�ss� tulee olla mahdollista n�hd� my�s muiden pelaajien kortit.\\
   Prioriteetti & 2 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V36\\
   \hline
   Nimi: & Keskustelu\\
   Kuvaus: & Pelip�yd�ss� on pystytt�v� keskustelemaan muiden pelaajien kanssa teksti-ikkunassa.\\
   Prioriteetti & 2 \\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V37\\
   \hline
   Nimi: & Muckkaus\\
   Kuvaus: & K�ytt�liittym�n on tarjottava mahdollisuus pelaajalle n�ytt�� tai piilottaa h�vi�v�t k�det kierroksen lopussa. voitto k�si n�ytet��n automaattisesti, ellei kaikki muut pelaajat ole foldanneet ennen tulostenlaskentaa, t�ll�in tulee olla mahdollisuus vapaaehtoisesti n�ytt�� tai piiloittaa my�s voittava k�si.\\
   Prioriteetti & 2 \\
\end{tabular}
\end{figure}
\newpage
\subsection{Laadulliset vaatimukset}

Laadulliset vaatimukset ovat ehdottomia vaatimuksia ja vaikuttavat p��asiallisesti 
ohjelmiston rakenteeseen ja k�ytettyihin ratkaisuihin. Toteuksessa ei oteta 
tietoturvallisuutta huomioon, koska j�rjestelm� on tarkoitettu tutkimusk�ytt��n. 
Mit��n ei pyrit� salaamaan ja pelaajat voivat m��ritt�� rahavaransa itse.

\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V38\\
   \hline
   Nimi: & Asennus\\
   Kuvaus: & Palvelinosuuden ohjelmistosta on toimittava laitoksen 
linux-ymp�rist�ss�. Asiakasohjelman tulee toimia sek� windows- ett� 
linux-ymp�rist�ss�. Projektiryhm� asentaa ohjelmiston laitoksen palvelimelle.\\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V39\\
   \hline
   Nimi: & Yleisk�ytt�isyys\\
   Kuvaus: & Ohjelman rajapinnat on toteutettava niin ett� pelilogiikka 
komponentteja voidaan vaihtaa ja uusia asiakasohjelmia eri peleille toteuttaa 
tulevaisuudessa.\\
\end{tabular}
\end{figure}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V40\\
   \hline
   Nimi: & Laajennettavuus\\
   Kuvaus: & Pelipalvelinta tulevaisuudessa pystyt��n laajentamaan muihin 
vuoropohjaisiin peleihin, go, shakki jne.\\
\end{tabular}
\end{figure}


\subsection{Muut vaatimukset}
\begin{figure}[htp]
\begin{tabular}{p{2.5cm}p{11.5cm}}
   Tunnus & V41\\
   \hline
   Nimi: & Er�ajo\\
   Kuvaus: & Teko�lypelaajat on pystyttav� k�ynnist�m��n ilman graafista liittym�� 
er�ajoon.\\
   Prioriteetti & 1\\
\end{tabular}
\end{figure}

\section{J�rjestelm�arkkitehtuuri}

Kuva 5.1 esitt�� ohjelman arkkitehtuurin korkean tason n�kym�n. Kuva esitt�� koko 
j�rjestelm�n, joka aiotaan toteuttaa.

\subsection{Asiakas}
Asiakas on loppuk�ytt�j�n koneella py�riv� graafinen komponentti. 
Asiakaskomponentin avulla loppuk�ytt�j� voi tehd�, poistaa ja pelata pelej�. Pelej� 
pystyy pelaamaan usealla paikalla. K�ytt�liittym� toteuttaa my�s teko�lypelaajien 
hallinnoinnin ja pelatuttamisen.

\subsection{Teko�lypelaaja}
Teko�lypelaaja on loppuk�ytt�j�n koneella py�riv� k�ytt�liittym�t�n komponentti. 
Komponentin tarkoitus on pelata peli� t�ysin automaattisesti loppuk�ytt�j�n 
m��rittelemin keinoin.

\subsection{Palvelin}
Palvelin huolehtii pelilogiikan latauksesta. Palvelin v�litt�� viestit 
pelilogiikkamodulien ja (teko�ly)pelaajien kesken. Palvelin tarjoaa rajapinnat 
pelilogiikkamoduleille.



\section{K�ytt�tapaukset}

Esimerkkik�ytt�j�n� toimivat Pekka Pokerimestari ja h�nen hyv� yst�v�ns� Kaisa 
Kaduntallaaja. Pekka ty�skentelee tietojenk�sittelytieteen Peliikka-laboratoriossa 
ja tutkii pokeriin liittyvi� teko�lyratkaisuja. Kaisa on n�yttelij� teatterissa ja 
joskus vapaa-ajallaan kokoontuu yst�viens� kanssa pokeri-illan viettoon.


\textbf{Nimi} \newline
Pokeripalvelimen k�ytt� ensimm�ist� kertaa

\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{Kuvaus} \newline
Pekka on tilannut projektin, joka mahdollistaa helpon pokerin teko�lyalgoritmien 
testaamisen. Pekalle on tullut tieto, ett� j�rjestelm� on valmis. Pekka p��tt�� 
kokeilla j�rjestelm�� pelaamalla tietokonepelaajaa vastaan muutaman er�n Texas 
Hold'Em peli�. Pekka ei ole k�ytt�nyt j�rjestelm�� ennen, joten h�n luo 
k�ytt�j�tunnuksen itselleen ja kirjautuu sen j�lkeen peliin.


\textbf{Nimi} \newline
Uuden teko�lyalgoritmin testaaminen ihmispelaajaa vastaan

\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{kuvaus} \newline
Pekka on kehitt�nyt uuden Texas Hold'em pokerialgoritmin. Pekka testaa algoritmia 
pelaamalla itse sit� vastaan. Pekka luo uuden pelip�yd�n itselleen ja 
tietokonepelaajalle ja yritt�� parhaansa mukaan pelata. H�n arvioi algoritmin 
kelpoisuuden sit� k�ytt�v�n tietokonepelaajan menestyksell�.


\textbf{Nimi} \newline
Uuden teko�lyalgoritmin testaaminen tietokonepelaajia vastaan

\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{kuvaus} \newline
Pekka on kehitt�nyt uuden Texas Hold'em pokerialgoritmin. Pekka haluaa saada 
takeita algoritmin kelpoisuudesta ja pelatuttaa sit� useita kertoja toisia 
algoritmeja k�ytt�vi� tietokonepelaajia vastaan. Pekka laittaa tietokonepelaajat 
pelaamaan vastakkain ja tulkitsee algoritmin kelpoisuuden pelin tuloksista.


\textbf{Nimi} \newline
Ihmispelaajien analysointi

\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{kuvaus} \newline
Pekka tutkii Texas Hold'em pokerin olemusta empiirisesti seuraamalla ihmispelaajien 
peli�. Pekka kutsuu tutkimukseen osallistuvia testipelaajia pelaamaan, tekee heille 
pelip�yd�n ja seuraa itse peli� siihen osallistumatta. Pekka saa hy�dyllist� 
tutkimusaineistoa reaaliajassa ja j�lkeenp�in pelin tuloksista. 


\textbf{Nimi} \newline
Aloittelevan pelaajan liittyminen peliin

\textbf{Toimijat} \newline
Kaisa Kaduntallaaja

\textbf{kuvaus} \newline
Pekka on pyyt�nyt Kaisaa osallistumaan testiins� ennalta m��r��m�ss��n 
testipelip�yd�ss�. Kaisa k�ynnist�� asiakasohjelman tavoitteenaan auttaa testiss�.


\textbf{Nimi} \newline
Useamman tietokonepelaajan testaaminen useaa ihmist� vastaan

\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{kuvaus} \newline
Pekka haluaa vertailla kahta Texas Hold'em algoritmia toisiaan vastaan useiden 
muiden pelaajien peliss�. H�n etsii p�yd�n johon h�n ja tietokonepelaaja 
kummallekin algoritmille mahtuvat ja lis�� tietokonepelaajat ja itsens� peliin. 
Pekka arvioi pelaajien menestyst� pelin tuloksista.


\textbf{Nimi} \newline
Bottipelaajan luominen

\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{kuvaus} \newline
Pekka luo uuden bottipelaajan nimelt� Skynet voidakseen kilpailuttaa sit� ihmis- 
tai bottipelaajia vastaan. Pekka m��ritt�� itsens� botin omistajaksi. Pekka laittaa 
botin pokerikassaan 1000 krediitti�.


\textbf{Nimi} \newline
Bottipelaajan poistaminen


\textbf{Toimijat} \newline
Pekka Pokerimestari

\textbf{kuvaus} \newline
Pekalle on kertynyt niin monta bottipelaajaa, ett� Pekan on vaikea l�yt�� 
haluamansa niiden joukosta. Pekka poistaa yhden bottipelaajista.




\section{Ohjelmiston elinkaari}

Projektin tarkoituksena on toteuttaa ensimm�inen prototyyppi pokeripalvelimesta. 
Prototyypill� olisi tarkoitus pysty� testaamaan Texas Hold'emin tiettyj� 
variaatioita ihmis- ja teko�lypelaajien kesken. Ohjelmisto on suunniteltu tukemaan 
laajennettavuutta. Projektiryhm� lopettaa ty�skentelyn ohjelmiston kanssa kurssin 
loputtua.

