Wordle oyunu oluşturacağım! Önce kelime listesini bekliyorum. Lütfen kullanılacak Türkçe kelimeleri paylaşır mısınız?
Her harf uzunluğu için ayrı listeler halinde veya tek liste halinde gönderebilirsiniz. Örneğin:
5 harfli: elmas, kalem, bilgi... 6 harfli: türkçe, pencil, bardak... ...ve devamı
Kelime listesini aldıktan sonra hemen oyunu oluşturacağım! 🎮
Web sitelerinden tam kelime listelerini alamadım, sadece kategorileri gösteriyor. Kapsamlı bir kelime listesi oluşturmam gerekiyor. Türkçe Wordle oyununu yaygın kullanılan kelimelerle oluşturacağım ve siz daha sonra kelime listesini genişletebilirsiniz.
Türkçe Wordle oyununu oluşturdum. Oyun 5, 6 ve 7 harfli kelimeler için aktif, 8-11 harfli seçenekler "Yakında" olarak kilitli görünüyor. Yeşil doğru yerdeki harfi, sarı yanlış yerdeki harfi gösteriyor. Listede olmayan kelimeler girildiğinde "Geçersiz kelime!" uyarısı çıkıyor. Kelime listesini lib/words.ts dosyasından genişletebilirsiniz.
<button id="loadBtn">Yükle</button>
<label for="q">Ara:</label>
<input id="q" type="search" placeholder="örn: ARABA" autocomplete="off" />
</div>
<div id="status">Hazır.</div>
<div class="row" style="margin-bottom: 8px;">
<strong>Toplam:</strong> <span id="count">0</span>
<button id="copyBtn" disabled>Kopyala (satır satır)</button>
<button id="downloadBtn" disabled>TXT indir</button>
</div>
<div id="list"></div>
<script>
(() => {
const loadBtn = document.getElementById("loadBtn");
const copyBtn = document.getElementById("copyBtn");
const downloadBtn = document.getElementById("downloadBtn");
const sourceSel = document.getElementById("source");
const statusEl = document.getElementById("status");
const listEl = document.getElementById("list");
const countEl = document.getElementById("count");
const qEl = document.getElementById("q");
let five = []; // tüm 5 harfli kelimeler (büyük harf)
let filtered = []; // arama sonrası
const trUpper = (s) =>
s.toLocaleUpperCase("tr-TR")
.replace(/\u0130/g, "İ") // güvenlik
.replace(/\u0131/g, "I");
function normalizeLine(line) {
// Harf dışı karakterleri temizle; Türkçe harfleri koru.
// (İstersen apostrof/çizgi vb. tutmak için düzenleyebilirsin.)
return trUpper(line.trim())
.replace(/[^A-ZÇĞİÖŞÜ]/g, "");
}
function render(words) {
listEl.innerHTML = "";
const frag = document.createDocumentFragment();
for (const w of words) {
const div = document.createElement("div");
div.className = "word";
div.textContent = w;
frag.appendChild(div);
}
listEl.appendChild(frag);
countEl.textContent = String(words.length);
}
function applyFilter() {
const q = normalizeLine(qEl.value || "");
if (!q) {
filtered = five;
} else {
filtered = five.filter(w => w.includes(q));
}
render(filtered);
}
async function load() {
const url = sourceSel.value;
statusEl.textContent = "İndiriliyor...\n" + url;
try {
const res = await fetch(url, { cache: "no-store" });
if (!res.ok) throw new Error("HTTP " + res.status);
const text = await res.text();
const lines = text.split(/\r?\n/);
const set = new Set();
for (const line of lines) {
const w = normalizeLine(line);
if (w.length === 5) set.add(w);
}
five = Array.from(set).sort((a, b) => a.localeCompare(b, "tr"));
filtered = five;
statusEl.textContent =
"Yüklendi ✅\n" +
"Toplam benzersiz 5 harfli kelime: " + five.length;
copyBtn.disabled = false;
downloadBtn.disabled = false;
applyFilter();
} catch (e) {
statusEl.textContent = "Hata ❌\n" + String(e);
}
}
loadBtn.addEventListener("click", load);
qEl.addEventListener("input", applyFilter);
copyBtn.addEventListener("click", async () => {
const payload = filtered.join("\n");
await navigator.clipboard.writeText(payload);
statusEl.textContent = "Kopyalandı ✅ (" + filtered.length + " satır)";
});
downloadBtn.addEventListener("click", () => {
const blob = new Blob([filtered.join("\n")], { type: "text/plain;charset=utf-8" });
const a = document.createElement("a");
a.href = URL.createObjectURL(blob);
a.download = "5-harfli-kelimeler.txt";
document.body.appendChild(a);
a.click();
a.remove();
URL.revokeObjectURL(a.href);
});
})();
</script>
</body>
</html>