<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>10 Parmak Klavye Şampiyonu - Kategorili</title>
    <style>
        :root {
            --primary-color: #4CAF50;
            --bg-color: #2c3e50;
            --text-color: #ecf0f1;
            --card-bg: #34495e;
            --border-color: #7f8c8d;
        }

        body {
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            background-color: var(--bg-color);
            color: var(--text-color);
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
            overflow: hidden;
        }

        .game-container {
            background-color: var(--card-bg);
            padding: 40px;
            border-radius: 15px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.5);
            text-align: center;
            width: 90%;
            max-width: 600px;
        }

        h1 {
            margin-top: 0;
            color: var(--primary-color);
            font-size: 2.5em;
            text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
        }

        .stats-board {
            display: flex;
            justify-content: space-between;
            background-color: rgba(0,0,0,0.2);
            padding: 15px 20px;
            border-radius: 10px;
            margin-bottom: 25px;
            font-size: 1.2em;
            font-weight: bold;
        }

        .word-display {
            font-size: 2.5em;
            letter-spacing: 2px;
            margin: 20px 0;
            min-height: 70px;
            color: #fff;
            user-select: none;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .dropdown-container {
            margin-bottom: 20px;
        }

        select {
            width: 100%;
            padding: 15px;
            font-size: 1.2em;
            border: 2px solid var(--border-color);
            border-radius: 8px;
            background-color: #ecf0f1;
            color: #2c3e50;
            outline: none;
            cursor: pointer;
            transition: border-color 0.3s;
        }

        select:focus {
            border-color: var(--primary-color);
        }

        .input-area {
            width: 100%;
            padding: 15px;
            font-size: 1.5em;
            border: 3px solid transparent;
            border-radius: 10px;
            background-color: #ecf0f1;
            color: #2c3e50;
            text-align: center;
            outline: none;
            transition: all 0.3s;
            box-sizing: border-box;
        }

        .input-area:focus {
            border-color: var(--primary-color);
            box-shadow: 0 0 15px rgba(76, 175, 80, 0.5);
        }

        .input-area.error {
            border-color: #e74c3c;
            background-color: #fadbd8;
        }

        .btn {
            background-color: var(--primary-color);
            color: white;
            border: none;
            padding: 15px 30px;
            font-size: 1.2em;
            border-radius: 8px;
            cursor: pointer;
            margin-top: 25px;
            transition: background-color 0.3s, transform 0.1s;
            font-weight: bold;
            width: 100%;
        }

        .btn:hover {
            background-color: #45a049;
        }

        .btn:active {
            transform: scale(0.95);
        }

        .hidden {
            display: none !important;
        }

        #game-over {
            background-color: rgba(0,0,0,0.8);
            position: fixed;
            top: 0; left: 0; width: 100%; height: 100%;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            z-index: 10;
        }

        #game-over h2 {
            font-size: 3em;
            color: var(--primary-color);
            margin-bottom: 10px;
        }

        .result-stats {
            font-size: 1.5em;
            margin: 10px 0;
        }
    </style>
