# Werwolf - Flutter App

## Beschreibung
Die "Werwolf" Flutter App wurde als Teil eines Gruppenprojekts von David Miller und Yusuf Can Özdemirkan entwickelt. Ziel der App ist es, das bekannte Partyspiel "Werwolf" digital nachzubilden und eine benutzerfreundliche Plattform zu bieten, die es Spielern ermöglicht, ohne komplizierte Anmeldungen oder Einstellungen zu spielen.

## Funktionalitäten
- **Anmeldungsfreier Zugang**: Spieler können sich ohne Anmeldung direkt über ein mehrfeldriges Formular registrieren. 
  <img src="images/spielerliste.png" width="250">
- **Spielerregistrierung**: Über das Formular können sich beliebig viele Spieler (mindestens 6) eintragen.
- **Konfiguration der Spielrunde**: Vor dem Spielbeginn lassen sich Anzahl und Arten der speziellen Rollen konfigurieren.
  <img src="images/settings.png" width="250">
- **Enthüllung der Rollen**: Nachdem alle Spieler eingetragen sind, wird durch Anklicken der Karte die Rolle der jeweiligen Person aufgedeckt. Dieser Vorgang wird wiederholt, bis alle Spieler ihre Rollen kennen.
  <img src="images/spieler.png" width="250">
  <img src="images/rolle.png" width="250">
- **Spielaktionen**: Die App ermöglicht es, den Tod von Spielern festzustellen und weitere Spielaktionen zu verwalten.
  <img src="images/spielfeld_tag.png" width="250">
  <img src="images/spielfeld_nacht.png" width="250">
  <img src="images/tote_spieler.png" width="250">
- **Moderation und Sieg**: Der Moderator kann die Rollen der Spieler einsehen und bei einem Sieg der Dorfbewohner, Werwölfe oder des Jokers wird ein entsprechender Bildschirm angezeigt.
  <img src="spielerrollen_fuer_moderator.png" width="250">
  <img src="images/winscreen.png" width="250">

## Plattformunterstützung und Tests
Die App ist plattformunabhängig konzipiert und wurde auf folgenden Plattformen getestet:
- **Android**
- **iOS**
- **MacOS**

### Besondere Hinweise zum Testen
- **Integrationstests**: Befolge die untenstehenden Anweisungen zur Installation der Abhängigkeiten und Ausführung der Tests.

## Installation und Ausführung

### Voraussetzungen
- Flutter SDK (Version >= 3.4.3)
- Abhängigkeiten in `pubspec.yaml`

### Installation
1. Klone das Repository:
   ```bash
   git clone https://gitty.informatik.hs-mannheim.de/2011708/cpd_David_und_Yusuf

2. Wechsle in das Projektverzeichnis:
   cd cpd_David_und_Yusuf

3. Installiere die Abhängigkeiten:
   flutter pub get

### Ausführen der App
- **Android/iOS/MacOS**:
  flutter run

## Tests

### Unit- und Widget-Tests ausführen
flutter test

### Integrationstests ausführen
1. Erstelle eine Datei `test_driver/integration_test.dart` mit folgendem Inhalt:
   import 'package:integration_test/integration_test_driver.dart';

   Future<void> main() => integrationDriver();

2. Erstelle eine Datei `integration_test/app_test.dart` mit deinen Integrationstests (siehe vorherige Anweisungen).

3. Führe den Integrationstest aus:
   flutter drive --driver=test_driver/integration_test.dart --target=integration_test/app_test.dart

### Shell-Skript zur Installation und Ausführung

Füge folgendes Skript `run_app.sh` hinzu, um die App zu installieren und auszuführen:

#!/bin/sh

Klone das Repository
git clone https://gitty.informatik.hs-mannheim.de/2011708/cpd_David_und_Yusuf

Wechsle in das Projektverzeichnis
cd cpd_David_und_Yusuf

Installiere die Abhängigkeiten
flutter pub get

Starte die App
flutter run

## Gitty Repository
Das Projekt wird auf Gitty von der Hochschule gehostet. Hier ist der Link zum Repository:
[Gitty Repository](https://gitty.informatik.hs-mannheim.de/2011708/cpd_David_und_Yusuf)

## Kontakt
Für Fragen, Feedback oder Unterstützung kontaktieren Sie bitte:
- Yusuf Can Özdemirkan, 1813055: yusufcan.oezdemirkan@stud.hs-mannheim.de
- David Miller, 2011708: 2011708@stud.hs-mannheim.de
