Code - niklasgrosse.de
                
                    document.addEventListener('DOMContentLoaded', (event) => {
                        let actionPools = {
                        0: [1, 2, 3],
                        1: [1, 2, 3],
                        2: [1, 2, 3],
                        3: [1, 2, 3],
                        4: [1, 2, 3],
                        5: [1, 2, 3],
                        6: [1, 2, 3],
                        7: [1, 2, 3],
                        8: [1, 2],
                        9: [1]
                        };
                
            
        // Funktion zur Synchronisation der Aktionspools mit der Tabelle
                        function updateActionPools() {
                            const rows = document.querySelectorAll('tbody tr');
                            rows.forEach((row, index) => {
                                const pool = actionPools[index];
                                if (pool) {
                                    row.children[1].textContent = pool.join(', ');
                                }
                            });
                        }
                
                        const matchstickElements = document.querySelectorAll('#matchsticks img');
                        const currentPlayerElement = document.getElementById('current-player');
                        const endTurnButton = document.getElementById('end-turn');
                        const startGameButton = document.getElementById('start-game');
                        const trainButton = document.getElementById('train-ki');
                        const resetButton = document.getElementById('reset');
                        const rundenInput = document.getElementById('training-rounds');
                        const actionPoolsTableBody = document.querySelector('tbody');
                
                        function highlightMatchsticks(elements) {
                            elements.forEach(element => {
                                element.classList.add('highlighted');
                                element.classList.add('selected');
                            });
                        }
                
                        function unhighlightMatchsticks(elements) {
                            elements.forEach(element => {
                                element.classList.remove('highlighted');
                                element.classList.remove('selected');
                            });
                        }
                
                        function updateMatchsticksDisplay() {
                            matchstickElements.forEach((element, index) => {
                                element.style.visibility = index < matchsticks ? 'visible' : 'hidden';
                                element.classList.remove('highlighted');
                                element.style.transform = element.classList.contains('selected') ? 'scale(0.8)' : 'scale(1)';
                            });
                        }
                
                        function kiMove() {
                            if (matchsticks > 0) {
                                let move = actionPools[10 - matchsticks][Math.floor(Math.random() * actionPools[10 - matchsticks].length)];
                                let selectedElements = Array.from(matchstickElements).slice(matchsticks - move, matchsticks);
                                highlightMatchsticks(selectedElements);
                                setTimeout(() => {
                                    selectedElements.forEach(element => element.classList.remove('selected'));
                                    matchsticks -= move;
                                    console.log(`KI entfernt ${move} Streichhölzer. Verbleibend: ${matchsticks}`);
                                    updateMatchsticksDisplay();
                                    checkGameOver();
                                    currentPlayer = 'Human';
                                    currentPlayerElement.textContent = 'Human';
                                }, 1500); // Warte 1,5 Sekunden, bevor die Streichhölzer entfernt werden
                            }
                        }
                
                        function checkGameOver() {
                            if (matchsticks <= 0) {
                                alert(`${currentPlayer} hat verloren!`);
                                startGameButton.disabled = false;
                                endTurnButton.disabled = true;
                            }
                        }
                
                        matchstickElements.forEach((element, index) => {
                            element.addEventListener('click', () => {
                                if (currentPlayer === 'Human' && matchsticks > 0 && index >= matchsticks - 3 && index < matchsticks) {
                                    element.classList.toggle('selected');
                                    updateMatchsticksDisplay();
                                }
                            });
                        });
                
                        endTurnButton.addEventListener('click', () => {
                            if (currentPlayer === 'Human' && matchsticks > 0) {
                                const selectedElements = document.querySelectorAll('.selected');
                                const move = selectedElements.length;
                                if (move > 0 && move <= 3) {
                                    selectedElements.forEach(element => element.classList.remove('selected'));
                                    matchsticks -= move;
                                    console.log(`Spieler B entfernt ${move} Streichhölzer. Verbleibend: ${matchsticks}`);
                                    updateMatchsticksDisplay();
                                    checkGameOver();
                                    currentPlayer = 'KI';
                                    currentPlayerElement.textContent = 'KI';
                                    if (matchsticks > 0) {
                                        kiMove();
                                    }
                                } else {
                                    selectedElements.forEach(element => element.classList.remove('selected')); // Zurücksetzen der Auswahl
                                    alert('Bitte wählen Sie 1 bis 3 Streichhölzer aus.');
                                }
                            }
                        });
                
                        startGameButton.addEventListener('click', () => {
                            matchsticks = 10;
                            currentPlayer = 'KI';
                            currentPlayerElement.textContent = 'KI';
                            updateMatchsticksDisplay();
                            startGameButton.disabled = true;
                            endTurnButton.disabled = false;
                            console.log('Spiel gestartet');
                            kiMove();
                        });
                
                        trainButton.addEventListener('click', () => {
                            let rundenanzahl = parseInt(rundenInput.value);
                            if (rundenanzahl > 0) {
                                trainingsdurchlauf(rundenanzahl);
                            } else {
                                alert('Bitte eine gültige Anzahl an Runden eingeben');
                            }
                        });
                
                        resetButton.addEventListener('click', () => {
                            actionPools = {
                                0: [1, 2, 3],
                                1: [1, 2, 3],
                                2: [1, 2, 3],
                                3: [1, 2, 3],
                                4: [1, 2, 3],
                                5: [1, 2, 3],
                                6: [1, 2, 3],
                                7: [1, 2, 3],
                                8: [1, 2],
                                9: [1]
                            };
                            updateMatchsticksDisplay();
                            updateActionPools();
                            console.log("Die Aktionspools wurden zurückgesetzt");
                            alert("Die KI wurde zurückgesetzt");
                        });
                
                        function trainingsdurchlauf(rundenanzahl) {
                            console.log(`Trainiere KI mit ${rundenanzahl} Runden`);
                            for (let i = rundenanzahl; i > 0; i--) {
                                trainingsrunde();
                            }
                            // Trainingslogik wird hier implementiert
                        }
                
                        function trainingsrunde() {
                            let matchsticks = 10; // Initialisierung der Streichhölzer auf 10
                            let history = []; // Initialisierung des Verlaufs
                
                            console.log("Start der Trainingsrunde");
                
                            while (matchsticks > 0) {
                                // KI-Zug
                                let kiMove = actionPools[10 - matchsticks][Math.floor(Math.random() * actionPools[10 - matchsticks].length)];
                                console.log(`KI-Zug: Verbleibende Streichhölzer = ${matchsticks}, gewählter Zug = ${kiMove}`);
                                history.push({ matchsticks, move: kiMove }); // history = [{ matchsticks: 10, move: 2 }]
                                matchsticks -= kiMove; // matchsticks = 10 - 2 = 8
                
                                if (matchsticks === 0) {
                                    // KI verliert
                                    console.log("KI hat verloren");
                                    for (let i = history.length - 1; i >= 0; i--) {
                                        let h = history[i];
                                        if (actionPools[10 - h.matchsticks].length > 1) {
                                            console.log(`Entferne Zug ${h.move} aus Aktionspool für ${10 - h.matchsticks} Streichhölzer`);
                                            actionPools[10 - h.matchsticks] = actionPools[10 - h.matchsticks].filter(x => x !== h.move);
                                            break;
                                        }
                                    }
                                    break;
                                }
                
                                // Zufälliger Zug von Spieler B
                                let playerBMove = Math.min(matchsticks, Math.floor(Math.random() * 3) + 1);
                                console.log(`Spieler B-Zug: Verbleibende Streichhölzer = ${matchsticks}, gewählter Zug = ${playerBMove}`);
                                matchsticks -= playerBMove;
                
                                if (matchsticks === 0) {
                                    // Spieler B verliert
                                    console.log("Der Mensch hat verloren");
                                    break;
                                }
                            }
                
                            updateActionPools();
                            console.log("Aktionspools nach der Runde:", actionPools);
                        }
                
                    });