</head>
<body>

    <div class="game-container">
        <h1>Klavye Şampiyonu</h1>
        
        <div class="stats-board">
            <div>Süre: <span id="time">60</span>s</div>
            <div>Puan: <span id="score">0</span></div>
        </div>

        <div class="dropdown-container" id="menu-container">
            <select id="category-select">
                <option value="mixed">Karışık Kelimeler</option>
                <option value="cities">Şehir ve İlçe İsimleri</option>
                <option value="medical">Tıp Terimleri</option>
                <option value="history">Tarih Terimleri</option>
                <option value="countries">Ülke İsimleri</option>
                <option value="names">İnsan İsimleri</option>
                <option value="animals">Hayvan İsimleri</option>
            </select>
        </div>

        <div class="word-display hidden" id="word"></div>
        
        <input type="text" id="input-field" class="input-area hidden" placeholder="Kelimeleri buraya yaz..." autocomplete="off">
        
        <button id="start-btn" class="btn">Oyuna Başla</button>
    </div>

    <div id="game-over" class="hidden">
        <h2>Süre Doldu!</h2>
        <div class="result-stats">Toplam Puan: <strong id="final-score">0</strong></div>
        <div class="result-stats">Yazma Hızı: <strong id="final-wpm">0</strong> WPM</div>
        <div style="font-size: 0.9em; margin-top:10px; color:#bdc3c7;">(WPM: Dakikadaki Kelime Sayısı)</div>
        <button id="restart-btn" class="btn" style="width: auto; margin-top: 30px;">Ana Menüye Dön</button>
    </div>

    <script>
        // Güncellenmiş Kelime Havuzları
        const wordPools = {
            mixed: [
                "bilgisayar", "kitap", "güneş", "pencere", "çalışmak", "başarı",
                "zaman", "teknoloji", "gökyüzü", "arkadaş", "kahve", "mutluluk",
                "deniz", "orman", "yıldız", "telefon", "klavye", "sandalye", "okul"
            ],
            cities: [
                "istanbul", "ankara", "izmir", "bursa", "antalya", "kadıköy",
                "çankaya", "konak", "nilüfer", "alanya", "trabzon", "bodrum",
                "marmaris", "gaziantep", "eskişehir", "adana", "mersin", "kayseri"
            ],
            medical: [
                "kardiyoloji", "nöroloji", "ortopedi", "enfeksiyon", "sendrom",
                "metabolizma", "anatomi", "fizyoloji", "semptom", "teşhis",
                "tedavi", "antibiyotik", "hipertansiyon", "diyabet", "ameliyat"
            ],
            history: [
                "imparatorluk", "cumhuriyet", "antlaşma", "sadrazam", "padişah",
                "devrim", "inkılap", "medeniyet", "rönesans", "reform", "savaş",
                "barış", "fetih", "hanedan", "mütareke", "kuşatma", "kurultay"
            ],
            countries: [
                "türkiye", "almanya", "fransa", "italya", "ispanya", "ingiltere",
                "japonya", "kanada", "brezilya", "arjantin", "meksika", "mısır",
                "hindistan", "avustralya", "portekiz", "hollanda", "norveç"
            ],
            names: [
                "ahmet", "mehmet", "ayşe", "fatma", "mustafa", "zeynep", "elif",
                "ali", "veli", "kemal", "hasan", "hüseyin", "burak", "can", "cem",
                "deniz", "derya", "gökhan", "hakan", "murat", "özge", "selin"
            ],
            animals: [
                "kedi", "köpek", "aslan", "kaplan", "fil", "zürafa", "maymun",
                "tavşan", "kartal", "şahin", "penguen", "kanguru", "timsah",
                "yılan", "ayı", "kurt", "tilki", "geyik", "yunus", "balina"
            ]
        };

        // DOM Elementleri
        const menuContainer = document.getElementById('menu-container');
        const categorySelect = document.getElementById('category-select');
        const wordDisplay = document.getElementById('word');
        const inputField = document.getElementById('input-field');
        const timeDisplay = document.getElementById('time');
        const scoreDisplay = document.getElementById('score');
        const startBtn = document.getElementById('start-btn');
        const gameOverScreen = document.getElementById('game-over');
        const finalScoreDisplay = document.getElementById('final-score');
        const finalWpmDisplay = document.getElementById('final-wpm');
        const restartBtn = document.getElementById('restart-btn');

        // Oyun Değişkenleri
        let time = 60;
        let score = 0;
        let totalTypedChars = 0;
        let isPlaying = false;
        let timeInterval;
        let currentWord = "";
        let activeWords = [];

        // Kelime Getirici
        function getRandomWord() {
            const randomIndex = Math.floor(Math.random() * activeWords.length);
            return activeWords[randomIndex];
        }

        // Oyunu Başlat
        function initGame() {
            const selectedCategory = categorySelect.value;
            activeWords = wordPools[selectedCategory];

            time = 60;
            score = 0;
            totalTypedChars = 0;
            isPlaying = true;

            timeDisplay.innerText = time;
            scoreDisplay.innerText = score;
            
            menuContainer.classList.add('hidden');
            startBtn.classList.add('hidden');
            gameOverScreen.classList.add('hidden');
            
            wordDisplay.classList.remove('hidden');
            inputField.classList.remove('hidden');
            
            inputField.disabled = false;
            inputField.value = '';
            inputField.focus();

            nextWord();
            
            clearInterval(timeInterval);
            timeInterval = setInterval(updateTime, 1000);
        }

        // Yeni Kelime Yükle
        function nextWord() {
            currentWord = getRandomWord();
            wordDisplay.innerText = currentWord;
        }

        // Zamanı Güncelle
        function updateTime() {
            time--;
            timeDisplay.innerText = time;

            if (time === 0) {
                endGame();
            }
        }

        // Oyunu Bitir
        function endGame() {
            clearInterval(timeInterval);
            isPlaying = false;
            inputField.disabled = true;
            inputField.value = '';
            
            const wpm = Math.round(totalTypedChars / 5);

            finalScoreDisplay.innerText = score;
            finalWpmDisplay.innerText = wpm;
            
            gameOverScreen.classList.remove('hidden');
        }

        // Ana Menüye Dön
        function returnToMenu() {
            gameOverScreen.classList.add('hidden');
            wordDisplay.classList.add('hidden');
            inputField.classList.add('hidden');
            
            menuContainer.classList.remove('hidden');
            startBtn.classList.remove('hidden');
            
            timeDisplay.innerText = '60';
            scoreDisplay.innerText = '0';
        }

        // Giriş Kontrolü
        inputField.addEventListener('input', (e) => {
            if(!isPlaying) return;

            const insertedText = e.target.value.toLowerCase();

            if (!currentWord.toLowerCase().startsWith(insertedText)) {
                inputField.classList.add('error');
            } else {
                inputField.classList.remove('error');
            }

            if (insertedText === currentWord.toLowerCase()) {
                score += 10;
                totalTypedChars += currentWord.length + 1;
                scoreDisplay.innerText = score;
                inputField.value = '';
                nextWord();
            }
        });

        document.addEventListener('keypress', function (e) {
            if (e.key === 'Enter' && !isPlaying && gameOverScreen.classList.contains('hidden')) {
                initGame();
            }
        });

        // Buton Dinleyicileri
        startBtn.addEventListener('click', initGame);
        restartBtn.addEventListener('click', returnToMenu);

    </script>
</body>
</html>









Selamlar yapay zeka ile yapıldı kodları verdim 10 parmak hızınızı test edin kelimeyi yazmanız yeterli enter basmanıza gerek yok gelişitirebilir size kalmış iyi forumlar