-
Notifications
You must be signed in to change notification settings - Fork 3
User stories
Wesley Hendrikx edited this page Apr 28, 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: Controleer vooraleer je het wachtwoord doorstuurt naar de backend dat het wachtwoord min. uit 6 karakters bestaat. 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 | week 3 |
| 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 het wachtwoord te kort is. - 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 | Week 3 |
| 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 |
| Type | Frontend en backend |
| 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 | Week 4 |
| 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 |
| Out of scope | Het automatisch plaatsen van de schepen van de computerspeler is niet inbegrepen in deze user story. Dit wordt afgedekt in user story 5. |
| Story ID | 4 |
|---|---|
| Naam | Als menselijke 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 nooit overlappen. Schepen mogen elkaar wel raken. |
| Deadline | Week 4 |
| 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. - Foutboodschappen van de backend bij het plaatsen van een schip worden getoond aan de gebruiker. - Wanneer een schip op een geldige positie geplaatst is, is het zichtbaar waar het schip werd geplaatst. Het schip kan vervolgens wel verplaatst worden naar een andere geldige positie. |
| Backend URL | http://{host}:{port}/api/games/{id}/positionship (om het schip proberen te plaatsen) http://{host}:{port}/api/games/{id} (geeft info terug die gebruikt kan worden om de schepen in het grid te tekenen) |
| Story ID | 5 |
|---|---|
| Naam | Als menselijke speler kan ik het spel effectief beginnen spelen zodra alle schepen van beide spelers op een geldige positie staan. |
| Screen | Spel pagina |
| Type | Frontend + Backend |
| Script | Bij het aanmaken van een spel worden de schepen van de computerspeler automatisch op willekeurige posities in het grid van de computerspeler geplaatst. Hierbij gelden dezelfde regels / beperkingen als bij het plaatsen van schepen door een menselijke speler. Vervolgens plaatst de menselijke speler zijn schepen. Zodra alle schepen door de menselijke speler op een geldige positie zijn geplaatst, kan de speler beslissen om het spel effectief te starten. |
| Deadline | Week 5 |
| Acceptatie criteria | - De knop om het spel te starten is enkel beschikbaar zodra alle schepen van beide spelers op een geldige positie staan. - Zolang het spel niet gestart is, kunnen er geen schoten gelost worden. Als het spel gestart is kan de menselijke speler als eerste een schot lossen. |
| Backend URL | http://{host}:{port}/api/games/{id}/start |
| Story ID | 6 |
|---|---|
| Naam | Als menselijke 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 | Week 5 |
| 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 kan, tijdens het spel, steeds zien op welke cellen van de tegenstander hij al geschoten heeft. - De speler ziet, tijdens het spel, steeds hoeveel schoten hij reeds heeft afgeschoten. - De speler ziet duidelijk wanneer hij een volledig schip tot zinken heeft gebracht. - De speler ziet, tijdens het spel, steeds welke en hoeveel schepen reeds tot zinken zijn gebracht bij de tegenstander. - Als de backend aangeeft dat het schot niet mogelijk is (het is, bijvoorbeeld, je beurt nog niet), dan wordt de foutboodschap getoond. |
| Backend URL | http://{host}:{port}/api/games/{id}/shoot en http://{host}:{port}/api/games/{id} |
| Story ID | 7 |
|---|---|
| Naam | Als menselijke speler zie ik het resultaat van het automatisch schot van de computerspeler. |
| Screen | Spel pagina |
| Type | Frontend + Backend |
| Script | Nadat de menselijke speler geschoten heeft, zal de computerspeler automatisch terug schieten op een willekeurige vrije cel van het grid van de menselijke speler. |
| Deadline | Week 7 |
| Acceptatie criteria | - De speler ziet, tijdens het spel, steeds welke op welke cellen de tegenstander geschoten heeft. - De speler ziet, tijdens het spel, steeds welke en hoeveel schepen de tegenstander reeds tot zinken heeft gebracht bij de speler. - De computer speler schiet enkel op cellen waar nog niet op geschoten is. Van de vrije cellen wordt steeds een willekeurige cel gekozen. |
| Backend URL | http://{host}:{port}/api/games/{id} |
| Story ID | 8 |
|---|---|
| Naam | Als speler krijg ik te zien welke speler het spel gewonnen heeft als alle schepen van 1 van de 2 spelers gezonken zijn. |
| Screen | Spel pagina |
| Type | Frontend + Backend |
| Script | Wanneer alle schepen van een speler gezonken zijn dan wordt de winnaar van het spel weergegeven. |
| Deadline | Week 7 |
| Acceptatie criteria | - Wanneer alle schepen van de menselijke speler tot zinken zijn gebracht krijgt de speler een mededeling dat hij verloren is en is het spel afgelopen. - Wanneer de menselijke speler alle schepen van de computerspeler tot zinken heeft gebracht krijgt de speler de melding dat hij het spel heeft gewonnen en is het spel afgelopen. - Er kan niet meer geschoten worden als het spel is afgelopen. |
| Backend URL | http://{host}:{port}/api/games/{id} |
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. Verder is de computerspeler slim genoeg om niet te schieten op vakjes waar geen schip van de tegenstander nog zou passen. Heeft de tegenstander, bijvoorbeeld, enkel nog een Destroyer dan moet het vak waarop geschoten wordt minstens 2 nabije lege vakken hebben. |
| 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) |
| Story ID | 9 |
|---|---|
| Naam | Meerdere schoten per beurt |
| Screen | Spelopties, Spel pagina |
| Type | Frontend + Backend |
| Script | De speler kan kiezen om het spel te starten met deze optie. In deze variant kan een speler meerdere schoten per beurt afvuren. Het precieze aantal schoten kan ook variëren, naargelang de optie die gekozen wordt: - Het aantal niet gezonken schepen van de aanvallende speler - De grootte van het grootste niet geraakt schip van de aanvallende speler (met een minimum van 2 schoten) - Een vooraf gedefinieerd aantal schoten |
| Acceptatie criteria | - De speler kan een spel starten met de optie om elke beurt meerdere schoten tegelijk af te vuren. - De speler kan kiezen welke regel er gebruikt wordt voor het bepalen van dit aantal. - De speler kan het betreffende aantal schoten in zijn beurt afvuren. - De computerspeler kan dit op dezelfde manier. - Het resultaat van elk schot wordt correct getoond in het spel. - Het aantal af te vuren schoten wordt correct aangepast tijdens het spel, indien van toepassing. |
| Story ID | 10 |
|---|---|
| Naam | Niet moeten melden van een gezonken schip |
| Screen | Spel pagina |
| Type | Frontend + Backend |
| Script | Wanneer een schip zinkt, moet dit niet gemeld worden door de betreffende speler. De aanvallende speler moet dit zelf achterhalen door nog extra torpedo's af te vuren. |
| Acceptatie criteria | - Bij opstart van het spel kan deze optie meegegeven worden. - Spelers melden hun gezonken schepen niet aan de andere speler |
| Story ID | 11 |
|---|---|
| Naam | Verplaatsen van schepen tijdens het spel |
| Screen | Spel pagina |
| Type | Frontend + Backend |
| Script | Om de zoveel beurten mag een speler 1 van zijn schepen verplaatsen, om het de tegenstander zo wat moeilijker te maken. Het aantal beurten dat je moet wachten is instelbaar en ligt tussen 1 en 10 (1, 10 inclusief). Enkel schepen die niet beschadigd zijn mogen verplaatst worden. |
| Acceptatie criteria | - Bij opstart van het spel kan deze optie aangezet worden en kan het aantal beurten dat je moet wachten ingegeven worden. - Om de zoveel beurten krijgt de speler de melding dat er 1 schip verplaatst mag worden. - Nieuwe plaats van schip kan gekozen worden volgens zelfde plaatsingsregels als tevoren. - Computerspeler verplaatst ook 1 schip op een geldige manier. - Het spel gaat pas verder wanneer beide spelers klaar zijn met het verplaatsen. |
| Story ID | 12 |
|---|---|
| Naam | Vervormde schepen toestaan |
| Screen | Spel pagina |
| Type | Frontend + Backend |
| Script | Schepen moet niet meer in een rechte lijn liggen. Elk segment van een schip moet minstens 1 ander segment van dat schip raken. Dit kan horizontaal, verticaal, maar ook diagonaal zijn. |
| Acceptatie criteria | - Optie om deze spelvorm te activeren bij opstart - Bij plaatsing van schepen wordt deze vorm ondersteund in front- en backend. |
| Story ID | 13 |
|---|---|
| Naam | Multiplayer (2 menselijke spelers) |
| Screen | Spel pagina, Lobby pagina |
| Type | Frontend + Backend |
| Script | Er wordt een optie aan het spel toegevoegd zodat een spel gestart kan worden waarbij 2 menselijke spelers het tegen elkaar opnemen. Ze doen om beurt een zet en er komt geen computerspeler meer aan te pas. |
| Acceptatie criteria | - Optie bij opstarten van een spel voor player vs. player - Bij opstart van het spel wordt er gewacht tot beide spelers hun schepen geplaatst hebben - Deelnemende spelers komen om beurt aan zet, waarbij de andere geselecteerde spelregels gerespecteerd worden. - Op het einde van het spel wordt de winnaar getoond. |
| Story ID | 14 |
|---|---|
| Naam | Multiplayer (Groep spelers tegen AI) |
| Screen | Spel pagina, Lobby pagina |
| Type | Frontend + Backend |
| Script | Er word een optie aan het spel toegevoegd waarbij het mogelijk is om met meerdere (menselijke) spelers tegen een computer speler te spelen. Een eerste spel start een wachtkamer / lobby waar andere spelers zichzelf aan kunnen toevoegen. Als het ingestelde aantal spelers aanwezig is in de lobby, dan start de wedstrijd en speelt elke speler tegen een computer speler. De winnaar is de speler die met het minst aantal schoten de computer kan verslaan. |
| Acceptatie criteria | - Een speler kan een nieuwe lobby maken. Hierbij wordt het aantal plaatsen bepaald en worden de spelopties ingesteld. - Andere spelers kunnen in een lobby stappen. - Als de lobby vol zit, dan wordt het spel gestart. - Tijdens het spelen worden de namen van de tegenspelers getoond met het aantal torpedo's die ze reeds geschoten hebben. - Zodra een speler gewonnen heeft en alle andere spelers hebben meer torpedo's afgeschoten, wordt de winnaar weergegeven. |