From 28833f0e0b91cf4de35501a2aff4be68ba2e2a0a Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Thu, 28 Aug 2025 17:26:57 +0200 Subject: [PATCH] =?UTF-8?q?feat(match3):=20Optimierung=20der=20Zug-Z=C3=A4?= =?UTF-8?q?hler-Logik=20und=20Vermeidung=20doppelter=20Z=C3=A4hlerh=C3=B6h?= =?UTF-8?q?ungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Einführung einer neuen Methode zur Zählung von Zügen, die in verschiedenen Spielereignissen aufgerufen wird, um die Anzahl der Züge konsistent zu verfolgen. - Anpassung mehrerer Methoden, um die Zug-Zähler-Logik zu zentralisieren und doppelte Erhöhungen zu vermeiden. - Verbesserung der Debug-Ausgaben zur besseren Nachverfolgbarkeit der Zug-Zähler-Updates und Spielereignisse. --- frontend/src/views/minigames/Match3Game.vue | 71 ++++++++++++++------- 1 file changed, 49 insertions(+), 22 deletions(-) diff --git a/frontend/src/views/minigames/Match3Game.vue b/frontend/src/views/minigames/Match3Game.vue index ee33ee8..992d972 100644 --- a/frontend/src/views/minigames/Match3Game.vue +++ b/frontend/src/views/minigames/Match3Game.vue @@ -2851,6 +2851,11 @@ export default { if (hasValidMatch) { console.log(`✅ Move erfolgreich - ${matches.length} Match(es) gefunden!`); + // WICHTIG: Zähle den erfolgreichen Zug + this.moves++; + this.movesLeft--; + console.log(`🎯 Zug gezählt: ${this.moves} Züge gemacht, ${this.movesLeft} Züge übrig`); + await this.handleMatches(matches, true); return true; } else { @@ -2915,8 +2920,7 @@ export default { await this.fillEmptyPositions(); // Erhöhe den Zug-Zähler - this.moves++; - this.movesLeft--; + this.countPowerUpMove(); return true; } @@ -2961,8 +2965,7 @@ export default { await this.fillEmptyPositions(); // Erhöhe den Zug-Zähler - this.moves++; - this.movesLeft--; + this.countPowerUpMove(); return true; }, @@ -3027,8 +3030,7 @@ export default { await this.fillEmptyPositions(); // Erhöhe den Zug-Zähler - this.moves++; - this.movesLeft--; + this.countPowerUpMove(); return true; } @@ -3092,8 +3094,7 @@ export default { await this.fillEmptyPositions(); // Erhöhe den Zug-Zähler - this.moves++; - this.movesLeft--; + this.countPowerUpMove(); return true; } @@ -4752,9 +4753,8 @@ export default { // Fülle leere Positionen mit neuen Tiles auf await this.fillEmptyPositions(); - // Erhöhe den Zug-Zähler - this.moves++; - this.movesLeft--; + // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal! + // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen } }, @@ -4784,9 +4784,8 @@ export default { // Fülle leere Positionen mit neuen Tiles auf await this.fillEmptyPositions(); - // Erhöhe den Zug-Zähler - this.moves++; - this.movesLeft--; + // Erhöhe den Zug-Zähler + this.countPowerUpMove(); }, // Aktiviere Regenbogen-Tile durch Doppelklick @@ -4922,11 +4921,10 @@ export default { // Fülle leere Positionen mit neuen Tiles auf await this.fillEmptyPositions(); - // Erhöhe den Zug-Zähler - this.moves++; - this.movesLeft--; - - // Punkte hinzufügen (Regenbogen-Aktivierung) + // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal! + // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen + + // Punkte hinzufügen (Regenbogen-Aktivierung) const points = tilesToRemove.length * 25 * this.currentLevel; this.levelScore += points; this.score += points; @@ -4949,6 +4947,7 @@ export default { // Neue Methode: Behandle Power-Up Tile Tausch async handleRainbowSwap(originalTile1, originalTile2) { // Power-Up Tausch als Zug zählen (wird auch über swapTiles aufgerufen) + // WICHTIG: Zähle den Zug nur einmal hier, nicht in den nachfolgenden Funktionen this.countPowerUpMove(); if (originalTile1.type === 'rainbow' && originalTile2.type === 'rainbow') { @@ -5140,9 +5139,8 @@ export default { // Fülle leere Positionen mit neuen Tiles auf await this.fillEmptyPositions(); - // Erhöhe den Zug-Zähler - this.moves++; - this.movesLeft--; + // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal! + // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen // Punkte hinzufügen (höhere Punktzahl für diese spezielle Kombination) const points = allTileIndices.length * 50 * this.currentLevel; @@ -5223,6 +5221,9 @@ export default { console.log(`🎯 Match-Zähler erhöht nach Bomben-Explosion: ${this.matchesMade} Matches gemacht`); } + // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal! + // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen + // Löse Kettenreaktionen nur für Power-Ups aus, die noch existieren // UND nur wenn es sich um eine manuelle Aktivierung handelt if (powerUpsToTrigger.length > 0 && isManualActivation) { @@ -5317,6 +5318,9 @@ export default { this.matchesMade += 1; console.log(`🎯 Match-Zähler erhöht nach Massen-Bomben-Explosion: ${this.matchesMade} Matches gemacht`); } + + // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal! + // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen }, // Neue Methode: Erstelle zufällige Raketen @@ -5369,6 +5373,9 @@ export default { this.matchesMade += 1; console.log(`🎯 Match-Zähler erhöht nach Massen-Raketen-Start: ${this.matchesMade} Matches gemacht`); } + + // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal! + // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen }, // Neue Methode: Behandle Rakete + Bombe Kombination @@ -5420,6 +5427,9 @@ export default { this.matchesMade += 1; console.log(`🎯 Match-Zähler erhöht nach Raketen-Bomben-Kombination: ${this.matchesMade} Matches gemacht`); } + + // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal! + // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen } } @@ -5454,6 +5464,9 @@ export default { this.matchesMade += 1; console.log(`🎯 Match-Zähler erhöht nach Bomben-Raketen-Landung: ${this.matchesMade} Matches gemacht`); } + + // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal! + // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen } }, @@ -5637,6 +5650,9 @@ export default { this.levelScore += points; this.score += points; + // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal! + // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen + // Starte Rakete auf zufälliges Feld this.launchRocketToRandomField(rocketIndex); } @@ -5709,6 +5725,8 @@ export default { this.levelScore += points; this.score += points; + // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal! + // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen } }, @@ -5780,6 +5798,9 @@ export default { console.log(`🎯 Match-Zähler erhöht nach Raketen-Verbindung: ${this.matchesMade} Matches gemacht`); } + // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal! + // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen + // Starte 3 Raketen auf zufällige Felder this.launchThreeRockets([rocket1Index, rocket2Index]); } @@ -5844,6 +5865,9 @@ export default { console.log(`🎯 Match-Zähler erhöht nach 3-Raketen-Start: ${this.matchesMade} Matches gemacht`); } + // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal! + // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen + // Löse Kettenreaktionen nur für Power-Ups aus, die noch existieren if (powerUpsToTrigger.length > 0) { setTimeout(() => { @@ -5927,6 +5951,9 @@ export default { console.log(`🎯 Match-Zähler erhöht nach Raketen-Start: ${this.matchesMade} Matches gemacht`); } + // WICHTIG: Zug-Zähler wird bereits in handleRainbowSwap erhöht, nicht hier nochmal! + // this.countPowerUpMove(); // ENTFERNT - wird bereits in handleRainbowSwap aufgerufen + // Löse Kettenreaktionen nur für Power-Ups aus, die noch existieren if (powerUpsToTrigger.length > 0) { setTimeout(() => {