-
Notifications
You must be signed in to change notification settings - Fork 3
User stories
SamVanderstraeten edited this page Mar 23, 2020
·
16 revisions
| Story ID | 1 |
|---|---|
| Naam | Als gebruiker kan ik mij registreren zodat ik toegang krijg met mijn credentials (username en paswoord) tot de spelomgeving waarin ik een spel kan opstarten en spelen. |
| Screen | Registration screen |
| Type | Frontend (backend is reeds volledig) |
| Script | Als gebruiker die zich wenst te registreren vul ik de volgende informatie in: - E-mailadres - Username - Wachtwoord - Wachtwoord verificatie Wanneer de gebruiker klikt op de "Registreer"-knop wordt gecontroleerd of alle velden ingevuld zijn. Daarna wordt gecontroleerd of beide ingevulde wachtwoorden identiek zijn en voldoen aan volgende regels: TODO paswoord regels De ingevulde gegevens worden vervolgens verstuurd naar de backend. Indien de registratie succesvol is verlopen, wordt het login-scherm getoond zodat de gebruiker kan inloggen. Indien er een fout is opgetreden wordt de foutboodschap getoond. |
| Deadline | |
| Acceptance criteria | - Er wordt een foutboodschap getoond indien er gegevens ontbreken. - Er wordt een foutboodschap getoond indien beide paswoorden niet overeenkomen. - Er wordt een foutboodschap getoond indien er een fout is opgetreden in de backend bij het registeren van de gebruiker. - Het login-scherm wordt getoond indien de registratie van de gebruiker correct is verlopen. Het e-mailadres van de geregistreerde gebruiker is reeds ingevuld zodat hij enkel zijn wachtwoord moet invullen. |
| Backend URL | http://{host}:{port}/api/Authentication/register |
| Story ID | 2 |
|---|---|
| Naam | Als geregistreerde speler kan ik inloggen zodat ik een spel kan starten en spelen. |
| Screen | Login screen |
| Type | Frontend (Backend is reeds volledig) |
| Script | Als geregistreerde speler kan ik op de login pagina mijn e-mailadres en wachtwoord invullen. Wanneer ik op de "Inloggen"-knop druk worden mijn inloggegevens gecontroleerd door de backend. Indien de inloggegevens correct zijn wordt de lobby pagina getoond. |
| Deadline | |
| Acceptatie criteria | - Er wordt een foutmelding getoond indien er gegevens niet zijn ingevuld. - Er wordt een foutmelding getoond indien de inloggevens niet correct zijn. - De lobby pagina wordt getoond indien de speler correct is ingelogd. |
| Backend URL | http://{host}:{port}/api/Authentication/token |
| Story ID | 3 |
|---|---|
| Naam | Als ingelogde speler kan ik op de lobby pagina een nieuw spel starten. |
| Screen | Lobby pagina |
| Trigger | |
| Script | Als ingelogde speler kan ik op de lobby pagina op een knop drukken waarmee een nieuw spel wordt gestart. De configuratie van het default spel wordt naar de backend verstuurd en het response van de backend bevat o.a. een unieke identificatie voor het aangemaakte spel. |
| Deadline | |
| Acceptatie criteria | - De spel pagina wordt getoond als de creatie van het spel is gelukt en de frontend de unieke identificatie (id) van het spel heeft ontvangen. |
| Backend URL | http://{host}:{port}/api/games |
| Story ID | 4 |
|---|---|
| Naam | Als speler kan ik mijn schepen in het spelbord plaatsen. |
| Screen | Spel pagina |
| Type | Frontend + Backend |
| Script | Een 10x10 spelbord wordt getoond waar de speler zijn schepen kan plaatsen. Volgende schepen moeten op het scherm geplaatst worden: - carrier (5 cellen) - battleship (4 cellen) - destroyer (3 cellen) - submarine (3 cellen) - patrolboat (2 cellen) Ieder schip kan maar 1 keer op het spelbord geplaatst worden. Schepen kunnen wel nog verplaatst worden. Schepen mogen niet overlappen. Schepen mogen elkaar wel raken. Zodra de speler alle schepen op hun gewenste positie op het spelbord geplaatst heeft, kan het spel effectief gestart worden. |
| Deadline | |
| Acceptatie criteria | - Wanneer een schip met 1 of meerdere cellen overlapt met een ander reeds geplaatst schip, zal er door de backend een foutboodschap gegeven worden en wordt het schip niet op de gevraagde positie geplaatst. - Wanneer een schip op een geldige positie geplaatst is, is dit zichtbaar waar ik het schip heb geplaatst. Het schip kan verplaatst worden naar een andere geldige positie. |
| Backend URL | http://{host}:{port}/api/games/{id}/positionship |
| Story ID | 5 |
|---|---|
| Naam | Als speler krijg ik tijdens het plaatsen van de schepen en het effectief spelen van het spel steeds voldoende informatie. |
| Screen | Spel pagina |
| Type | Frontend + Backend |
| Script | Op iedere ogenblik vanaf het starten van een nieuw spel kunnen de actuele gegevens van een spel opgevraagd worden en indien nodig aan de speler getoond worden. Deze gegevens bevatten o.a. een boolean isReadyToStart, die aangeeft of alle schepen van de speler correct geplaatst zijn, de posities van de eigen schepen, de status van het spelbord van de tegenstander en status van het eigen spelbord. |
| Deadline | |
| Acceptatie criteria | - Tijdens het spelen van het spel ziet de speler hoeveel schoten hij en de tegenstander reeds hebben afgeschoten. - Tijdens het spelen van het spel ziet de speler welke en hoeveel schepen reeds tot zinken zijn gebracht bij de tegenstander. - Tijdens het spelen van het spel ziet de speler welke en hoeveel schepen de tegenstander reeds tot zinken heeft gebracht bij de speler. - Wanneer alle schepen van de speler tot zinken zijn gebracht krijgt de speler een mededeling dat hij verloren is en is het spel afgelopen. - Wanneer de speler alle schepen geplaatst door de backend tot zinken heeft gebracht krijgt de speler de melding dat hij het spel heeft gewonnen en is het spel afgelopen. |
| Backend URL | http://{host}:{port}/api/games/{id} |
| Story ID | 6 |
|---|---|
| Naam | Als speler kan ik het spel effectief beginnen spelen zodra ik al mijn schepen op een geldige positie heb staan. |
| Screen | Spel pagina |
| Type | Frontend + Backend |
| Script | Zodra alle schepen door de speler op een geldige positie zijn geplaatst, kan de speler beslissen om het spel effectief te starten. In de backend wordt ook een spelbord met schepen voor de speler aangemaakt. In de basisversie van het spel zal de backend de schepen willekeurig op een geldige positie plaatsen. |
| Deadline | |
| Acceptatie criteria | - De knop om het spel te starten wordt beschikbaar zodra alle schepen op een geldige positie staan. - Zolang het spel niet gestart is, kunnen er geen schoten gelost worden. Vanaf het ongeblik dat het spel gestart is kan de speler een schot lossen. |
| Backend URL | http://{host}:{port}/api/games/{id}/start |
| Story ID | 7 |
|---|---|
| Naam | Als speler kan ik, zodra het spel gestart is, een schot aflossen om zo proberen de schepen van mijn tegenstander tot zinken te brengen. |
| Screen | Spel pagina |
| Type | Frontend + Backend |
| Script | De speler selecteert een positie op het spelbord waar hij het schot wil lossen. De coördinaten van het schot worden naar de backend verstuurd, die vervolgens antwoord of het raak was of niet. Indien het schot ervoor zorgt dat het volledige schip geraakt is zal dit ook in het antwoord van de backend staan. |
| Deadline | |
| Acceptatie criteria | - De speler kan een coördinaat selecteren en een schot lossen. - De speler ziet duidelijk of zijn schot raak is of niet. - De speler ziet duidelijk wanneer hij een volledig schip tot zinken heeft gebracht. |
| Backend URL | http://{host}:{port}/api/games/{id}/shoot |
Deze optionele user stories specifiëren het gewenste gedrag bij het implementeren van extra's in de applicatie.
| Story ID | 8 |
|---|---|
| Naam | Slimme computer strategie |
| Screen | Spel pagina |
| Type | Backend |
| Script | Wanneer de computerspeler aan zet is, wordt er niet langer een willekeurige vrije cel geselecteerd om op te schieten. De computerspeler bekijkt eerdere schoten die een schip geraakt hebben en selecteert op basis daarvan een logische zet. |
| Deadline | |
| Acceptatie criteria | - De computerspeler selecteert geen willekeurige cel indien er een betere zet mogelijk is. - De computerspeler probeert steeds een eerder geraakt schip tot zinken te brengen. [- De computerspeler schiet niet op plaatsen waar een schip niet meer kan staan. (door te weinig ruimte) |