diff --git a/README.md b/README.md index 6a00fdb..46735da 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,14 @@ - -# TextRPG Demo (C# Console) +# Clean Code Demo (C# Console) En liten, självständig C#‑konsolapplikation som demonstrerar ett turordningsbaserat stridssystem mellan en **Player** och olika **Enemy**‑typer. Fokus ligger på enkla domänobjekt, gränssnitt och en tjänst som orkestrerar striden. -> **Byt gärna rubriken** till ditt projektnamn. - --- ## Innehåll + - Strider mellan spelare och fiender (med boss‑modifierad skada) -- Enkelt loot‑system (t.ex. *gold*, *dragon_scale*) -- Inventarie som påverkar skada (*sword*) och helning (*potion*) +- Enkelt loot‑system (t.ex. _gold_, _dragon_scale_) +- Inventarie som påverkar skada (_sword_) och helning (_potion_) - Klara, separata ansvarsområden via gränssnitt (`IAttackable`, `IDescribable`) --- @@ -55,9 +53,9 @@ GameRunner --> Enemy GameRunner --> BattleService ``` -- **`GameRunner`** skapar spelare och fiender och kör igenom några rundor. -- **`BattleService`** innehåller stridslogik åt båda håll och hanterar boss‑modifierad skada. -- **`Player`** och **`Enemy`** implementerar **`IAttackable`** (kan ta skada) och **`IDescribable`** (kan beskrivas/skrivas ut). +- **`GameRunner`** skapar spelare och fiender och kör igenom några rundor. +- **`BattleService`** innehåller stridslogik åt båda håll och hanterar boss‑modifierad skada. +- **`Player`** och **`Enemy`** implementerar **`IAttackable`** (kan ta skada) och **`IDescribable`** (kan beskrivas/skrivas ut). - **`EnemyType`** skiljer på vanliga fiender och bossar för skaleffekt i skada. --- @@ -76,6 +74,7 @@ GameRunner --> BattleService ``` **Kort om filerna** + - `GameRunner.cs` – Programstart; sätter upp spelare/fiender och kör exempelstrider. - `BattleService.cs` – Metoder för spelar‑ och fiendeattacker, inklusive boss‑modifiering av skada. - `Player.cs` – Spelarens HP, bas‑skada, inventarie (t.ex. `potion`, `sword`), helning och damage‑beräkning. @@ -89,9 +88,11 @@ GameRunner --> BattleService ## Kom igång ### Förutsättningar -- **.NET SDK 6.0+** (fungerar fint även på nyare versioner). + +- **.NET SDK 6.0+** (fungerar fint även på nyare versioner). ### Klona och kör + ```bash # Klona repo git clone @@ -102,22 +103,12 @@ dotnet build dotnet run ``` -> **Saknas .csproj?** Skapa ett nytt konsolprojekt och lägg in filerna: -```bash -# Skapa nytt projekt -mkdir TextRpgDemo && cd TextRpgDemo - dotnet new console -n TextRpgDemo -# Flytta in källfilerna i projektmappen (TextRpgDemo/) -# … och kör sedan -cd TextRpgDemo - dotnet run -``` - --- ## Exempel: flöde och utdata Körningen i `GameRunner` gör ungefär detta: + 1. Skapa `Player("Hero", 100, 15)` och lägg till `potion` och `sword` i inventariet. 2. Skapa `Enemy("Goblin", 40, 8, Normal)` och `Enemy("Dragon", 120, 25, Boss)`. 3. Spelaren och goblinen slåss tills goblinen dör och droppar `gold`. @@ -166,26 +157,3 @@ HP: 48 Base DMG: 15 Inventory: sword, gold ``` - -> Notera stavningen `attackts` i loggraden – det speglar koden och kan enkelt rättas i `BattleService` om du vill. - ---- - -## Designval och utbyggnad -- **Enkla gränssnitt** gör det lätt att lägga till fler typer av entiteter som kan delta i strid. -- **Inventarie‑påverkan** visar hur utrustning och konsumtionsobjekt kan förändra beteende (skada/helning). -- **Tjänstlager (`BattleService`)** samlar stridsreglerna och gör dem testbara. - -**Möjliga förbättringar** -- Enhetstester för `BattleService`, `Player` och `Enemy`. -- Bättre utskrift/loggning och lokalisering. -- Gränser för max‑HP och skydd mot negativa värden. -- Mer avancerat loot‑ och status‑effektsystem. - ---- - -## Licens -Ange licens här (t.ex. MIT). Lägg gärna till en `LICENSE`‑fil i repo. - -## Kontakt -Ägare/underhållare: *ersätt med ditt namn/GitHub‑användare*