Reorganized class and filled comments

This commit is contained in:
Felix Kirchner
2025-04-23 23:18:41 +02:00
parent 4fc7d98347
commit fc861c2d46

View File

@@ -1,20 +1,18 @@
import 'dart:math';
/// This class represents a game session for the Cabo game. /// This class represents a game session for the Cabo game.
/// [gameTitle] is the title of the game. /// [gameTitle] is the title of the game.
/// [players] is a string list of player names. /// [players] is a string list of player names.
/// [gameMode] is an integer representing the game mode. /// [pointLimit] is a boolean indicating if the game has the
/// 0 for the 101 points mode, 1 for unlimited /// default point limit of 101 points or not.
/// [createdAt] is the timestamp of when the game session was created. /// [createdAt] is the timestamp of when the game session was created.
/// [round] is the current round number. /// [round] is the current round number.
/// [finished] is a boolean indicating if the game session is finished. /// [finished] is a boolean indicating if the game session is finished.
/// [winner] is the name of the player who won the game.
class GameSession { class GameSession {
final DateTime createdAt = DateTime.now();
final String gameTitle; final String gameTitle;
final bool pointLimit;
final List<String> players; final List<String> players;
final int gameMode; List<List<int>> playerScores = List.generate(5, (_) => [0, 0]);
final DateTime createdAt = DateTime.now().subtract(Duration(
milliseconds: Random().nextInt(
Duration(days: 21).inMilliseconds + 1))); // DEBUG: Random Timestamp
int round = 1; int round = 1;
bool finished = false; bool finished = false;
String winner = ''; String winner = '';
@@ -22,46 +20,18 @@ class GameSession {
GameSession({ GameSession({
required this.gameTitle, required this.gameTitle,
required this.players, required this.players,
required this.gameMode, required this.pointLimit,
}); });
List<List<int>> playerScores = List.generate(5, (_) => [0, 0]);
@override @override
String toString() { String toString() {
return ('GameSession: [gameTitle: $gameTitle, ' return ('GameSession: [gameTitle: $gameTitle, '
'players: $players, ' 'players: $players, '
'round: $round, gameMode: $gameMode, ' 'round: $round, pointLimit: $pointLimit, '
'playerScores: $playerScores]'); 'playerScores: $playerScores]');
} }
void increaseRound() { // FIXME Debug
round++;
}
int getLengthOfPlayerNames() {
int length = 0;
for (String player in players) {
length += player.length;
}
return length;
}
void _determineWinner() {
int score = playerScores[0][0];
String lowestPlayer = players[0];
for (int i = 0; i < players.length; i++) {
print('Player: ${players[i]}, Score: ${playerScores[i][0]}');
if (playerScores[i][0] < score) {
print(
'New lowest player: ${players[i]} - Score: ${playerScores[i][0]}');
score = playerScores[i][0];
lowestPlayer = players[i];
}
}
print('Der Gewinner ist: $lowestPlayer');
winner = lowestPlayer;
}
/// Returns a string representation of the scores for a specific round. /// Returns a string representation of the scores for a specific round.
/// The method takes a round number as a parameter and returns a string /// The method takes a round number as a parameter and returns a string
/// containing the name of each player and their corressponding score in /// containing the name of each player and their corressponding score in
@@ -74,6 +44,20 @@ class GameSession {
return result; return result;
} }
/// Returns the length of all player names combined.
int getLengthOfPlayerNames() {
int length = 0;
for (String player in players) {
length += player.length;
}
return length;
}
/// Increases the round number by 1.
void increaseRound() {
round++;
}
/// Expands the player score lists by adding a new score of 0 for each player. /// Expands the player score lists by adding a new score of 0 for each player.
/// This method is called when a new round starts so the lists in the /// This method is called when a new round starts so the lists in the
/// active game view expands /// active game view expands
@@ -91,12 +75,25 @@ class GameSession {
void addRoundScoresToScoreList(List<int> roundScores, int roundNumber) { void addRoundScoresToScoreList(List<int> roundScores, int roundNumber) {
print('addRoundScoresToScoreList: $roundScores'); print('addRoundScoresToScoreList: $roundScores');
for (int i = 0; i < roundScores.length; i++) { for (int i = 0; i < roundScores.length; i++) {
print(
'i: $i, roundNumber: $roundNumber, playerScores[i].length: ${playerScores[i].length}');
playerScores[i][roundNumber] = (roundScores[i]); playerScores[i][roundNumber] = (roundScores[i]);
} }
} }
/// Determines the winner of the game session.
/// It iterates through the player scores and finds the player
/// with the lowest score.
void _determineWinner() {
int score = playerScores[0][0];
String lowestPlayer = players[0];
for (int i = 0; i < players.length; i++) {
if (playerScores[i][0] < score) {
score = playerScores[i][0];
lowestPlayer = players[i];
}
}
winner = lowestPlayer;
}
/// Summarizes the points of all players in the first index of their /// Summarizes the points of all players in the first index of their
/// score list. The method clears the first index of each player score /// score list. The method clears the first index of each player score
/// list and then sums up the points from the second index to the last /// list and then sums up the points from the second index to the last
@@ -109,7 +106,7 @@ class GameSession {
for (int j = 1; j < playerScores[i].length; j++) { for (int j = 1; j < playerScores[i].length; j++) {
playerScores[i][0] += playerScores[i][j]; playerScores[i][0] += playerScores[i][j];
} }
if (gameMode == 0 && playerScores[i][0] > 101) { if (pointLimit && playerScores[i][0] > 101) {
finished = true; finished = true;
print('${players[i]} hat die 101 Punkte ueberschritten, ' print('${players[i]} hat die 101 Punkte ueberschritten, '
'deswegen wurde das Spiel beendet'); 'deswegen wurde das Spiel beendet');