{"id":6195,"date":"2025-05-22T18:00:48","date_gmt":"2025-05-22T16:00:48","guid":{"rendered":"https:\/\/fahrtauglich.ch\/?page_id=6195"},"modified":"2025-05-22T18:17:16","modified_gmt":"2025-05-22T16:17:16","slug":"arukone","status":"publish","type":"page","link":"https:\/\/fahrtauglich.ch\/fr\/praxisportal\/arukone\/","title":{"rendered":"Arukone &#8211; Number Link"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6195\" class=\"elementor elementor-6195\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1a66490 e-flex e-con-boxed e-con e-parent\" data-id=\"1a66490\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-676f119 elementor-widget elementor-widget-heading\" data-id=\"676f119\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Arukone - Number Link<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-09e14e4 elementor-widget elementor-widget-html\" data-id=\"09e14e4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"de\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Arukone<\/title>\n    <style>\n        \/* Game Container *\/\n        #arukone-game {\n            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n            background: linear-gradient(135deg, #808080 0%, #808080 100%);\n            padding: 30px;\n            border-radius: 20px;\n            box-shadow: 0 8px 32px rgba(2, 0, 0, 0.3);\n            text-align: center;\n            width: 100%;\n            max-width: 800px;\n            min-height: 600px;\n            display: flex;\n            flex-direction: column;\n            justify-content: space-between;\n            margin: 20px auto;\n            box-sizing: border-box;\n            position: relative;\n            overflow: hidden;\n        }\n\n        \/* Animated background elements *\/\n        #arukone-game::before {\n            content: '';\n            position: absolute;\n            top: -50%;\n            left: -50%;\n            width: 200%;\n            height: 200%;\n            background: radial-gradient(circle, rgba(255,255,255,0.1) 1px, transparent 1px);\n            background-size: 50px 50px;\n            animation: moveBackground 20s linear infinite;\n            z-index: 0;\n        }\n\n        @keyframes moveBackground {\n            0% { transform: translate(0, 0) rotate(0deg); }\n            100% { transform: translate(-50px, -50px) rotate(360deg); }\n        }\n\n        \/* Content wrapper to stay above background *\/\n        .ar-content {\n            position: relative;\n            z-index: 1;\n        }\n\n        \/* Info Area *\/\n        #ar-game-info {\n            font-size: 1.3em;\n            color: #fff;\n            margin-bottom: 20px;\n            min-height: 50px;\n            text-shadow: 0 2px 4px rgba(0,0,0,0.3);\n            font-weight: 500;\n        }\n\n        \/* Game Board Container *\/\n        #ar-board-container {\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            min-height: 400px;\n            margin: 20px 0;\n            padding: 20px;\n            background: rgba(255, 255, 255, 0.1);\n            border-radius: 15px;\n            backdrop-filter: blur(10px);\n            border: 1px solid rgba(255, 255, 255, 0.2);\n        }\n\n        \/* Game Board *\/\n        #ar-game-board {\n            display: grid;\n            gap: 3px;\n            background: linear-gradient(145deg, #2a2a2a, #1a1a1a);\n            padding: 15px;\n            border-radius: 12px;\n            visibility: hidden;\n            box-shadow: inset 0 4px 8px rgba(0,0,0,0.3);\n        }\n\n        \/* Grid Cell *\/\n        .ar-cell {\n            width: 35px;\n            height: 35px;\n            background: linear-gradient(145deg, #f8f9fa, #e9ecef);\n            border: 2px solid transparent;\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            font-weight: bold;\n            font-size: 1.1em;\n            cursor: pointer;\n            transition: all 0.3s ease;\n            position: relative;\n            border-radius: 6px;\n            box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n        }\n\n        .ar-cell:hover {\n            transform: translateY(-2px);\n            box-shadow: 0 4px 8px rgba(0,0,0,0.2);\n            background: linear-gradient(145deg, #fff, #f1f3f4);\n        }\n\n        \/* Terminal cells (start\/end points) *\/\n        .ar-cell.terminal {\n            background: linear-gradient(145deg, #ffffff, #f8f9fa);\n            border: 3px solid #007bff;\n            font-size: 1.3em;\n            font-weight: bold;\n            cursor: pointer;\n            color: #007bff;\n            text-shadow: 0 1px 2px rgba(0,0,0,0.1);\n        }\n\n        .ar-cell.terminal:hover {\n            border-color: #0056b3;\n            transform: scale(1.1);\n            box-shadow: 0 0 15px rgba(0, 123, 255, 0.5);\n        }\n\n        .ar-cell.terminal.selected {\n            background: linear-gradient(145deg, #ffeb3b, #ffc107);\n            border-color: #f57c00;\n            color: #e65100;\n            animation: pulse 1.5s ease-in-out infinite;\n        }\n\n        @keyframes pulse {\n            0%, 100% { transform: scale(1); }\n            50% { transform: scale(1.05); }\n        }\n\n        \/* Path cells *\/\n        .ar-cell.path {\n            background: linear-gradient(145deg, #4caf50, #388e3c);\n            border-color: #2e7d32;\n            color: white;\n        }\n\n        .ar-cell.active-path {\n            background: linear-gradient(145deg, #ffeb3b, #ffc107);\n            border-color: #f57c00;\n            animation: pathGlow 1s ease-in-out infinite;\n        }\n\n        @keyframes pathGlow {\n            0%, 100% { box-shadow: 0 0 5px rgba(255, 193, 7, 0.5); }\n            50% { box-shadow: 0 0 20px rgba(255, 193, 7, 0.8); }\n        }\n\n        \/* Line drawing indicators *\/\n        .ar-cell.horizontal-line::after {\n            content: '';\n            position: absolute;\n            width: 80%;\n            height: 6px;\n            background: linear-gradient(90deg, #333, #666, #333);\n            border-radius: 3px;\n            box-shadow: 0 1px 3px rgba(0,0,0,0.3);\n        }\n\n        .ar-cell.vertical-line::after {\n            content: '';\n            position: absolute;\n            width: 6px;\n            height: 80%;\n            background: linear-gradient(180deg, #333, #666, #333);\n            border-radius: 3px;\n            box-shadow: 0 1px 3px rgba(0,0,0,0.3);\n        }\n\n        .ar-cell.corner-line::after {\n            content: '';\n            position: absolute;\n            width: 10px;\n            height: 10px;\n            background: radial-gradient(circle, #333, #666);\n            border-radius: 50%;\n            box-shadow: 0 2px 4px rgba(0,0,0,0.3);\n        }\n\n        \/* Controls *\/\n        #ar-controls {\n            display: flex;\n            justify-content: center;\n            gap: 20px;\n            margin: 25px 0;\n            flex-wrap: wrap;\n        }\n\n        \/* Score and Level Display *\/\n        #ar-game-stats {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-top: 20px;\n            font-size: 1.2em;\n            font-weight: bold;\n            color: #fff;\n            text-shadow: 0 2px 4px rgba(0,0,0,0.3);\n        }\n\n        \/* Button styles *\/\n        .ar-game-button {\n            background: linear-gradient(145deg, #FFBE00, #e6a700);\n            color: #000;\n            font-weight: bold;\n            padding: 15px 30px;\n            border: none;\n            border-radius: 10px;\n            font-size: 1.2em;\n            cursor: pointer;\n            transition: all 0.3s ease;\n            box-shadow: 0 4px 15px rgba(255, 190, 0, 0.3);\n            text-transform: uppercase;\n            letter-spacing: 1px;\n        }\n\n        .ar-game-button:hover {\n            background: linear-gradient(145deg, #e6a700, #cc9500);\n            transform: translateY(-2px);\n            box-shadow: 0 6px 20px rgba(255, 190, 0, 0.4);\n        }\n\n        .ar-game-button:active {\n            transform: translateY(0);\n        }\n\n        .ar-game-button:disabled {\n            background: linear-gradient(145deg, #ccc, #999);\n            cursor: not-allowed;\n            transform: none;\n            box-shadow: none;\n        }\n\n        \/* Secondary button *\/\n        .ar-secondary-button {\n            background: linear-gradient(145deg, #6c757d, #495057);\n            color: #fff;\n            box-shadow: 0 4px 15px rgba(108, 117, 125, 0.3);\n        }\n\n        .ar-secondary-button:hover {\n            background: linear-gradient(145deg, #5a6268, #343a40);\n            box-shadow: 0 6px 20px rgba(108, 117, 125, 0.4);\n        }\n\n        \/* Success message *\/\n        .ar-success {\n            color: #4CAF50;\n            font-weight: bold;\n            text-shadow: 0 2px 4px rgba(0,0,0,0.3);\n            animation: successBounce 0.6s ease-out;\n        }\n\n        @keyframes successBounce {\n            0% { transform: scale(0.8); }\n            50% { transform: scale(1.1); }\n            100% { transform: scale(1); }\n        }\n\n        \/* Error message *\/\n        .ar-error {\n            color: #f44336;\n            font-weight: bold;\n            text-shadow: 0 2px 4px rgba(0,0,0,0.3);\n            animation: shake 0.5s ease-in-out;\n        }\n\n        @keyframes shake {\n            0%, 100% { transform: translateX(0); }\n            25% { transform: translateX(-5px); }\n            75% { transform: translateX(5px); }\n        }\n\n        \/* Level progress indicator *\/\n        #ar-progress-bar {\n            width: 100%;\n            height: 8px;\n            background: rgba(255, 255, 255, 0.2);\n            border-radius: 4px;\n            margin: 15px 0;\n            overflow: hidden;\n        }\n\n        #ar-progress-fill {\n            height: 100%;\n            background: linear-gradient(90deg, #4CAF50, #8BC34A);\n            border-radius: 4px;\n            transition: width 0.5s ease;\n            width: 0%;\n        }\n\n        \/* Responsive *\/\n        @media (max-width: 768px) {\n            #arukone-game {\n                padding: 20px;\n                max-width: 95%;\n            }\n            \n            .ar-cell {\n                width: 28px;\n                height: 28px;\n                font-size: 0.9em;\n            }\n            \n            .ar-game-button {\n                padding: 12px 24px;\n                font-size: 1em;\n            }\n            \n            #ar-controls {\n                gap: 15px;\n            }\n            \n            #ar-game-stats {\n                flex-direction: column;\n                gap: 10px;\n                text-align: center;\n            }\n\n            #ar-game-info {\n                font-size: 1.1em;\n            }\n        }\n\n        @media (max-width: 480px) {\n            .ar-cell {\n                width: 25px;\n                height: 25px;\n                font-size: 0.8em;\n            }\n            \n            #ar-game-board {\n                padding: 10px;\n            }\n        }\n\n    <\/style>\n<\/head>\n<body>\n\n    <div id=\"arukone-game\">\n        <div class=\"ar-content\">\n            <div id=\"ar-game-info\">Verbinden Sie gleiche Zahlen durch Linien, ohne dass sich die Linien kreuzen! Klicken Sie auf Start!<\/div>\n\n            <div id=\"ar-progress-bar\">\n                <div id=\"ar-progress-fill\"><\/div>\n            <\/div>\n\n            <div id=\"ar-board-container\">\n                <div id=\"ar-game-board\">\n                    <!-- Grid will be generated here -->\n                <\/div>\n            <\/div>\n\n            <div id=\"ar-controls\">\n                <button id=\"ar-start-button\" class=\"ar-game-button\">Spiel starten<\/button>\n                <button id=\"ar-clear-button\" class=\"ar-game-button ar-secondary-button\" style=\"display: none;\">Zur\u00fccksetzen<\/button>\n                <button id=\"ar-hint-button\" class=\"ar-game-button ar-secondary-button\" style=\"display: none;\">Hinweis<\/button>\n            <\/div>\n\n            <div id=\"ar-game-stats\">\n                <div id=\"ar-level-display\">Level: 1<\/div>\n                <div id=\"ar-pairs-display\">Paare: 0\/0<\/div>\n                <div id=\"ar-time-display\">Zeit: 0:00<\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n        document.addEventListener('DOMContentLoaded', () => {\n            \/\/ --- Configuration ---\n            const GRID_SIZES = [\n                { size: 6, pairs: 3, level: 1 },\n                { size: 7, pairs: 4, level: 2 },\n                { size: 8, pairs: 5, level: 3 },\n                { size: 8, pairs: 6, level: 4 },\n                { size: 9, pairs: 7, level: 5 },\n                { size: 9, pairs: 8, level: 6 },\n                { size: 10, pairs: 9, level: 7 },\n                { size: 10, pairs: 10, level: 8 },\n                { size: 10, pairs: 12, level: 9 },\n                { size: 10, pairs: 15, level: 10 }\n            ];\n\n            \/\/ --- Game State ---\n            let currentLevel = 0;\n            let gridSize = 6;\n            let gameBoard = [];\n            let terminals = [];\n            let currentPath = [];\n            let selectedTerminal = null;\n            let isPlaying = false;\n            let completedPairs = new Set();\n            let startTime = null;\n            let gameTimer = null;\n\n            \/\/ --- DOM Elements ---\n            const gameInfo = document.getElementById('ar-game-info');\n            const boardContainer = document.getElementById('ar-board-container');\n            const gameBoard_el = document.getElementById('ar-game-board');\n            const startButton = document.getElementById('ar-start-button');\n            const clearButton = document.getElementById('ar-clear-button');\n            const hintButton = document.getElementById('ar-hint-button');\n            const levelDisplay = document.getElementById('ar-level-display');\n            const pairsDisplay = document.getElementById('ar-pairs-display');\n            const timeDisplay = document.getElementById('ar-time-display');\n            const progressFill = document.getElementById('ar-progress-fill');\n\n            \/\/ --- Helper Functions ---\n            function getRandomInt(min, max) {\n                return Math.floor(Math.random() * (max - min)) + min;\n            }\n\n            function shuffleArray(array) {\n                for (let i = array.length - 1; i > 0; i--) {\n                    const j = Math.floor(Math.random() * (i + 1));\n                    [array[i], array[j]] = [array[j], array[i]];\n                }\n            }\n\n            function getCellId(row, col) {\n                return `cell-${row}-${col}`;\n            }\n\n            function parseCellId(id) {\n                const parts = id.split('-');\n                return { row: parseInt(parts[1]), col: parseInt(parts[2]) };\n            }\n\n            function formatTime(seconds) {\n                const mins = Math.floor(seconds \/ 60);\n                const secs = seconds % 60;\n                return `${mins}:${secs.toString().padStart(2, '0')}`;\n            }\n\n            \/\/ --- Game Logic Functions ---\n            function initializeGame() {\n                const config = GRID_SIZES[currentLevel];\n                gridSize = config.size;\n                gameBoard = Array(gridSize).fill().map(() => Array(gridSize).fill(null));\n                terminals = [];\n                currentPath = [];\n                selectedTerminal = null;\n                completedPairs.clear();\n                startTime = Date.now();\n\n                generateTerminals(config.pairs);\n                createGameBoard();\n                updateUI();\n                startTimer();\n            }\n\n            function generateTerminals(numPairs) {\n                const availablePositions = [];\n                \n                \/\/ Generate all possible positions\n                for (let row = 0; row < gridSize; row++) {\n                    for (let col = 0; col < gridSize; col++) {\n                        availablePositions.push({ row, col });\n                    }\n                }\n                \n                shuffleArray(availablePositions);\n\n                \/\/ Place terminal pairs with numbers 1, 2, 3, etc.\n                for (let i = 0; i < numPairs; i++) {\n                    const number = i + 1; \/\/ Numbers starting from 1\n                    const pos1 = availablePositions.pop();\n                    const pos2 = availablePositions.pop();\n                    \n                    terminals.push({\n                        number: number,\n                        positions: [pos1, pos2],\n                        connected: false\n                    });\n\n                    gameBoard[pos1.row][pos1.col] = { type: 'terminal', number: number, pairIndex: i };\n                    gameBoard[pos2.row][pos2.col] = { type: 'terminal', number: number, pairIndex: i };\n                }\n            }\n\n            function createGameBoard() {\n                gameBoard_el.innerHTML = '';\n                gameBoard_el.style.gridTemplateColumns = `repeat(${gridSize}, 1fr)`;\n                gameBoard_el.style.gridTemplateRows = `repeat(${gridSize}, 1fr)`;\n\n                for (let row = 0; row < gridSize; row++) {\n                    for (let col = 0; col < gridSize; col++) {\n                        const cell = document.createElement('div');\n                        cell.className = 'ar-cell';\n                        cell.id = getCellId(row, col);\n                        cell.addEventListener('click', handleCellClick);\n\n                        const cellData = gameBoard[row][col];\n                        if (cellData && cellData.type === 'terminal') {\n                            cell.classList.add('terminal');\n                            cell.textContent = cellData.number;\n                            cell.dataset.pairIndex = cellData.pairIndex;\n                        }\n\n                        gameBoard_el.appendChild(cell);\n                    }\n                }\n\n                gameBoard_el.style.visibility = 'visible';\n            }\n\n            function handleCellClick(event) {\n                if (!isPlaying) return;\n\n                const cellId = event.target.id;\n                const { row, col } = parseCellId(cellId);\n                const cell = event.target;\n                const cellData = gameBoard[row][col];\n\n                if (cellData && cellData.type === 'terminal') {\n                    handleTerminalClick(cell, cellData, row, col);\n                } else if (selectedTerminal) {\n                    handlePathCell(cell, row, col);\n                }\n            }\n\n            function handleTerminalClick(cell, cellData, row, col) {\n                \/\/ If this terminal is already connected, don't allow selection\n                if (terminals[cellData.pairIndex].connected) {\n                    return;\n                }\n\n                if (selectedTerminal === null) {\n                    \/\/ Select this terminal as starting point\n                    selectedTerminal = { pairIndex: cellData.pairIndex, row, col };\n                    cell.classList.add('selected');\n                    currentPath = [{ row, col }];\n                    gameInfo.textContent = `Verbinden Sie ${cellData.number} mit der anderen ${cellData.number}`;\n                } else if (selectedTerminal.pairIndex === cellData.pairIndex) {\n                    \/\/ Clicked on the matching terminal - complete the connection\n                    if (isValidPath(selectedTerminal.row, selectedTerminal.col, row, col)) {\n                        completeConnection(cellData.pairIndex);\n                    } else {\n                        gameInfo.innerHTML = `<span class=\"ar-error\">Ung\u00fcltiger Pfad! Die Linie kreuzt andere Linien.<\/span>`;\n                        setTimeout(() => clearCurrentPath(), 1500);\n                    }\n                } else {\n                    \/\/ Clicked on a different terminal - reset selection\n                    clearCurrentPath();\n                    selectedTerminal = { pairIndex: cellData.pairIndex, row, col };\n                    cell.classList.add('selected');\n                    currentPath = [{ row, col }];\n                    gameInfo.textContent = `Verbinden Sie ${cellData.number} mit der anderen ${cellData.number}`;\n                }\n            }\n\n            function handlePathCell(cell, row, col) {\n                \/\/ Check if cell is already occupied by another path\n                if (gameBoard[row][col] && gameBoard[row][col].type === 'path') {\n                    gameInfo.innerHTML = `<span class=\"ar-error\">Diese Zelle ist bereits belegt!<\/span>`;\n                    return;\n                }\n\n                \/\/ Add this cell to the current path\n                if (!currentPath.some(p => p.row === row && p.col === col)) {\n                    currentPath.push({ row, col });\n                    cell.classList.add('active-path');\n                    updatePathVisuals();\n                }\n            }\n\n            function isValidPath(startRow, startCol, endRow, endCol) {\n                \/\/ Check if path doesn't cross existing paths\n                for (let i = 1; i < currentPath.length - 1; i++) {\n                    const { row, col } = currentPath[i];\n                    const cellData = gameBoard[row][col];\n                    if (cellData && cellData.type === 'path') {\n                        return false;\n                    }\n                }\n                return currentPath.length > 1;\n            }\n\n            function completeConnection(pairIndex) {\n                terminals[pairIndex].connected = true;\n                completedPairs.add(pairIndex);\n\n                \/\/ Mark all path cells as permanent\n                currentPath.forEach(({ row, col }) => {\n                    const cell = document.getElementById(getCellId(row, col));\n                    cell.classList.remove('active-path', 'selected');\n                    if (gameBoard[row][col] === null) {\n                        cell.classList.add('path');\n                        gameBoard[row][col] = { type: 'path', pairIndex };\n                    }\n                });\n\n                clearCurrentPath();\n                checkWinCondition();\n            }\n\n            function clearCurrentPath() {\n                \/\/ Clear visual indicators\n                currentPath.forEach(({ row, col }) => {\n                    const cell = document.getElementById(getCellId(row, col));\n                    cell.classList.remove('active-path', 'selected', 'horizontal-line', 'vertical-line', 'corner-line');\n                });\n\n                currentPath = [];\n                selectedTerminal = null;\n                gameInfo.textContent = \"W\u00e4hlen Sie eine Zahl zum Verbinden aus.\";\n            }\n\n            function updatePathVisuals() {\n                \/\/ Add visual line indicators (simplified)\n                currentPath.forEach(({ row, col }, index) => {\n                    const cell = document.getElementById(getCellId(row, col));\n                    \n                    \/\/ Remove existing line classes\n                    cell.classList.remove('horizontal-line', 'vertical-line', 'corner-line');\n                    \n                    if (index > 0 && index < currentPath.length - 1) {\n                        const prev = currentPath[index - 1];\n                        const next = currentPath[index + 1];\n                        \n                        if (prev.row === next.row) {\n                            cell.classList.add('horizontal-line');\n                        } else if (prev.col === next.col) {\n                            cell.classList.add('vertical-line');\n                        } else {\n                            cell.classList.add('corner-line');\n                        }\n                    }\n                });\n            }\n\n            function checkWinCondition() {\n                updateUI();\n                \n                if (completedPairs.size === terminals.length) {\n                    \/\/ Level completed!\n                    stopTimer();\n                    const timeBonus = Math.max(0, 300 - Math.floor((Date.now() - startTime) \/ 1000));\n                    gameInfo.innerHTML = `<span class=\"ar-success\">Level ${currentLevel + 1} geschafft! Zeit-Bonus: ${timeBonus}s<\/span>`;\n                    \n                    setTimeout(() => {\n                        if (currentLevel < GRID_SIZES.length - 1) {\n                            currentLevel++;\n                            gameInfo.textContent = \"Bereit f\u00fcr das n\u00e4chste Level?\";\n                            startButton.textContent = \"N\u00e4chstes Level\";\n                            startButton.style.display = 'inline-block';\n                        } else {\n                            gameInfo.innerHTML = `<span class=\"ar-success\">Herzlichen Gl\u00fcckwunsch! Alle Level geschafft!<\/span>`;\n                            startButton.textContent = \"Neues Spiel\";\n                            startButton.style.display = 'inline-block';\n                        }\n                    }, 3000);\n                } else {\n                    gameInfo.textContent = `${completedPairs.size}\/${terminals.length} Paare verbunden. Weiter so!`;\n                }\n            }\n\n            function clearBoard() {\n                \/\/ Reset all connections\n                terminals.forEach(terminal => terminal.connected = false);\n                completedPairs.clear();\n                \n                \/\/ Clear all path markings\n                for (let row = 0; row < gridSize; row++) {\n                    for (let col = 0; col < gridSize; col++) {\n                        const cell = document.getElementById(getCellId(row, col));\n                        if (gameBoard[row][col] && gameBoard[row][col].type === 'path') {\n                            gameBoard[row][col] = null;\n                            cell.classList.remove('path');\n                        }\n                        cell.classList.remove('active-path', 'selected', 'horizontal-line', 'vertical-line', 'corner-line');\n                    }\n                }\n\n                clearCurrentPath();\n                gameInfo.textContent = \"Brett zur\u00fcckgesetzt. W\u00e4hlen Sie eine Zahl zum Verbinden aus.\";\n                updateUI();\n            }\n\n            function showHint() {\n                \/\/ Simple hint: highlight an unconnected terminal pair\n                const unconnectedPair = terminals.find(t => !t.connected);\n                if (unconnectedPair) {\n                    unconnectedPair.positions.forEach(pos => {\n                        const cell = document.getElementById(getCellId(pos.row, pos.col));\n                        cell.style.animation = 'pulse 1s ease-in-out 3';\n                    });\n                    gameInfo.textContent = `Hinweis: Verbinden Sie die ${unconnectedPair.number}er!`;\n                    \n                    setTimeout(() => {\n                        unconnectedPair.positions.forEach(pos => {\n                            const cell = document.getElementById(getCellId(pos.row, pos.col));\n                            cell.style.animation = '';\n                        });\n                    }, 3000);\n                }\n            }\n\n            function startTimer() {\n                gameTimer = setInterval(() => {\n                    const elapsed = Math.floor((Date.now() - startTime) \/ 1000);\n                    timeDisplay.textContent = `Zeit: ${formatTime(elapsed)}`;\n                }, 1000);\n            }\n\n            function stopTimer() {\n                if (gameTimer) {\n                    clearInterval(gameTimer);\n                    gameTimer = null;\n                }\n            }\n\n            function updateUI() {\n                levelDisplay.textContent = `Level: ${currentLevel + 1}`;\n                pairsDisplay.textContent = `Paare: ${completedPairs.size}\/${terminals.length}`;\n                \n                \/\/ Update progress bar\n                const progress = terminals.length > 0 ? (completedPairs.size \/ terminals.length) * 100 : 0;\n                progressFill.style.width = `${progress}%`;\n            }\n\n            function startGame() {\n                isPlaying = true;\n                startButton.style.display = 'none';\n                clearButton.style.display = 'inline-block';\n                hintButton.style.display = 'inline-block';\n                \n                initializeGame();\n                gameInfo.textContent = \"W\u00e4hlen Sie eine Zahl zum Verbinden aus.\";\n            }\n\n            function resetGame() {\n                currentLevel = 0;\n                isPlaying = false;\n                stopTimer();\n                clearButton.style.display = 'none';\n                hintButton.style.display = 'none';\n                gameBoard_el.style.visibility = 'hidden';\n                startButton.textContent = \"Spiel starten\";\n                startButton.style.display = 'inline-block';\n                gameInfo.textContent = \"Verbinden Sie gleiche Zahlen durch Linien, ohne dass sich die Linien kreuzen! Klicken Sie auf Start!\";\n                progressFill.style.width = '0%';\n                levelDisplay.textContent = 'Level: 1';\n                pairsDisplay.textContent = 'Paare: 0\/0';\n                timeDisplay.textContent = 'Zeit: 0:00';\n            }\n\n            \/\/ --- Event Listeners ---\n            startButton.addEventListener('click', () => {\n                if (startButton.textContent === \"Neues Spiel\") {\n                    resetGame();\n                } else {\n                    startGame();\n                }\n            });\n\n            clearButton.addEventListener('click', clearBoard);\n            hintButton.addEventListener('click', showHint);\n\n        }); \/\/ End DOMContentLoaded\n    <\/script>\n\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c4cfdc0 e-flex e-con-boxed e-con e-parent\" data-id=\"c4cfdc0\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8945d16 elementor-widget elementor-widget-heading\" data-id=\"8945d16\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Wie funktioniert das Spiel Arukone<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ba0389e elementor-widget-mobile__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"ba0389e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p class=\"whitespace-pre-wrap break-words\">Arukone, auch als <em data-start=\"60\" data-end=\"72\">Number Link<\/em> oder <em data-start=\"78\" data-end=\"94\">Br\u00fccken-Puzzle<\/em> bekannt, ist ein Logikspiel, bei dem Sie identische Zahlenpaare auf einem rechteckigen Gitter mit durchgehenden Linien verbinden. Ziel ist es, alle Felder l\u00fcckenlos zu f\u00fcllen, ohne dass sich Linien kreuzen oder \u00fcberlappen.<\/p><p class=\"whitespace-pre-wrap break-words\">Jede Verbindung darf nur waagerecht oder senkrecht verlaufen und muss exakt beide gleichen Zahlen ber\u00fchren. Klingt simpel, fordert aber strategisches Vorausplanen: Blockierte Pfade machen ein scheinbar l\u00f6sbares R\u00e4tsel unknackbar. Durch unterschiedliche Gittergr\u00f6ssen und Schwierigkeitsgrade eignet sich Arukone perfekt f\u00fcr schnelle Denkpausen ebenso wie f\u00fcr ausgiebige Gehirn-Workouts.<\/p><p class=\"whitespace-pre-wrap break-words\">Probieren Sie das kostenlose Spiel hier online, trainieren Sie Ihr r\u00e4umliches Vorstellungsverm\u00f6gen und entdecken Sie immer neue Herausforderungen!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Arukone &#8211; Number Link Arukone Verbinden Sie gleiche Zahlen durch Linien, ohne dass sich die Linien kreuzen! Klicken Sie auf Start! Spiel starten Zur\u00fccksetzen Hinweis Level: 1 Paare: 0\/0 Zeit: 0:00 Wie funktioniert das Spiel Arukone Arukone, auch als Number Link oder Br\u00fccken-Puzzle bekannt, ist ein Logikspiel, bei dem Sie identische Zahlenpaare auf einem rechteckigen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1467,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"content-type":"","iawp_total_views":1402,"footnotes":""},"class_list":["post-6195","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Arukone - Number Link<\/title>\n<meta name=\"description\" content=\"Trainiere mit dem beliebten Arukone (Number Link bzw. Nanbarinku) Spiel dein Ged\u00e4chtnis. Jetzt gratis das japanisches Logikr\u00e4tsel spielen!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fahrtauglich.ch\/fr\/praxisportal\/arukone\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Arukone - Number Link\" \/>\n<meta property=\"og:description\" content=\"Trainiere mit dem beliebten Arukone (Number Link bzw. Nanbarinku) Spiel dein Ged\u00e4chtnis. Jetzt gratis das japanisches Logikr\u00e4tsel spielen!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fahrtauglich.ch\/fr\/praxisportal\/arukone\/\" \/>\n<meta property=\"og:site_name\" content=\"Fahrtauglich\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-22T16:17:16+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/praxisportal\\\/arukone\\\/\",\"url\":\"https:\\\/\\\/fahrtauglich.ch\\\/praxisportal\\\/arukone\\\/\",\"name\":\"Arukone - Number Link\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/#website\"},\"datePublished\":\"2025-05-22T16:00:48+00:00\",\"dateModified\":\"2025-05-22T16:17:16+00:00\",\"description\":\"Trainiere mit dem beliebten Arukone (Number Link bzw. Nanbarinku) Spiel dein Ged\u00e4chtnis. Jetzt gratis das japanisches Logikr\u00e4tsel spielen!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/praxisportal\\\/arukone\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/fahrtauglich.ch\\\/praxisportal\\\/arukone\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/praxisportal\\\/arukone\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/fahrtauglich.ch\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Praxisportal\",\"item\":\"https:\\\/\\\/fahrtauglich.ch\\\/praxisportal\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Arukone &#8211; Number Link\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/#website\",\"url\":\"https:\\\/\\\/fahrtauglich.ch\\\/\",\"name\":\"Fahrtauglich\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/fahrtauglich.ch\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/#organization\",\"name\":\"Fahrtauglich\",\"url\":\"https:\\\/\\\/fahrtauglich.ch\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/fahrtauglich.ch\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/cropped-Logo-2.jpg\",\"contentUrl\":\"https:\\\/\\\/fahrtauglich.ch\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/cropped-Logo-2.jpg\",\"width\":307,\"height\":188,\"caption\":\"Fahrtauglich\"},\"image\":{\"@id\":\"https:\\\/\\\/fahrtauglich.ch\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Arukone - Number Link","description":"Trainiere mit dem beliebten Arukone (Number Link bzw. Nanbarinku) Spiel dein Ged\u00e4chtnis. Jetzt gratis das japanisches Logikr\u00e4tsel spielen!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fahrtauglich.ch\/fr\/praxisportal\/arukone\/","og_locale":"fr_FR","og_type":"article","og_title":"Arukone - Number Link","og_description":"Trainiere mit dem beliebten Arukone (Number Link bzw. Nanbarinku) Spiel dein Ged\u00e4chtnis. Jetzt gratis das japanisches Logikr\u00e4tsel spielen!","og_url":"https:\/\/fahrtauglich.ch\/fr\/praxisportal\/arukone\/","og_site_name":"Fahrtauglich","article_modified_time":"2025-05-22T16:17:16+00:00","twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/fahrtauglich.ch\/praxisportal\/arukone\/","url":"https:\/\/fahrtauglich.ch\/praxisportal\/arukone\/","name":"Arukone - Number Link","isPartOf":{"@id":"https:\/\/fahrtauglich.ch\/#website"},"datePublished":"2025-05-22T16:00:48+00:00","dateModified":"2025-05-22T16:17:16+00:00","description":"Trainiere mit dem beliebten Arukone (Number Link bzw. Nanbarinku) Spiel dein Ged\u00e4chtnis. Jetzt gratis das japanisches Logikr\u00e4tsel spielen!","breadcrumb":{"@id":"https:\/\/fahrtauglich.ch\/praxisportal\/arukone\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fahrtauglich.ch\/praxisportal\/arukone\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fahrtauglich.ch\/praxisportal\/arukone\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/fahrtauglich.ch\/"},{"@type":"ListItem","position":2,"name":"Praxisportal","item":"https:\/\/fahrtauglich.ch\/praxisportal\/"},{"@type":"ListItem","position":3,"name":"Arukone &#8211; Number Link"}]},{"@type":"WebSite","@id":"https:\/\/fahrtauglich.ch\/#website","url":"https:\/\/fahrtauglich.ch\/","name":"Fahrtauglich","description":"","publisher":{"@id":"https:\/\/fahrtauglich.ch\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fahrtauglich.ch\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/fahrtauglich.ch\/#organization","name":"Fahrtauglich","url":"https:\/\/fahrtauglich.ch\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/fahrtauglich.ch\/#\/schema\/logo\/image\/","url":"https:\/\/fahrtauglich.ch\/wp-content\/uploads\/2024\/08\/cropped-Logo-2.jpg","contentUrl":"https:\/\/fahrtauglich.ch\/wp-content\/uploads\/2024\/08\/cropped-Logo-2.jpg","width":307,"height":188,"caption":"Fahrtauglich"},"image":{"@id":"https:\/\/fahrtauglich.ch\/#\/schema\/logo\/image\/"}}]}},"jetpack_sharing_enabled":true,"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"fahrtauglich.ch","author_link":"https:\/\/fahrtauglich.ch\/fr\/blog\/author\/mintcream-quetzal-259960-hostingersite-com\/"},"rttpg_comment":0,"rttpg_category":null,"rttpg_excerpt":"Arukone &#8211; Number Link Arukone Verbinden Sie gleiche Zahlen durch Linien, ohne dass sich die Linien kreuzen! Klicken Sie auf Start! Spiel starten Zur\u00fccksetzen Hinweis Level: 1 Paare: 0\/0 Zeit: 0:00 Wie funktioniert das Spiel Arukone Arukone, auch als Number Link oder Br\u00fccken-Puzzle bekannt, ist ein Logikspiel, bei dem Sie identische Zahlenpaare auf einem rechteckigen\u2026","_links":{"self":[{"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/pages\/6195","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/comments?post=6195"}],"version-history":[{"count":14,"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/pages\/6195\/revisions"}],"predecessor-version":[{"id":6211,"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/pages\/6195\/revisions\/6211"}],"up":[{"embeddable":true,"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/pages\/1467"}],"wp:attachment":[{"href":"https:\/\/fahrtauglich.ch\/fr\/wp-json\/wp\/v2\/media?parent=6195"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}