Readme++
parent
5ebe14df32
commit
60d994bca7
69
README.md
69
README.md
|
@ -5,11 +5,78 @@ Die "Werwolf" Flutter App ist ein Projekt, das im Rahmen eines Gruppenprojekts v
|
||||||
|
|
||||||
## Funktionalitäten
|
## Funktionalitäten
|
||||||
- **Anmeldungsfreier Zugang**: Spieler müssen sich nicht anmelden, sondern können direkt über ein Formular mit mehreren Feldern teilnehmen.
|
- **Anmeldungsfreier Zugang**: Spieler müssen sich nicht anmelden, sondern können direkt über ein Formular mit mehreren Feldern teilnehmen.
|
||||||
- **Spielerregistrierung**: Das Formular ermöglicht es Spielern, sich einzutragen, wobei eine beliebige Anzahl von Spielern möglich ist. (Ab 6 Spieler)
|
- **Spielerregistrierung**: Das Formular ermöglicht es Spielern, sich einzutragen, wobei eine beliebige Anzahl von Spielern möglich ist (ab 6 Spieler).
|
||||||
- **Konfiguration der Spielrunde**: Vor Beginn des Spiels können Konfigurationen vorgenommen werden, wie die Anzahl und Art der speziellen Rollen im Spiel.
|
- **Konfiguration der Spielrunde**: Vor Beginn des Spiels können Konfigurationen vorgenommen werden, wie die Anzahl und Art der speziellen Rollen im Spiel.
|
||||||
- **Enthüllung der Rollen**: Nachdem alle Spieler eingetragen sind und die Konfigurationen abgeschlossen sind, wird der Name der ersten Person angezeigt. Durch Anklicken der Karte wird dann die Rolle dieser Person aufgedeckt. Dieser Vorgang wird für jede Person wiederholt, bis alle Spieler und ihre Rollen angezeigt wurden.
|
- **Enthüllung der Rollen**: Nachdem alle Spieler eingetragen sind und die Konfigurationen abgeschlossen sind, wird der Name der ersten Person angezeigt. Durch Anklicken der Karte wird dann die Rolle dieser Person aufgedeckt. Dieser Vorgang wird für jede Person wiederholt, bis alle Spieler und ihre Rollen angezeigt wurden.
|
||||||
- **Spielaktionen**: Die App bietet Funktionen, um den Tod von Spielern festzulegen und andere Spielaktionen durchzuführen.
|
- **Spielaktionen**: Die App bietet Funktionen, um den Tod von Spielern festzulegen und andere Spielaktionen durchzuführen.
|
||||||
|
|
||||||
|
## Plattformunterstützung und Tests
|
||||||
|
Die Applikation benutzt keine plattformspezifischen Funktionen oder Bibliotheken, sollte daher überall laufen. Wir haben die App unter folgenden Plattformen getestet:
|
||||||
|
- **Android**
|
||||||
|
- **iOS**
|
||||||
|
- **Web**
|
||||||
|
|
||||||
|
### Besondere Hinweise zum Testen
|
||||||
|
- **Integrationstests**: Um die Integrationstests auszuführen, folge den untenstehenden Anweisungen zur Installation der Abhängigkeiten und zum Ausführen der Tests.
|
||||||
|
- **Zusätzliche Parameter für Build/Test**: Keine besonderen Parameter erforderlich.
|
||||||
|
|
||||||
|
## Installation und Ausführung
|
||||||
|
|
||||||
|
### Voraussetzungen
|
||||||
|
- Flutter SDK (Version >= 3.4.3)
|
||||||
|
- Abhängigkeiten in `pubspec.yaml`
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
1. Klone das Repository:
|
||||||
|
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**:
|
||||||
|
flutter run
|
||||||
|
|
||||||
|
- **Web**:
|
||||||
|
flutter run -d chrome
|
||||||
|
|
||||||
|
## 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
|
## Gitty Repository
|
||||||
Das Projekt wird auf Gitty von der Hochschule gehostet. Hier ist der Link zum 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)
|
[Gitty Repository](https://gitty.informatik.hs-mannheim.de/2011708/cpd_David_und_Yusuf)
|
||||||
|
|
|
@ -7,7 +7,6 @@ import 'package:werwolf/screens/gameboard.dart';
|
||||||
import '../models/player.dart';
|
import '../models/player.dart';
|
||||||
import '../models/role.dart';
|
import '../models/role.dart';
|
||||||
|
|
||||||
// FlipingCard is a StatefulWidget that takes a list of players as input
|
|
||||||
class FlipingCard extends StatefulWidget {
|
class FlipingCard extends StatefulWidget {
|
||||||
final List<Player> players;
|
final List<Player> players;
|
||||||
const FlipingCard({required this.players, super.key});
|
const FlipingCard({required this.players, super.key});
|
||||||
|
@ -16,19 +15,17 @@ class FlipingCard extends StatefulWidget {
|
||||||
State<FlipingCard> createState() => _FlipingCardState();
|
State<FlipingCard> createState() => _FlipingCardState();
|
||||||
}
|
}
|
||||||
|
|
||||||
// State class for FlipingCard
|
|
||||||
class _FlipingCardState extends State<FlipingCard> {
|
class _FlipingCardState extends State<FlipingCard> {
|
||||||
int index = 0; // Index to keep track of the current player
|
int index = 0;
|
||||||
|
|
||||||
late FlipCardController _controller; // Controller for the flip card
|
late FlipCardController _controller;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
_controller = FlipCardController(); // Initialize the flip card controller
|
_controller = FlipCardController();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Method to render the content of the flip card
|
|
||||||
_renderContent(context) {
|
_renderContent(context) {
|
||||||
return Card(
|
return Card(
|
||||||
elevation: 0.0,
|
elevation: 0.0,
|
||||||
|
@ -59,7 +56,7 @@ class _FlipingCardState extends State<FlipingCard> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Text(
|
const Text(
|
||||||
'Click to see your role!',
|
'Klick um deine Rolle zu sehen!',
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -127,14 +124,14 @@ class _FlipingCardState extends State<FlipingCard> {
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
setState(() {
|
setState(() {
|
||||||
if (index > 0 && index <= widget.players.length) {
|
if (index > 0 && index <= widget.players.length) {
|
||||||
index--; // Go to the previous player
|
index--;
|
||||||
if (!_controller.state!.isFront) {
|
if (!_controller.state!.isFront) {
|
||||||
_controller.toggleCardWithoutAnimation();
|
_controller.toggleCardWithoutAnimation();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
child: const Text("Back"),
|
child: const Text("Zurück"),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Flexible(
|
Flexible(
|
||||||
|
@ -142,12 +139,11 @@ class _FlipingCardState extends State<FlipingCard> {
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
setState(() {
|
setState(() {
|
||||||
if (index >= 0 && index < widget.players.length - 1) {
|
if (index >= 0 && index < widget.players.length - 1) {
|
||||||
index++; // Go to the next player
|
index++;
|
||||||
if (!_controller.state!.isFront) {
|
if (!_controller.state!.isFront) {
|
||||||
_controller.toggleCardWithoutAnimation();
|
_controller.toggleCardWithoutAnimation();
|
||||||
}
|
}
|
||||||
} else if (index == widget.players.length - 1) {
|
} else if (index == widget.players.length - 1) {
|
||||||
// Navigate to the game board if it's the last player
|
|
||||||
Navigator.push(
|
Navigator.push(
|
||||||
context,
|
context,
|
||||||
MaterialPageRoute(
|
MaterialPageRoute(
|
||||||
|
@ -159,8 +155,8 @@ class _FlipingCardState extends State<FlipingCard> {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
child: Text(index != widget.players.length - 1
|
child: Text(index != widget.players.length - 1
|
||||||
? "Next Player"
|
? "Nächster Spieler"
|
||||||
: "Start Game!"),
|
: "Spiel anfangen!"),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
import 'package:integration_test/integration_test_driver.dart';
|
||||||
|
|
||||||
|
Future<void> main() => integrationDriver();
|
Loading…
Reference in New Issue