<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Çarkım Feleğim - Memeli Abdi Sunar!</title>
    <style>
        :root {
            --primary: #2c003e;
            --secondary: #d1007a;
            --gold: #ffd700;
            --text-light: #ffffff;
            --bg-dark: #1a0026;
        }
        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background: radial-gradient(circle, var(--primary), var(--bg-dark));
            color: var(--text-light);
            text-align: center;
            margin: 0;
            padding: 0;
            min-height: 100vh;
            overflow-x: hidden;
        }
        
        .screen { display: none; padding: 20px; }
        .screen.active { display: block; animation: fadeIn 0.5s ease-in; }

        @keyframes fadeIn {
            from { opacity: 0; transform: scale(0.95); }
            to { opacity: 1; transform: scale(1); }
        }

        #menu-screen h1 {
            font-size: 5em;
            color: var(--gold);
            text-shadow: 0 0 20px rgba(255, 215, 0, 0.5);
            margin-top: 10vh;
        }
        .start-btn {
            font-size: 2em;
            padding: 15px 40px;
            background: linear-gradient(45deg, var(--gold), #ff8c00);
            color: var(--bg-dark);
            border: none;
            border-radius: 30px;
            cursor: pointer;
            font-weight: bold;
            box-shadow: 0 10px 20px rgba(0,0,0,0.5);
            transition: transform 0.2s;
        }
        .start-btn:hover { transform: scale(1.1); }

        #game-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 10px 30px;
            background: rgba(0,0,0,0.3);
            border-bottom: 2px solid var(--gold);
        }
        
        #category-display {
            font-size: 1.5em;
            background-color: var(--secondary);
            padding: 5px 20px;
            border-radius: 10px;
            box-shadow: 0 4px 6px rgba(0,0,0,0.3);
        }

        #players-container {
            display: flex;
            justify-content: center;
            gap: 15px;
            margin: 10px 0;
        }
        .player-card {
            background-color: rgba(255,255,255,0.1);
            border: 2px solid #555;
            border-radius: 10px;
            padding: 10px 20px;
            width: 120px;
            transition: all 0.3s;
        }
        .player-card.active-player {
            border-color: var(--gold);
            background-color: rgba(255, 215, 0, 0.2);
            transform: translateY(-5px);
            box-shadow: 0 10px 15px rgba(255, 215, 0, 0.3);
        }
        .player-name { font-weight: bold; font-size: 1.2em; margin-bottom: 5px; }
        .player-score { font-size: 1.5em; color: var(--gold); }

        #board {
            display: flex;
            justify-content: center;
            flex-wrap: wrap;
            gap: 10px;
            margin: 15px 0;
            background: #004d40;
            padding: 15px;
            border-radius: 10px;
            border: 5px solid var(--gold);
            display: inline-flex;
            box-shadow: inset 0 0 20px rgba(0,0,0,0.8);
        }
        .word { display: flex; gap: 5px; margin: 0 10px; }
        .letter-box {
            width: 45px; height: 60px;
            background-color: white; color: black;
            font-size: 2.2em; font-weight: bold;
            display: flex; align-items: center; justify-content: center;
            border: 2px solid #ccc;
            border-radius: 3px;
        }
        .hidden-letter { color: transparent; background: radial-gradient(circle, #fff, #ddd); }

        #main-action-area {
            display: flex;
            justify-content: center;
            align-items: center;
            gap: 50px;
            margin-bottom: 20px;
            padding: 0 20px;
        }

        #wheel-container {
            position: relative;
            width: 350px; height: 350px;
            border-radius: 50%; background: #222;
            box-shadow: 0 0 25px rgba(255, 215, 0, 0.6);
            border: 10px solid var(--gold); flex-shrink: 0;
        }
        
        #wheel-pointer {
            position: absolute; top: -25px; left: 50%; transform: translateX(-50%);
            width: 0; height: 0;
            border-left: 20px solid transparent; border-right: 20px solid transparent;
            border-top: 40px solid red; z-index: 10;
            filter: drop-shadow(0 4px 4px rgba(0,0,0,0.5));
        }

        #wheelCanvas {
            width: 100%; height: 100%; border-radius: 50%;
            transition: transform 4s cubic-bezier(0.1, 0.7, 0.1, 1);
        }

        #wheel-center {
            position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
            width: 40px; height: 40px; background: radial-gradient(circle, #fff, #888);
            border-radius: 50%; z-index: 5; box-shadow: 0 0 10px rgba(0,0,0,0.8);
        }

        #side-panel { display: flex; flex-direction: column; gap: 15px; max-width: 450px; }
        #host-panel { display: flex; align-items: center; gap: 20px; }
        #host-avatar {
            font-size: 4em; background: linear-gradient(135deg, #d1007a, #ff4500);
            border-radius: 50%; width: 90px; height: 90px; display: flex; align-items: center;
            justify-content: center; border: 4px solid var(--gold); box-shadow: 0 0 15px var(--gold);
            flex-shrink: 0; animation: bounce 2s infinite;
        }

        @keyframes bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }

        #message-box {
            position: relative; background: #ffffff; color: #1a0026; border-radius: 15px;
            padding: 15px 20px; font-size: 1.2em; font-weight: bold; min-height: 60px;
            text-align: left; border: 4px solid var(--gold); box-shadow: 0 5px 15px rgba(0,0,0,0.5); flex-grow: 1;
        }
        #message-box b { color: #d1007a; }
        #message-box::before { content: ''; position: absolute; left: -20px; top: 25px; border-width: 10px 20px 10px 0; border-style: solid; border-color: transparent var(--gold) transparent transparent; }
        #message-box::after { content: ''; position: absolute; left: -14px; top: 27px; border-width: 8px 16px 8px 0; border-style: solid; border-color: transparent #ffffff transparent transparent; }

        #controls button {
            font-size: 1.2em; padding: 12px 25px; margin: 5px;
            background: linear-gradient(to bottom, #ffd700, #daa520); color: var(--primary);
            border: none; border-radius: 5px; font-weight: bold; cursor: pointer; box-shadow: 0 4px 6px rgba(0,0,0,0.3);
        }
        #controls button:disabled { background: #555; color: #888; cursor: not-allowed; box-shadow: none; }
        #controls button:hover:not(:disabled) { background: #fff; transform: scale(1.05); }

        #keyboard { max-width: 800px; margin: 0 auto; display: flex; flex-wrap: wrap; justify-content: center; }
        .key {
            width: 40px; height: 40px; margin: 3px; font-size: 1.2em; cursor: pointer; border-radius: 5px; border: none;
            background: #eee; color: #333; font-weight: bold; box-shadow: 0 2px 4px rgba(0,0,0,0.3);
        }
        .key.vowel { background-color: #00ced1; color: white; }
        .key:disabled { background-color: #333; color: #111; cursor: not-allowed; box-shadow: none; }
        .key:hover:not(:disabled) { background: #fff; transform: scale(1.1); }
        
        #my-turn-overlay {
            display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%;
            background: rgba(0,0,0,0.4); pointer-events: auto; z-index: 100;
        }
    </style>
</head>
<body>

    <div id="menu-screen" class="screen active">
        <h1>ÇARKIM FELEĞİM</h1>
        <p style="font-size: 1.5em; margin-bottom: 40px;">Ekranların En Çılgın Sunucusu Memeli Abdi Sizi Bekliyor!</p>
        <button class="start-btn" onclick="startGame()">Stüdyoya Dalış Yap!</button>
    </div>

    <div id="game-screen" class="screen">
        <div id="game-header">
            <h2>ÇARKIM FELEĞİM</h2>
            <div id="category-display">Yükleniyor...</div>
        </div>

        <div id="players-container"></div>
        <div id="board"></div>

        <div id="main-action-area">
            <div id="wheel-container">
                <div id="wheel-pointer"></div>
                <div id="wheel-center"></div>
                <canvas id="wheelCanvas" width="350" height="350"></canvas>
            </div>
            
            <div id="side-panel">
                <div id="host-panel">
                    <div id="host-avatar">🤵*♂️</div>
                    <div id="message-box">Hazırlanıyoruz...</div>
                </div>
                
                <div id="controls">
                    <button id="btn-spin" onclick="humanSpin()">🎡 Çarkı Yapıştır</button>
                    <button id="btn-guess-word" onclick="humanGuessWord()">Ben Bildim!</button>
                </div>
            </div>
        </div>

        <div id="keyboard"></div>
        <div id="my-turn-overlay"></div>
    </div>

    <script>
        // --- OYUN VERİLERİ (ÇOKLU TUR İÇİN GENİŞLETİLDİ) ---
        const allPuzzles = [
            { cat: "YERLİ FİLM", ans: "HABABAM SINIFI SINIFTA KALDI" },
            { cat: "ATASÖZÜ", ans: "SAKLA SAMANI GELİR ZAMANI" },
            { cat: "ŞARKI", ans: "GÜL PEMBE" },
            { cat: "BİTKİ", ans: "AFRİKA MENEKŞESİ" },
            { cat: "ŞEHİR", ans: "AFYONKARAHİSAR" },
            { cat: "DİZİ KARAKTERİ", ans: "MEMATİ BAŞ" },
            { cat: "YEMEK", ans: "ZEYTİNYAĞLI YAPRAK SARMASI" }
        ];
        
        let availablePuzzles = [];
        let currentRound = 1;
        let currentPuzzle = null;

        const wheelValues = [100, 150, 200, 250, 300, 400, 500, 750, 1000, 'PAS', 'İFLAS', 'PAS'];
        const sliceColors = ['#1abc9c', '#3498db', '#9b59b6', '#f1c40f', '#e67e22', '#e74c3c', '#2ecc71', '#16a085', '#2980b9', '#f39c12', '#000000', '#d35400'];
        const vowels = ['A', 'E', 'I', 'İ', 'O', 'Ö', 'U', 'Ü'];
        const alphabet = ['A','B','C','Ç','D','E','F','G','Ğ','H','I','İ','J','K','L','M','N','O','Ö','P','R','S','Ş','T','U','Ü','V','Y','Z'];
        
        let players = [];
        let currentPlayerIndex = 0;
        let guessedLetters = [];
        let currentSpinValue = null;
        let humanNeedsToPickConsonant = false;
        let currentRotation = 0;

        const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
        
        function speakHost(text) {
            document.getElementById('message-box').innerHTML = text;
        }

        // --- ÇARKI ÇİZME FONKSİYONU ---
        function drawWheel() {
            const canvas = document.getElementById('wheelCanvas');
            const ctx = canvas.getContext('2d');
            const centerX = canvas.width / 2;
            const centerY = canvas.height / 2;
            const radius = centerX;
            const sliceAngle = (2 * Math.PI) / wheelValues.length;

            ctx.clearRect(0, 0, canvas.width, canvas.height);

            for (let i = 0; i < wheelValues.length; i++) {
                const startAngle = -Math.PI / 2 + (i * sliceAngle);
                const endAngle = startAngle + sliceAngle;

                ctx.beginPath();
                ctx.moveTo(centerX, centerY);
                ctx.arc(centerX, centerY, radius, startAngle, endAngle);
                ctx.closePath();
                ctx.fillStyle = sliceColors[i];
                ctx.fill();
                ctx.lineWidth = 2;
                ctx.strokeStyle = '#ffffff';
                ctx.stroke();

                ctx.save();
                ctx.translate(centerX, centerY);
                ctx.rotate(startAngle + sliceAngle / 2);
                ctx.textAlign = "right";
                ctx.textBaseline = "middle";
                ctx.fillStyle = '#ffffff';
                ctx.font = "bold 22px 'Segoe UI'";
                
                if(wheelValues[i] === 'İFLAS' || wheelValues[i] === 'PAS') {
                    ctx.font = "bold 24px 'Segoe UI'";
                    if(wheelValues[i] === 'İFLAS') ctx.fillStyle = '#ff4444';
                }
                ctx.fillText(wheelValues[i], radius - 20, 0);
                ctx.restore();
            }
        }

        // --- OYUN BAŞLATMA ---
        function startGame() {
            document.getElementById('menu-screen').classList.remove('active');
            document.getElementById('game-screen').classList.add('active');

            drawWheel();

            // Tüm kelimeleri havuza at
            availablePuzzles = [...allPuzzles];
            currentRound = 1;

            players = [
                { name: "Sen", score: 0, isBot: false },
                { name: "Bot Ali", score: 0, isBot: true },
                { name: "Bot Ayşe", score: 0, isBot: true },
                { name: "Bot Can", score: 0, isBot: true }
            ];
            
            currentPlayerIndex = 0;
            speakHost("Ooooy oyy oyy! Ekranların en çılgın sunucusu Memeli Abdi ile Çarkım Feleğim baş-lı-yoooor! Alkışlaaar! 👏👏👏");
            
            setTimeout(() => {
                startNewRound();
            }, 3500);
        }

        function startNewRound() {
            if (availablePuzzles.length === 0) {
                endFullGame();
                return;
            }

            document.getElementById('my-turn-overlay').style.display = 'none';

            // Rastgele kelime seç ve havuzdan çıkar
            const randomIndex = Math.floor(Math.random() * availablePuzzles.length);
            currentPuzzle = availablePuzzles.splice(randomIndex, 1)[0];

            document.getElementById('category-display').innerHTML = `<b>${currentRound}. TUR</b> | Kategori: ${currentPuzzle.cat}`;

            guessedLetters = [];
            currentSpinValue = null;
            humanNeedsToPickConsonant = false;

            renderPlayers();
            renderBoard();
            renderKeyboard();

            speakHost(`Hazırsanız <b>${currentRound}. Turumuz</b> başlıyor! Sorumuz geldi... Hadi durmayın, yapıştırın!`);
            setTimeout(processTurn, 3000);
        }

        function renderPlayers() {
            const container = document.getElementById('players-container');
            container.innerHTML = '';
            players.forEach((p, index) => {
                const card = document.createElement('div');
                card.className = `player-card ${index === currentPlayerIndex ? 'active-player' : ''}`;
                card.innerHTML = `<div class="player-name">${p.name}</div><div class="player-score">${p.score}</div>`;
                container.appendChild(card);
            });
        }

        function renderBoard() {
            const board = document.getElementById('board');
            board.innerHTML = '';
            const words = currentPuzzle.ans.split(' ');

            words.forEach(word => {
                const wordDiv = document.createElement('div');
                wordDiv.className = 'word';
                for (let char of word) {
                    const box = document.createElement('div');
                    box.className = 'letter-box';
                    if (guessedLetters.includes(char)) {
                        box.textContent = char;
                    } else {
                        box.textContent = char;
                        box.classList.add('hidden-letter');
                    }
                    wordDiv.appendChild(box);
                }
                board.appendChild(wordDiv);
            });
        }

        function renderKeyboard() {
            const kb = document.getElementById('keyboard');
            kb.innerHTML = '';
            const cp = players[currentPlayerIndex];

            alphabet.forEach(letter => {
                const btn = document.createElement('button');
                btn.className = `key ${vowels.includes(letter) ? 'vowel' : ''}`;
                btn.textContent = letter;
                
                if (guessedLetters.includes(letter)) {
                    btn.disabled = true;
                } else if (!cp.isBot && !vowels.includes(letter) && !humanNeedsToPickConsonant) {
                    btn.disabled = true;
                }

                btn.onclick = () => handleLetterGuess(letter);
                kb.appendChild(btn);
            });
        }

        function updateUIState() {
            renderPlayers();
            renderBoard();
            renderKeyboard();
            
            const cp = players[currentPlayerIndex];
            const overlay = document.getElementById('my-turn-overlay');
            const btnSpin = document.getElementById('btn-spin');
            const btnGuessWord = document.getElementById('btn-guess-word');

            if (cp.isBot) {
                overlay.style.display = 'block';
                btnSpin.disabled = true;
                btnGuessWord.disabled = true;
            } else {
                overlay.style.display = 'none';
                if(humanNeedsToPickConsonant) {
                    btnSpin.disabled = true;
                    btnGuessWord.disabled = true;
                } else {
                    btnSpin.disabled = false;
                    btnGuessWord.disabled = false;
                }
            }
        }

        function spinRealWheel() {
            return new Promise(resolve => {
                const canvas = document.getElementById('wheelCanvas');
                const extraSpins = 360 * 4;
                const randomAngle = Math.floor(Math.random() * 360);
                const totalRotation = currentRotation + extraSpins + randomAngle;
                
                canvas.style.transform = `rotate(${totalRotation}deg)`;
                currentRotation = totalRotation;

                setTimeout(() => {
                    const normalizedRotation = totalRotation % 360;
                    const sliceAngle = 360 / wheelValues.length;
                    const winningIndex = (wheelValues.length - Math.floor(normalizedRotation / sliceAngle)) % wheelValues.length;
                    resolve(wheelValues[winningIndex]);
                }, 4000);
            });
        }

        // --- TUR MANTIĞI ---
        async function processTurn() {
            if (isGameWon()) return;

            updateUIState();
            const cp = players[currentPlayerIndex];

            if (cp.isBot) {
                speakHost(`Sayın seyirciler, sıra <b>${cp.name}</b> kardeşimizde! Gönder gelsin!`);
                await sleep(2000);
                await botPlayTurn(cp);
            } else {
                speakHost("Sıra sende canım kardeşim! Hadi yapıştır şu çarka da ortalık şenlensin!");
            }
        }

        function nextPlayer() {
            currentPlayerIndex = (currentPlayerIndex + 1) % players.length;
            humanNeedsToPickConsonant = false;
            currentSpinValue = null;
            processTurn();
        }

        // --- İNSAN OYUNCU ---
        async function humanSpin() {
            document.getElementById('btn-spin').disabled = true;
            document.getElementById('btn-guess-word').disabled = true;
            
            speakHost("Hoppalaaa! Çarkı çevirdin, dönüyor dönüyor dönüyor...");
            
            const result = await spinRealWheel();
            currentSpinValue = result;

            if (result === 'İFLAS') {
                speakHost("Aboooovvv! <b>İFLAS</b> geldi! Memeli Abdi bile üzüldü buna. Bütün paralar pırrr!");
                players[currentPlayerIndex].score = 0;
                updateUIState();
                await sleep(3500);
                nextPlayer();
            } else if (result === 'PAS') {
                speakHost("Tüh be! <b>PAS</b> geldi! Ne yapalım, sağlık olsun. Sıra yandakine zıpladı!");
                await sleep(3000);
                nextPlayer();
            } else {
                speakHost(`Aha! Çark tam <b>${result}</b> Puan'da zımbaladı! Gönder klavyeden bir ünsüz harf!`);
                humanNeedsToPickConsonant = true;
                updateUIState();
            }
        }

        function handleLetterGuess(letter) {
            const cp = players[currentPlayerIndex];
            const isVowel = vowels.includes(letter);

            if (isVowel) {
                if (cp.score < 250) {
                    speakHost("Hop dedik! Ünlü harf bedava değil, <b>250 puanın</b> yok ki canım benim!");
                    return;
                }
                cp.score -= 250;
                speakHost(`Bastın 250 puanı, <b>'${letter}'</b> harfini aldın. Bakalım çıkacak mı?`);
            } else {
                humanNeedsToPickConsonant = false;
            }

            processLetter(letter, cp, isVowel);
        }

        function humanGuessWord() {
            const guess = prompt("Tahminini yaz bakalım:");
            if (guess) {
                if (guess.toLocaleUpperCase('tr-TR').trim() === currentPuzzle.ans) {
                    handleRoundWon(players[currentPlayerIndex].name);
                } else {
                    speakHost("Aman be! Yanlış tahmin ettin yahu, gitti güzelim sıra!");
                    setTimeout(nextPlayer, 2500);
                }
            }
        }

        // --- BOT ---
        async function botPlayTurn(botPlayer) {
            speakHost(`Bizim <b>${botPlayer.name}</b> asıldı çarka! Vur tellere!`);
            const result = await spinRealWheel();
            currentSpinValue = result;

            if (result === 'İFLAS') {
                speakHost(`Eyvah eyvah! <b>${botPlayer.name} İFLAS</b> bayrağını çekti! Sıfırı tüketti yavrucak.`);
                botPlayer.score = 0;
                updateUIState();
                await sleep(3000);
                nextPlayer();
                return;
            } else if (result === 'PAS') {
                speakHost(`Olmadı be <b>${botPlayer.name}</b>, <b>PAS</b> geldi sana da. Sıra kaydı!`);
                await sleep(3000);
                nextPlayer();
                return;
            }

            speakHost(`<b>${botPlayer.name}</b>, <b>${result}</b> puan için derin derin harf düşünüyor...`);
            await sleep(2000);

            const availableConsonants = alphabet.filter(l => !vowels.includes(l) && !guessedLetters.includes(l));
            if (availableConsonants.length === 0) {
                speakHost(`Kaldı mı ünsüz? <b>${botPlayer.name}</b> söyleyecek harf bulamadı valla, pas geçiyoruz!`);
                await sleep(2500);
                nextPlayer();
                return;
            }

            const chosenLetter = availableConsonants[Math.floor(Math.random() * availableConsonants.length)];
            speakHost(`İşte geldi! <b>${botPlayer.name}</b>, <b>'${chosenLetter}'</b> harfini patlattı!`);
            await sleep(1500);

            processLetter(chosenLetter, botPlayer, false);
        }

        function processLetter(letter, player, isVowel) {
            guessedLetters.push(letter);
            let count = 0;
            for(let char of currentPuzzle.ans) { if(char === letter) count++; }

            if (count > 0) {
                if (!isVowel && currentSpinValue > 0) {
                    const earned = count * currentSpinValue;
                    player.score += earned;
                    speakHost(`Amanın amanın! Tam ${count} tane <b>'${letter}'</b> çıktı! <b>${player.name}</b> tam <b>${earned} puanı</b> cukkaladı!`);
                } else {
                    speakHost(`Güzel, güzel! Tabloda <b>'${letter}'</b> harfi var. Akıyorsun maşallah!`);
                }
                
                updateUIState();
                
                if(!isGameWon()) {
                    setTimeout(() => {
                        speakHost(`Doğru bildiği için <b>${player.name}</b> şova devam ediyor!`);
                        setTimeout(processTurn, 2000);
                    }, 3000);
                }
            } else {
                speakHost(`Tüh tüh tüh! Tabloda <b>'${letter}'</b> harfi ne gezer! Kısmet yandaki yarışmacıya...`);
                updateUIState();
                setTimeout(nextPlayer, 3500);
            }
        }

        // --- TUR/OYUN BİTİŞ KONTROLLERİ ---
        function isGameWon() {
            const answerChars = currentPuzzle.ans.replace(/ /g, '').split('');
            const won = answerChars.every(char => guessedLetters.includes(char));
            if (won) {
                handleRoundWon(players[currentPlayerIndex].name);
                return true;
            }
            return false;
        }

        function handleRoundWon(winnerName) {
            guessedLetters = alphabet.slice();
            renderBoard();
            document.getElementById('my-turn-overlay').style.display = 'block';
            
            speakHost(`🎉 VEEE BİTTİ! Helal olsun sana! <b>${currentRound}. Turu ${winnerName}</b> aldı götürdü! Puanları cebe indirdi! 🎉`);
            
            setTimeout(() => {
                currentRound++;
                speakHost("Ayrılmayın, kısa bir reklam arasından sonra <b>sıradaki tur</b> ile dönüyoruz!");
                
                setTimeout(() => {
                    startNewRound();
                }, 4000);
            }, 4000);
        }

        function endFullGame() {
            // En yüksek puanlı oyuncuyu bul
            let winner = players.reduce((prev, current) => (prev.score > current.score) ? prev : current);
            
            document.getElementById('my-turn-overlay').style.display = 'block';
            speakHost(`🏆 OYUN BİTTİ CANLAR! 🏆<br><br>Sorular bitti, terler aktı! Günün şampiyonu <b>${winner.score} Puanla ${winner.name}</b> oldu! Memeli Abdi kaçar, kalın sağlıcakla!`);
        }
    </script>
</body>
</html>









Selamlar memeli abdinin sunumuyla çarkım feleğim yapay zeka ile yapılmıştır kodlar iletilmiştir geliştirmesi size kalmış iyi forumlar