Skip to content

Repository files navigation

🎮 Random Letter Duel

🇸🇪 Svenska

Random Letter Duel är ett turbaserat ordspel för två spelare, utvecklat som en del av kursen Systemtestning (SYSM9).

Projektet fokuserar på tydliga spelregler, testbar design och en strukturerad utvecklingsprocess med TDD och BDD.


🚀 Spelidé

  • Två spelare spelar i varsin webbläsarflik
  • En spelare skapar ett spel och delar en kod
  • Den andra spelaren ansluter via koden
  • Spelare turas om att skriva ord
  • Varje ord genererar en bokstav som nästa ord måste börja på

Spelet spelas i 5 rundor och spelaren med flest poäng vinner.

Nuvarande UI är anpassat för två spelare, men backend är designad för att kunna stödja fler spelare.


🧩 Regler i korthet

  • Endast giltiga ord accepteras
  • Ord får inte återanvändas
  • Varje giltigt ord ger 1 poäng
  • Spelare kan välja att passa
  • Dubbel-pass avslutar rundan
  • Spelaren med lägst poäng börjar nästa runda

🔄 Spelflöde

  1. Spelare 1 skapar ett spel
  2. Spelare 2 ansluter via kod
  3. Spelet startar automatiskt
  4. Aktiv spelare gör ett drag (ord eller pass)
  5. API uppdaterar spelstate
  6. UI uppdateras via polling
  7. Efter 5 rundor avslutas spelet

🏗️ Arkitektur

Projektet är uppdelat i flera lager:

  • UI – Blazor Server
  • API – .NET Web API
  • BLL – Affärslogik
  • DAL – Dataåtkomst
  • Shared – DTO:er

UI kommunicerar endast med API, vilket ger hög testbarhet och tydlig separation av ansvar.


🧪 Testning

Projektet använder flera testnivåer:

  • xUnit – Enhetstester för affärslogik
  • API-tester – Verifierar endpoints
  • BDD (Gherkin) – Användarflöden
  • Systemtester – End-to-end via UI

Testning har varit en central del av utvecklingen och har använts både för att verifiera funktionalitet och fånga buggar.


⚙️ Tekniska val

  • Polling används för att synka spelstate mellan flikar
  • Fokus på enkel, testbar och robust logik
  • Backend designad för skalbarhet (fler spelare möjligt)
  • Arkitektur med tydlig separation mellan lager

⚠️ Begränsningar

  • UI stödjer i nuläget endast två spelare
  • Backend är designad för att kunna stödja fler spelare
  • Spelet körs på en dator (två flikar)
  • Ingen realtidskommunikation (SignalR)
  • Begränsad ordvalidering

👥 Grupp

  • Daniel Persson
  • Abbas Khudayer
  • Linda-Maria Modig
  • Simon Bergstrand
  • Amin Nazari

Klass: SYSM9


📄 Dokumentation

Se även:

  • PLANNING.md – Planeringsdokument


🇬🇧 English

Random Letter Duel is a turn-based word game for two players, developed as part of the Software Testing course (SYSM9).

The project focuses on clear game rules, testable design, and a structured development process using TDD and BDD.


🚀 Game Concept

  • Two players play in separate browser tabs
  • One player creates a game and shares a code
  • The second player joins using the code
  • Players take turns submitting words
  • Each word generates a letter for the next turn

The game consists of 5 rounds, and the player with the highest score wins.

The current UI supports two players, while the backend is designed to support more players.


🧩 Rules (Summary)

  • Only valid words are accepted
  • Words cannot be reused
  • Each valid word gives 1 point
  • Players may pass
  • Double pass ends the round
  • The player with the lowest score starts the next round

🔄 Game Flow

  1. Player 1 creates a game
  2. Player 2 joins via code
  3. The game starts automatically
  4. Active player submits a word or passes
  5. API updates the game state
  6. UI syncs via polling
  7. After 5 rounds, the game ends

🏗️ Architecture

The solution is structured into layers:

  • UI – Blazor Server
  • API – .NET Web API
  • BLL – Business Logic
  • DAL – Data Access
  • Shared – DTOs

The UI communicates only with the API, ensuring strong separation of concerns and high testability.


🧪 Testing

The project includes multiple testing levels:

  • xUnit – Unit testing
  • API tests – Endpoint validation
  • BDD (Gherkin) – User behavior scenarios
  • System tests – End-to-end testing via UI

Testing has been a core part of the development process.


⚙️ Technical Choices

  • Polling is used to synchronize state between tabs
  • Focus on simplicity, testability, and maintainability
  • Backend designed for scalability (multi-player support)

⚠️ Limitations

  • The UI currently supports only two players
  • The backend is designed to support multiple players
  • Runs on a single machine (two tabs)
  • No real-time communication (SignalR)
  • Limited word validation

👥 Team

  • Daniel Persson
  • Abbas Khudayer
  • Linda-Maria Modig
  • Simon Bergstrand
  • Amin Nazari

Class: SYSM9


📄 Documentation

See also:

  • PLANNING.md – Planning document

About

Final assignment for the course "Systemtestning"

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages