| Server IP : 202.61.199.114 / Your IP : 216.73.217.139 Web Server : nginx/1.22.1 System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64 User : web20 ( 1018) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/clients/client2/handy-app-tester.de/web/slot/ |
Upload File : |
document.addEventListener('DOMContentLoaded', function () {
// Prüfe, ob alle Elemente vorhanden sind, bevor Event-Listener hinzugefügt werden
const spinButton = document.getElementById('spin-button');
const betAmountSelect = document.getElementById('bet-amount');
const reels = document.getElementsByClassName('reel');
// Falls die Elemente nicht gefunden werden, gib eine Meldung aus
if (!spinButton) {
console.error("Ein oder mehrere HTML-Elemente konnten nicht gefunden werden. Überprüfe die IDs.");
return;
}
let playerPoints = 100;
let freeSpins = 0;
let multipliers = [2, 3, 4, 6, 8, 10, 20]; // Mögliche Multiplikatorwerte für das spezielle Symbol
// Spin Button Functionality
spinButton.addEventListener('click', function () {
if (freeSpins > 0) {
freeSpins--;
document.getElementById('free-spin-message').textContent = `You have ${freeSpins} free spins left!`;
betAmountSelect.disabled = true; // Wetteinsatz-Auswahl während der Freispiele sperren
} else {
const betAmount = parseFloat(document.getElementById('bet-amount').value);
if (betAmount * 3 > playerPoints) {
alert("Not enough points for this bet.");
return;
}
playerPoints -= betAmount * 3;
betAmountSelect.disabled = false; // Nach Ende der Freispiele Einsatz wieder wählbar machen
}
document.getElementById('player-points').textContent = playerPoints;
// Symbole und spezielle Freispielsymbole definieren
const baseSymbols = ["🍒", "🍋", "🍉", "🍇", "🍊"];
const scatterSymbol = "⭐"; // Scatter Symbol für Freispiele
const wildMultiplierSymbol = "🎰"; // Wild-Multiplikator Symbol
let results = [];
const reels = document.getElementsByClassName('reel');
// Reset all reel backgrounds
for (let i = 0; i < reels.length; i++) {
reels[i].style.backgroundColor = "#444";
}
for (let i = 0; i < reels.length; i++) {
// Erzeuge einen zufälligen Wert für das Scatter-Symbol
const scatterChance = Math.random(); // Zufallswert zwischen 0 und 1
// Wenn der Zufallswert kleiner als 0.1 ist (10% Wahrscheinlichkeit), dann füge das Scatter-Symbol hinzu
if (scatterChance < 0.11) {
results.push("⭐");
} else {
const randomSymbol = baseSymbols[Math.floor(Math.random() * baseSymbols.length)];
const randomChance = Math.random(); // Zufallswert generieren
const countMultiplier = results.filter(symbol => symbol === wildMultiplierSymbol).length;
if (freeSpins > 0 && ((randomChance < 0.08 && countMultiplier === 0) || (Math.random() < 0.03 && countMultiplier === 1))) {
results.push(wildMultiplierSymbol); // Multiplikator-Symbol hinzufügen
} else {
results.push(randomSymbol); // Zufälliges Symbol hinzufügen
}
}
reels[i].textContent = results[i];
}
// Check Winning Lines and Highlight
let winPoints = 0;
const betAmount = parseFloat(document.getElementById('bet-amount').value);
// Helper-Funktion für Gewinnlinien-Überprüfung
function checkWin(line) {
const [first, second, third] = line;
// Fall 1: Alle drei Symbole sind identisch (normale Gewinnlinie)
if (first === second && second === third) {
return true;
}
// Fall 2: Zwei gleiche Symbole + ein Wild (in beliebiger Reihenfolge)
if (
(first === second && third === wildMultiplierSymbol) || // Wild am Ende
(first === third && second === wildMultiplierSymbol) || // Wild in der Mitte
(second === third && first === wildMultiplierSymbol) // Wild am Anfang
) {
return true;
}
// Fall 3: Ein Symbol + zwei Wilds (gültige Gewinnkombination)
if (
(first === wildMultiplierSymbol && second === wildMultiplierSymbol) || // Zwei Wilds am Anfang
(first === wildMultiplierSymbol && third === wildMultiplierSymbol) || // Zwei Wilds außen
(second === wildMultiplierSymbol && third === wildMultiplierSymbol) // Zwei Wilds am Ende
) {
return true;
}
// Ansonsten keine gültige Gewinnlinie
return false;
}
// Helper-Funktion für reine Gewinnlinien (drei gleiche Symbole)
function isPureWin(line) {
const [first, second, third] = line;
return first === second && second === third;
}
// Gewinnlinien (Indizes) definieren
const winLines = [
[0, 1, 2], // Obere Zeile
[3, 4, 5], // Mittlere Zeile
[6, 7, 8], // Untere Zeile
[0, 4, 8], // Diagonale von links oben nach rechts unten
[2, 4, 6] // Diagonale von rechts oben nach links unten
];
let lineMultiplierApplied = false; // Flag, um festzustellen, ob ein Multiplikator in einer Gewinnlinie angewendet wird
// Gewinne prüfen und farblich markieren
winLines.forEach(line => {
const symbols = [results[line[0]], results[line[1]], results[line[2]]];
// Gewinn, wenn die Linie eine gültige Gewinnkombination enthält
if (checkWin(symbols)) {
winPoints += betAmount * (line.includes(4) ? 15 : 10); // Diagonale Linien haben höhere Auszahlung
line.forEach(index => reels[index].style.backgroundColor = "yellow"); // Linie markieren
// Prüfen, ob in dieser Linie ein Multiplikator-Wild enthalten ist
if (symbols.includes(wildMultiplierSymbol)) {
lineMultiplierApplied = true; // Setze Flag, wenn Multiplikator in einer Gewinnlinie ist
}
}
});
// Scatter/Freispiele prüfen
const scatterCount = results.filter(symbol => symbol === "⭐").length;
if (scatterCount >= 3) {
freeSpins += 10;
playerPoints += ( betAmount * 5 * scatterCount );
document.getElementById('message').textContent = `You won ${playerPoints} points + 10 free spins!`;
document.getElementById('free-spin-message').textContent = `You have ${freeSpins} free spins!`;
hideGameControls("choose-your-bet", "none"); // GameControls verbergen
// Markiere nur die Reels rot, die das Symbol `⭐` haben
for (let i = 0; i < reels.length; i++) {
if (results[i] === "⭐") {
reels[i].style.backgroundColor = "red"; // Sterne bei Freispielen rot markieren
}
}
}
// Multiplikator nur anwenden, wenn das Symbol in einer Gewinnlinie enthalten ist
if (lineMultiplierApplied) {
const randomMultiplier = multipliers[Math.floor(Math.random() * multipliers.length)];
winPoints *= randomMultiplier; // Gewinne mit Multiplikator multiplizieren
document.getElementById('message').textContent = `You won ${winPoints} points with a x${randomMultiplier} multiplier!`;
} else {
document.getElementById('message').textContent = winPoints > 0 ? `You won ${winPoints} points!` : "No win, try again.";
}
// Spielerpunkte aktualisieren
playerPoints += winPoints;
document.getElementById('player-points').textContent = playerPoints;
// Freispiele beendet - Nachricht ausblenden
if (freeSpins === 0) {
document.getElementById('free-spin-message').textContent = "";
hideGameControls("choose-your-bet", "inline"); // GameControls wieder anzeigen
hideGameControls("choose-your-bet-info", "block");
betAmountSelect.disabled = false; // Einsatzwahl nach Freispielen wieder aktivieren
}
});
});
function hideGameControls(className, status) {
document.querySelectorAll(`.${className}`).forEach(element => {
element.style.display = status;
});
}