Elfde-Liniestraat 24 3500 Hasselt
Schooljaar 2009-2010
TINFO POKER GAME
OO-Analyse
Studenten:
Peter Asnong Rik Broens Tom De Keyser Daan Gielen Kris Gregoire Koen Olaerts Toon Wouters
Inhoudsopgave Probleembeschrijving .......................................................................................................................... 3 Use-case-diagram ................................................................................................................................. 4 Pokergame........................................................................................................................................... 4 TafelGekozen ....................................................................................................................................... 9 Klassediagram...................................................................................................................................... 13 Sequentiediagrammen ....................................................................................................................... 14 ProfielBekijken (door Gebruiker) ...................................................................................................... 14 ProfielBekijken (door Admin) ............................................................................................................ 14 ProfielVerwijderen (door Gebruiker) ................................................................................................ 14 ProfielVerwijderen (door Admin) ...................................................................................................... 15 ProfielWijzigen .................................................................................................................................. 15 ProfielOpkuisen ................................................................................................................................. 16 Game ................................................................................................................................................. 16 Round ................................................................................................................................................ 17 GameBekijken.................................................................................................................................... 17 GameToevoegen ............................................................................................................................... 18 GameVerwijderen ............................................................................................................................. 18 Registreren ........................................................................................................................................ 19 TableModelBekijken .......................................................................................................................... 19 TableModelMaken ............................................................................................................................ 20 TableModelVerwijderen.................................................................................................................... 20 HighscoreBekijken ............................................................................................................................. 20 Inloggen ............................................................................................................................................. 21 Uitloggen ........................................................................................................................................... 21 InstructiesBekijken ............................................................................................................................ 21 TafelVerlaten ..................................................................................................................................... 22 TafelKiezen ........................................................................................................................................ 22 Dwalen............................................................................................................................................... 22 Toestandsdiagrammen ....................................................................................................................... 23 Person................................................................................................................................................ 23 Round ................................................................................................................................................ 23 Game ................................................................................................................................................. 24 Player ................................................................................................................................................. 24 Activiteitendiagram ............................................................................................................................... 25
Groep 10
~2~
TINFO Poker Game
Probleembeschrijving Achtergrond Vanuit Tinfo is het de bedoeling dat wij een mobile multiplayer pokergame (Texas Hold’em) voor het Android-platform ontwikkelen. Vanuit de opdracht is het vooral de bedoeling een basis te leggen naar verder onderzoek voor Tinfo in het kader van nieuwe Androidsystemen. Wel is het onze ambitie om dit project te vervolledigen. Functionele eisen Admin Gedeelte 1. Administratie moet userprofielen kunnen bekijken, wijzigen en verwijderen. 2. Administratie moet tablemodels kunnen bekijken, toevoegen, en verwijderen. 3. Administratie moet games kunnen bekijken, toevoegen en verwijderen. User Gedeelte 4. User moet kunnen in- en uitloggen via een Android Browser op een Android Mobile. 5. User moet zijn profiel kunnen bekijken, wijzigen en verwijderen. 6. User moet games kunnen opvragen. 7. User moet kunnen deelnemen aan een game. 8. User moet een game kunnen verlaten. Bezoeker Gedeelte 9. Bezoeker moet highscores kunnen bekijken. 10. Bezoeker moet de instructies kunnen bekijken. 11. Bezoeker moet zich kunnen registreren. Opmerking - Een admin kan ook de taken uitvoeren van het usergedeelte en het bezoekersgedeelte en een User kan ook de taken uitvoeren van het bezoekersgedeelte - Het bekijken van de games door een user wordt verwerkt in het deelnemen aan een game. Wij voorzien dat een user slechts de games kan bekijken die voor hem van toepassing zijn. Niet-functionele of systeemeisen 1. Zoveel mogelijk gebruik maken van Open Source Software. 2. Gebruik van het Android Platform 3. Mobile & Web Applicatie 4. Eenvoudige Gameplay 5. De game moet een multiplayer mogelijkheid hebben 6. Gebruik van grafische elementen 7. GUI design: usability 8. Koppeling met OpenSocial uitzoeken (sociale netwerksites)
Groep 10
~3~
TINFO Poker Game
Use-case-diagram Pokergame
Person is de algemene voorstelling van een persoon. Wanneer deze de website opent (bezoekt) noemen wij hem een Visitor. Als deze dan zou inloggen, verandert zijn status naar een User. Rechten van users en visitors verschillen. Een User kan dezelfde acties ondernemen als een Visitor. De Visitor is vrij beperkt, hij kan alleen de highscores bekijken, de instructies bekijken, dwalen (website open laten staan zonder enige actie) en inloggen. HighscoreBekijken Brief Description: Dit is een handeling waarbij een bezoeker op de site de highscores raadpleegt. Post-conditions: Highscorepagina wordt geladen.
1 2 3
Actor Input
System Response
Bezoeker klikt op de knop 'Highscore'.
Systeem haalt gegevens uit de database. Systeem stuurt gegevens naar het scherm.
ProfielBekijken Brief Description: Preconditions: Post-conditions: 1 2 3 4
Een user wilt zijn profiel bekijken, of een admin wilt een bepaald userprofiel bekijken. De gebruiker moet ingelogd zijn.
Actor Input
System Response
Een user klikt op de knop ‘Profiel Bekijken’
Systeem haalt gegevens uit de database. Systeem stuurt gegevens naar het scherm. Een admin geeft een nickname in en klikt op de knop ‘Haal profiel op’.
5 6
Groep 10
Systeem haalt gegevens uit de database. Systeem stuurt gegevens naar het scherm.
~4~
TINFO Poker Game
ProfielWijzigen Hierbij heeft de gebruiker de mogelijkheid om zijn profiel te bekijken en aan te passen. De gebruiker moet ingelogd zijn. Eventuele wijzigingen worden opgeslaan in de database.
Brief Description: Preconditions: Post-conditions:
1 2 3 4 5 6 7
Actor Input
Gebruiker klikt op de knop 'Profiel'.
Systeem haalt de gegevens van de ingelogde gebruiker op uit de database. Systeem toont profielgegevens op het scherm. Gebruiker wijzigt bepaalde gegevens. Gebruiker klikt op knop 'opslaan'. Nieuwe gegevens worden clientside gevalideerd. Indien deze gegevens ok zijn, worden zij doorgestuurd naar de server. Serverside validatie. Indien alle gegevens in orde zijn, worden ze vastgelegd in de database. Bevestiging van wijziging wordt naar het scherm gestuurd. Gebruiker wordt naar de gebruikerspagina geleid.
8 9 10 11 12 13
System Response
Gebruiker klikt op knop 'Annuleren'. Gebruiker wordt naar de gebruikerspagina geleid.
ProfielVerwijderen Brief Description Preconditions Post-conditions
1 2 3
Hiermee kan een gebruiker of een administrator een profiel uit de database verwijderen. Indien de gebruiker driemaal een overtreding heeft begaan, wordt zijn profiel door de adminstrator verwijderd. Een gebruiker kan op elk moment zijn profiel verwijderen. Het profiel is verwijderd uit de databank en is niet meer toegankelijk/bruikbaar.
Actor Input
Klik op de knop 'Delete Profile'.
System Response Systeem haalt gegevens uit de database. De bezoeker wordt naar de startpagina geleid.
ProfielOpkuisen Brief Description: Preconditions: Post-conditions:
1 2 3
Actor Input
Beheer van gebruikersprofielen door een administrator. Dit kan enkel door een administrator, na vaststelling van foutieve informatie in een profiel (offensief taalgebruik, rascisme, pornografisch materiaal, …). De gebruiker moet zijn profiel opnieuw invullen.
Administrator maakt velden in het betreffende profiel leeg. Administrator klikt op 'Save'.
System Response
Gegevens worden gewijzigd in de database bij het juiste profiel.
Inloggen Brief Description: Preconditions:
Groep 10
Het inlogproces van een gebruiker. Om in te loggen, moet een speler geregistreerd zijn.
~5~
TINFO Poker Game
Post-conditions:
1
Actor Input
Gebruiker krijgt status 'Logged in'.
Bezoeker geeft nickname en wachtwoord in en klikt op de knop 'Login'.
2 3 4 5
System Response De gegevens worden doorgestuurd naar de server. De gegevens worden gecontroleerd met de overeenkomstige gegevens uit de database (wachtwoord wordt omgezet naar hash). Indien deze correct zijn, krijgt de gebruiker de status 'Logged in'. Hij wordt dan ook naar de gebruikerspagina geleid. Indien de gegevens niet correct zijn, wordt er een melding gestuurd naar het scherm en krijgt de persoon de mogelijkheid om zich opnieuw in te loggen of te registreren.
Uitloggen Brief Description: Proces om een gebruiker uit te loggen. Preconditions: De gebruiker moet ingelogd zijn en niet meer aan een tafel deelnemen. Post-conditions: De gebruiker heeft status 'Logged out'. Actor Input System Response 1 Gebruiker klikt op knop 'Log Out'. 2 Administrator klikt op 'Save'. De gebruiker krijgt de status 'Logged out'. 3 De bezoeker wordt naar de startpagina geleid.
Registreren Brief Description: Proces om een nieuwe gebruiker te registeren. Preconditions: De bezoeker is nog niet geregistreerd. Post-conditions: Dit is slechts een eenmalige actie. Actor Input System Response 1 De bezoeker klikt op de knop 'Register'. 2 De registreerpagina wordt getoond. 3 De bezoeker vult de gegevens in en bepaalt zijn unieke nickname. 4 Clientside validatie van de gegevens. 5 De bezoeker klikt op de knop ‘Register’. 6 Indien correct worden deze naar de server gestuurd. 7 Serverside validatie van de gegevens. 8 Indien de gegevens correct zijn worden deze toegevoegd aan de database. 9 De bezoeker krijgt status 'Logged in' en wordt naar de gebruikerspagina geleid. 10 De bezoeker klikt op de knop 'Cancel'. 11 De bezoeker wordt naar de startpagina geleid
TafelKiezen Brief Description: Preconditions: Post-conditions:
Groep 10
De use-case voor het kiezen en deelnemen aan een tafel. De toestand van de gebruiker verandert naar speler. De gebruiker is ingelogd en heeft nog geen tafel gekozen. De gebruiker zit aan de gekozen tafel met het gekozen chipaantal.
~6~
TINFO Poker Game
1
Actor Input De gebruiker klikt op de knop 'Choose Table'.
2
De beschikbare tafels worden opgehaald uit de database. De beschikbaarheid wordt bepaald door het aantal bezette plaatsen en de chipcount van de gebruiker (aantal hoger dan minimum buy-in). De gegevens van deze tafels worden getoond op het scherm.
3 4
De gebruiker kiest zijn tafel en het aantal chips dat hij wilt gebruiken (binnen de limiet).
5
Controle of ingevoerde aantal chips geldig is binnen het limiet. Indien niet wordt een foutmelding gegenereerd. Gebruiker wordt toegevoegd aan de tafel (wordt een speler), er wordt een nieuwe session aangemaakt in de database. De tafelpagina wordt geladen.
6 7 8 9
System Response
De gebruiker klikt op de knop 'Cancel'. De gebruikerspagina wordt geladen.
TafelVerlaten Brief Description:
De speler beslist om te stoppen aan deze tafel en verlaat deze.
Preconditions:
De speler bevindt zich aan een tafel. De speler is weer een gebruiker geworden en bevindt zich op de Post-conditions: gebruikerspagina. Actor Input System Response 1 De speler klikt op de knop 'Leave'. 2 De end-time van de overeenkomstige session wordt ingevuld. 3 De speler wordt uit de array van spelers verwijderd. 4 De totale chipcount wordt aangepast in het object en in de database. 5 Gebruiker wordt naar de gebruikerspagina geleid.
Dwalen Brief Description: Preconditions: Post-conditions:
De gebruiker bezoekt onze pagina en kijkt naar de gebruikerspagina. Gebruiker is ingelogd. Na 60 min inactiviteit wordt de gebruiker automatisch uitgelogd.
InstructiesBekijken Brief Description: Preconditions: Post-conditions:
1 2 3
Een bezoeker vraagt instructies op. Instructiepagina wordt getoond.
Actor Input Bezoeker klikt op de knop 'Instructies'.
Groep 10
System Response Systeem haalt gegevens uit de database. Systeem stuurt gegevens naar het scherm.
~7~
TINFO Poker Game
GameBekijken Brief Description: Preconditions: Post-conditions:
1 2 3
Een admin vraagt een lijst van de bestaande games op. Adminrechten beschikken.
Actor Input Admin klikt op de knop 'Games Bekijken'.
System Response Systeem haalt gegevens uit de database. Systeem stuurt gegevens naar het scherm.
GameToevoegen Brief Description: Preconditions: Post-conditions:
1 2
Een admin voegt een nieuw game toe aan het systeem. De ingelogde gebruiker moet adminrechten hebben. De game is toegevoegd aan de database.
Actor Input Admin kiest tablemodel.
System Response Systeem maakt nieuw game a.d.h.v. dit tablemodel.
GameVerwijderen Brief Description: Preconditions: Post-conditions:
1
Een admin wilt een game verwijderen uit de database. De ingelogde gebruiker moet adminrechten hebben. Het game wordt uit de database verwijderd.
Actor Input Admin kiest het game uit de hem reeds getoonde lijst (zie GamesBekijken) en klikt op de knop ‘Delete’.
2
System Response
Indien dit game nog gebruikt wordt door users wordt er een foutmelding getoond. Indien geen fout verwijdert het systeem het game uit de database.
3
TableModelBekijken Brief Description: Preconditions: Post-conditions:
1 2
Een admin vraagt de lijst op van bestaande tablemodels. De ingelogde gebruiker moet adminrechten hebben. De lijst wordt naar het scherm gestuurd.
Actor Input Admin vraagt tablemodels op.
System Response Systeem haalt de gegevens uit de database en toont deze op het scherm.
TableModelVerwijderen Brief Description: Preconditions: Post-conditions:
Groep 10
Een admin wilt een tableModel verwijderen uit de database. De ingelogde gebruiker moet adminrechten hebben. Het tableModel wordt uit de database verwijderd.
~8~
TINFO Poker Game
1
Actor Input Admin kiest tablemodel en klikt op de knop ‘Delete’.
2
System Response Indien dit tableModel wordt gebruikt in een actief game wordt er een foutmelding getoond. Indien geen fout verwijdert het systeem het model uit de database.
3
TableModelToevoegen Brief Description: Preconditions: Post-conditions:
1 2 3
Een admin voegt een nieuw tableModel toe aan het systeem. De ingelogde gebruiker moet adminrechten hebben. Het tableModel is toegevoegd aan de database.
Actor Input Admin geeft tablemodelgegevens in. Admin klikt op ‘Add TableModel’.
System Response
Systeem maakt nieuw tableModel a.d.h.v. deze gegevens.
TafelGekozen
Check Brief Description: Een speler checkt op zijn hand. Actor Input System Response 1 De speler klikt op de knop ‘Check’. 2 Systeem houdt actie van speler bij in array Actions.
Groep 10
~9~
TINFO Poker Game
Call Brief Description: Een speler callt op zijn hand. Actor Input System Response 1 De speler klikt op de knop 'Call'. 2 Systeem houdt actie van speler bij in array Actions. 3 De gamechipcount wordt aangepast in het object met de huidige betValue. 4 De pot wordt verhoogd.
Raise Brief Description: Speler wilt de inzet verhogen. Actor Input System Response 1 De speler klikt op de knop 'Raise'. 2 Systeem houdt actie van speler bij in array Actions. 3 De gamechipcount wordt aangepast in het object met zijn betValue. 4 De betValue wordt aangepast naar de nieuwe raise. De pot wordt verhoogd.
ReRaise Brief Description:
Een speler verhoogt met een meervoud van de huidige inzet. Er is reeds een raise gemaakt door een andere speler binnen dezelfde Preconditions: raiseronde. Actor Input System Response 1 De speler klikt op de knop 'Raise'. Controle of reraise een veelvoud is van betValue. 2 Systeem houdt actie van speler bij in array Actions. 3 De gamechipcount wordt aangepast in het object met zijn betValue. 4 De betValue wordt aangepast naar de nieuwe raise. De pot wordt verhoogd.
AllIn Brief Description: Een speler zet al zijn chips in. Actor Input System Response 1 De speler klikt op de knop 'Allin'. 2 Systeem houdt actie van speler bij in array Actions. 3 De gamechipcount wordt aangepast in het object met zijn betValue. 4 De betValue wordt aangepast naar de allinwaarde indien dit hoger is dan de betValue. 5 De pot wordt verhoogd.
Fold Brief Description: Actor Input
Groep 10
Een speler fold op zijn hand. System Response
~ 10 ~
TINFO Poker Game
1 2
De speler klikt op de knop 'Fold'.
3
Systeem houdt actie van speler bij in array Actions. De kaarten van deze speler worden gereserveerd.
Stoppen Brief Description: Preconditions:
De speler beslist om te stoppen aan deze tafel en verlaat deze. De speler bevindt zich aan een tafel. De speler is weer een gewone gebruiker geworden en bevindt zich op de Post-conditions: gebruikerspagina. Actor Input System Response 1 De speler klikt op de knop 'Leave'. 2 De end-time van de overeenkomstige Session wordt ingevuld. 3 De speler wordt uit de array van spelers verwijderd. 4 De totale chipcount wordt aangepast in het object en in de database. 5 Gebruiker wordt naar de gebruikerspagina geleid.
HandDealen Brief Description: Preconditions: Post-conditions: Actor Input 1
Elke speler aan de tafel krijgt twee kaarten. Dit is het begin van een ronde. Een raiseronde volgt en er wordt overgegaan naar FlopDealen System Response De gedeelde kaarten worden voor deze ronde vast gelegd. Deze kunnen in dit spel niet meer gebruikt worden.
FlopDealen Brief Description: Preconditions:
Drie gemeenschappelijke kaarten worden op tafel gelegd. De inzetten van de spelers zijn gelijk of ze hebben gefold.
Post-conditions: Actor Input 1
Nieuwe inzetronde, gevolgd door TurnDealen. System Response De gedeelde kaarten worden voor deze ronde vast gelegd. Deze kunnen in dit spel niet meer gebruikt worden.
TurnDealen Brief Description: Preconditions:
Eén gemeenschappelijke kaart wordt gedeeld. De inzetten van de spelers zijn gelijk of ze hebben gefold.
Post-conditions: Actor Input 1
Nieuwe inzetronde, gevolgd door RiverDealen. System Response De gedeelde kaarten worden voor deze ronde vast gelegd. Deze kunnen in dit spel niet meer gebruikt worden.
RiverDealen Brief Description: Preconditions: Post-conditions: Actor Input 1
Groep 10
Eén gemeenschappelijke kaart wordt gedeeld. De inzetten van de spelers zijn gelijk of ze hebben gefold. Nieuwe inzetronde, bepaling beste hand. System Response De gedeelde kaarten worden voor deze ronde vast gelegd.
~ 11 ~
TINFO Poker Game
Deze kunnen in dit spel niet meer gebruikt worden.
BepalingBesteHand Brief Description: Preconditions: Post-conditions: Actor Input 1 2 3
Groep 10
Nadat alle vorige acties voltooid zijn, kan er over gegaan worden tot het bepalen van de winnaar van dit spel. Inzetronde na river voltooid of er is maar één speler over. Dit spel wordt beëindigd en een volgend spel kan beginnen. System Response De pot gaat naar de winnaar. Zijn gamechipcount wordt aangepast. Pot wordt op 0 ingesteld. Alle kaarten worden terug actief.
~ 12 ~
TINFO Poker Game
Klassediagram
De klassen Connection en Functions zijn algemene klassen. Hierin staan functies die los staan van andere klassen. De klasse Connection wordt een singleton en de klasse Functions zal een static klasse worden. In Connection zitten alle methodes die de verbinding met de database verzorgen. In de klasse Function zitten losse methodes. In het gegevensmodel hebben we ondertussen een aantal aanpassingen moeten doorvoeren. • De tabel Played_Games hebben we hernoemd naar Games. • We hebben de velden end_time en start_time verwijderd uit de tabel Games. • In de tabel Sessions is het veld end_time niet meer verplicht. Dit is nodig omdat een session bij het aanmaken geen end_time krijgt.
Groep 10
~ 13 ~
TINFO Poker Game
Sequentiediagrammen ProfielBekijken (door Gebruiker)
ProfielBekijken (door Admin)
ProfielVerwijderen (door Gebruiker)
Groep 10
~ 14 ~
TINFO Poker Game
ProfielVerwijderen (door Admin)
ProfielWijzigen
Groep 10
~ 15 ~
TINFO Poker Game
ProfielOpkuisen
Game
Groep 10
~ 16 ~
TINFO Poker Game
Round
GameBekijken
Groep 10
~ 17 ~
TINFO Poker Game
GameToevoegen
GameVerwijderen
Groep 10
~ 18 ~
TINFO Poker Game
Registreren
TableModelBekijken
Groep 10
~ 19 ~
TINFO Poker Game
TableModelMaken
TableModelVerwijderen
HighscoreBekijken
Groep 10
~ 20 ~
TINFO Poker Game
Inloggen
Uitloggen
InstructiesBekijken
De server is eigenlijk geen klasse. De getInstructies()-functie leest een bestand in dat zich op de server bevindt.
Groep 10
~ 21 ~
TINFO Poker Game
TafelVerlaten
TafelKiezen
Dwalen Dwalen is niets anders dan de website geopend hebben en geen actie ondernemen. Van deze usecase is er dus geen sequentiediagram mogelijk.
Groep 10
~ 22 ~
TINFO Poker Game
Toestandsdiagrammen Person
Round
Groep 10
~ 23 ~
TINFO Poker Game
Game
Player
Groep 10
~ 24 ~
TINFO Poker Game
Activiteitendiagram
Groep 10
~ 25 ~
TINFO Poker Game