Tüm Rehberler

Kelime Tahmin Oyunu — Wordle Klonu

Orta ⏱ 100 dk
BÖLÜM 4 / 8

Klavye Girişi ve Tahmin Doğrulama

Hem fiziksel klavyeden hem ekran klavyesinden harf alıp tahmin satırını dolduran ve Enter'a basılınca kontrol eden sistemi yazıyoruz.

Türkçe karakterler (ş, ı, ğ vs.) için Input System paketini kullanmayı düşün.

Unity Editör Adımları

GameController scripti oluştur → Singleton
Update() içinde Input.inputString ile fiziksel klavye izle
Ekran klavyesi butonlarına OnKeyPress(string letter) bağla
Enter tuşuna basınca SubmitGuess() çağır
csharp
using UnityEngine;
using System.Collections.Generic;

public class GameController : MonoBehaviour
{
    public static GameController Instance;
    public LetterCell[,] grid = new LetterCell[6, 5];

    private int currentRow = 0;
    private int currentCol = 0;
    private List<char> currentGuess = new List<char>();

    void Awake() => Instance = this;

    void Update()
    {
        foreach (char c in Input.inputString)
        {
            if (c == '\b') // Backspace
                DeleteLetter();
            else if (c == '\n' || c == '\r') // Enter
                SubmitGuess();
            else if (char.IsLetter(c) && currentGuess.Count < 5)
                AddLetter(char.ToUpper(c));
        }
    }

    public void AddLetter(char c)
    {
        if (currentGuess.Count >= 5) return;
        grid[currentRow, currentGuess.Count].SetLetter(c);
        currentGuess.Add(c);
    }

    public void DeleteLetter()
    {
        if (currentGuess.Count == 0) return;
        currentGuess.RemoveAt(currentGuess.Count - 1);
        grid[currentRow, currentGuess.Count].Clear();
    }

    public void SubmitGuess()
    {
        if (currentGuess.Count < 5) return;
        string guess = new string(currentGuess.ToArray());
        if (!WordManager.Instance.IsValidWord(guess))
        {
            // Geçersiz kelime - salla
            ShakeRow(currentRow);
            return;
        }
        EvaluateGuess(guess);
    }

    void ShakeRow(int row) { /* Coroutine ile hücreleri salla */ }
}

Input.inputString her frame'de yazılan tüm karakterleri string olarak döner.

Önceki Bölüm Sonraki Bölüm