Proje Detayları

Proje Tanımı

Bu projede, bilgisayarın 1 ile 100 arasında rastgele seçtiği bir sayıyı tahmin etmeye çalışacağınız basit bir oyun geliştireceğiz. Kullanıcı, her tahminden sonra sayının daha yüksek mi yoksa daha düşük mü olduğuna dair ipuçları alacak. Bu proje, koşullu ifadeler, rastgele sayı üretme ve DOM manipülasyonu konularını pekiştirmenize yardımcı olacak.

Adım Adım Geliştirme

1 HTML Yapısını Oluşturma

İlk olarak, sayı tahmin oyununun HTML yapısını oluşturalım. Bir form, mesaj alanı, istatistikler ve tahmin geçmişi içeren bir yapı oluşturacağız.

index.html
<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Sayı Tahmin Oyunu</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="game-container">
        <h2 class="game-title">Sayı Tahmin Oyunu</h2>
        <div class="game-info">
            1 ile 100 arasında bir sayı tuttum. Tahmin edebilir misin?
        </div>
        <div class="game-form">
            <input type="number" min="1" max="100" class="game-input" id="guessInput" placeholder="?">
            <button class="game-submit" id="guessSubmit">Tahmin Et</button>
        </div>
        <div class="game-message" id="message"></div>
        <div class="game-stats">
            <div class="game-stat">
                <div class="game-stat-value" id="attempts">0</div>
                <div class="game-stat-label">Deneme</div>
            </div>
            <div class="game-stat">
                <div class="game-stat-value" id="minRange">1</div>
                <div class="game-stat-label">Min</div>
            </div>
            <div class="game-stat">
                <div class="game-stat-value" id="maxRange">100</div>
                <div class="game-stat-label">Max</div>
            </div>
        </div>
        <div class="game-history">
            <h3>Tahmin Geçmişi</h3>
            <ul class="game-history-list" id="history">
                <!-- Tahminler JavaScript ile eklenecek -->
            </ul>
        </div>
        <button class="game-reset" id="resetGame">Yeni Oyun</button>
    </div>
    
    <script src="script.js"></script>
</body>
</html>

Not: HTML yapısında, oyun için gerekli tüm elementleri oluşturuyoruz. input elementine min ve max öznitelikleri ekleyerek, kullanıcının sadece 1 ile 100 arasında sayı girebilmesini sağlıyoruz.

2 CSS ile Stil Verme

Şimdi, sayı tahmin oyununa stil verelim. Kullanıcı dostu ve çekici bir arayüz oluşturacağız.

style.css
* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body {
    font-family: Arial, sans-serif;
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    background-color: #f5f5f5;
}

.game-container {
    width: 100%;
    max-width: 500px;
    background-color: #fff;
    border-radius: 10px;
    box-shadow: 0 5px 15px rgba(0,0,0,0.1);
    padding: 30px;
    text-align: center;
}

.game-title {
    font-size: 1.8rem;
    color: #333;
    margin-bottom: 20px;
}

.game-info {
    background-color: #f5f5f5;
    border-radius: 5px;
    padding: 15px;
    margin-bottom: 20px;
}

.game-form {
    display: flex;
    justify-content: center;
    margin-bottom: 20px;
}

.game-input {
    width: 100px;
    padding: 10px;
    border: 1px solid #ddd;
    border-radius: 4px 0 0 4px;
    font-size: 1rem;
    text-align: center;
}

.game-submit {
    background-color: #4caf50;
    color: white;
    border: none;
    padding: 10px 15px;
    border-radius: 0 4px 4px 0;
    cursor: pointer;
    font-size: 1rem;
}

.game-submit:hover {
    background-color: #43a047;
}

.game-message {
    font-size: 1.2rem;
    margin-bottom: 20px;
    min-height: 30px;
}

.game-message.correct {
    color: #4caf50;
    font-weight: bold;
}

.game-message.wrong {
    color: #f44336;
}

.game-stats {
    display: flex;
    justify-content: space-around;
    margin-bottom: 20px;
}

.game-stat {
    text-align: center;
}

.game-stat-value {
    font-size: 1.5rem;
    font-weight: bold;
    color: #333;
}

.game-stat-label {
    font-size: 0.9rem;
    color: #666;
}

.game-history {
    background-color: #f5f5f5;
    border-radius: 5px;
    padding: 15px;
    margin-bottom: 20px;
    text-align: left;
}

.game-history h3 {
    font-size: 1.2rem;
    margin-bottom: 10px;
    color: #333;
}

.game-history-list {
    list-style-type: none;
    padding: 0;
    margin: 0;
    max-height: 150px;
    overflow-y: auto;
}

.game-history-item {
    padding: 5px 0;
    border-bottom: 1px solid #eee;
    display: flex;
    align-items: center;
}

.game-history-item:last-child {
    border-bottom: none;
}

.game-history-number {
    width: 50px;
    font-weight: bold;
}

.game-history-result {
    flex: 1;
}

.game-history-result.high {
    color: #f44336;
}

.game-history-result.low {
    color: #2196f3;
}

.game-history-result.correct {
    color: #4caf50;
}

.game-reset {
    background-color: #f44336;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 1rem;
    margin-top: 10px;
}

.game-reset:hover {
    background-color: #e53935;
}

İpucu: CSS'te, farklı tahmin sonuçları için farklı renkler kullanıyoruz. Doğru tahminler için yeşil, yüksek tahminler için kırmızı ve düşük tahminler için mavi renk kullanarak, kullanıcıya görsel geri bildirim sağlıyoruz.

3 JavaScript ile İşlevsellik Ekleme

Şimdi, JavaScript ile sayı tahmin oyununa işlevsellik ekleyelim. Rastgele sayı üretme, tahminleri kontrol etme ve oyun mantığını kodlayacağız.

script.js
// DOM elementlerini seçme
const guessInput = document.getElementById('guessInput');
const guessSubmit = document.getElementById('guessSubmit');
const message = document.getElementById('message');
const attemptsDisplay = document.getElementById('attempts');
const minRangeDisplay = document.getElementById('minRange');
const maxRangeDisplay = document.getElementById('maxRange');
const historyList = document.getElementById('history');
const resetButton = document.getElementById('resetGame');

// Oyun değişkenleri
let randomNumber;
let attempts;
let minRange;
let maxRange;
let gameOver;

// Oyunu başlatma
function initGame() {
    // Rastgele sayı üret (1-100 arası)
    randomNumber = Math.floor(Math.random() * 100) + 1;
    
    // Oyun değişkenlerini sıfırla
    attempts = 0;
    minRange = 1;
    maxRange = 100;
    gameOver = false;
    
    // Arayüzü sıfırla
    guessInput.value = '';
    message.textContent = '';
    message.className = 'game-message';
    attemptsDisplay.textContent = attempts;
    minRangeDisplay.textContent = minRange;
    maxRangeDisplay.textContent = maxRange;
    historyList.innerHTML = '';
    
    // Input'a odaklan
    guessInput.focus();
    
    // Konsola rastgele sayıyı yazdır (test için)
    console.log('Rastgele sayı:', randomNumber);
}

// Tahmin kontrolü
function checkGuess() {
    // Input değerini al ve sayıya çevir
    const userGuess = parseInt(guessInput.value);
    
    // Geçerli bir sayı değilse
    if (isNaN(userGuess) || userGuess < 1 || userGuess > 100) {
        message.textContent = 'Lütfen 1 ile 100 arasında bir sayı girin.';
        message.className = 'game-message wrong';
        guessInput.value = '';
        guessInput.focus();
        return;
    }
    
    // Oyun bittiyse
    if (gameOver) {
        message.textContent = 'Oyun bitti! Yeni bir oyun başlatmak için "Yeni Oyun" butonuna tıklayın.';
        return;
    }
    
    // Deneme sayısını artır
    attempts++;
    attemptsDisplay.textContent = attempts;
    
    // Tahmin geçmişine ekle
    addToHistory(userGuess);
    
    // Tahmini kontrol et
    if (userGuess === randomNumber) {
        // Doğru tahmin
        message.textContent = `Tebrikler! ${attempts} denemede doğru tahmin ettiniz.`;
        message.className = 'game-message correct';
        gameOver = true;
    } else if (userGuess < randomNumber) {
        // Düşük tahmin
        message.textContent = 'Çok düşük! Daha yüksek bir sayı deneyin.';
        message.className = 'game-message wrong';
        
        // Minimum aralığı güncelle
        if (userGuess > minRange) {
            minRange = userGuess;
            minRangeDisplay.textContent = minRange;
        }
    } else {
        // Yüksek tahmin
        message.textContent = 'Çok yüksek! Daha düşük bir sayı deneyin.';
        message.className = 'game-message wrong';
        
        // Maksimum aralığı güncelle
        if (userGuess < maxRange) {
            maxRange = userGuess;
            maxRangeDisplay.textContent = maxRange;
        }
    }
    
    // Input'u temizle ve odaklan
    guessInput.value = '';
    guessInput.focus();
}

// Tahmin geçmişine ekleme
function addToHistory(guess) {
    // Yeni liste öğesi oluştur
    const historyItem = document.createElement('li');
    historyItem.className = 'game-history-item';
    
    // Tahmin sonucunu belirle
    let resultClass = '';
    let resultText = '';
    
    if (guess === randomNumber) {
        resultClass = 'correct';
        resultText = 'Doğru!';
    } else if (guess < randomNumber) {
        resultClass = 'low';
        resultText = 'Çok düşük';
    } else {
        resultClass = 'high';
        resultText = 'Çok yüksek';
    }
    
    // Liste öğesi içeriğini oluştur
    historyItem.innerHTML = `
        ${guess}
        ${resultText}
    `;
    
    // Liste öğesini geçmişe ekle (en üste)
    historyList.insertBefore(historyItem, historyList.firstChild);
}

// Olay dinleyicileri
guessSubmit.addEventListener('click', checkGuess);

guessInput.addEventListener('keypress', function(e) {
    if (e.key === 'Enter') {
        checkGuess();
    }
});

resetButton.addEventListener('click', initGame);

// Sayfa yüklendiğinde oyunu başlat
document.addEventListener('DOMContentLoaded', initGame);

Uyarı: Geliştirme aşamasında, rastgele sayıyı konsola yazdırıyoruz. Bu, test için faydalıdır, ancak gerçek oyunda bu satırı kaldırmalısınız.

4 Rastgele Sayı Üretme

Sayı tahmin oyununda, bilgisayarın rastgele bir sayı seçmesi gerekiyor. JavaScript'te, Math.random() fonksiyonu kullanarak rastgele sayılar üretebiliriz.

Math.random() Nasıl Çalışır?

Math.random() fonksiyonu, 0 (dahil) ile 1 (hariç) arasında rastgele bir ondalık sayı döndürür. Örneğin: 0.123456789...

Belirli Bir Aralıkta Rastgele Sayı Üretme

1 ile 100 arasında rastgele bir tam sayı üretmek için, aşağıdaki formülü kullanabiliriz:

Rastgele Sayı Üretme
// 1 ile 100 arasında rastgele bir tam sayı üret
const randomNumber = Math.floor(Math.random() * 100) + 1;

Bu formülde:

  • Math.random(): 0 ile 1 arasında rastgele bir ondalık sayı döndürür
  • * 100: Sayıyı 0 ile 100 arasına genişletir
  • Math.floor(): Ondalık kısmı atar ve tam sayıya yuvarlar (0 ile 99 arası)
  • + 1: Sayıyı 1 ile 100 arasına kaydırır

Not: Farklı bir aralıkta rastgele sayı üretmek için, formülü şu şekilde genelleştirebilirsiniz: Math.floor(Math.random() * (max - min + 1)) + min

5 Tahmin Kontrolü ve Geri Bildirim

Kullanıcı bir tahmin yaptığında, bu tahmini rastgele sayı ile karşılaştırıp uygun geri bildirim vermemiz gerekiyor.

Tahmin Kontrolü Mantığı

Tahmin kontrolü, üç olası sonuç içerir:

  1. Doğru Tahmin: Kullanıcının tahmini, rastgele sayıya eşitse
  2. Düşük Tahmin: Kullanıcının tahmini, rastgele sayıdan küçükse
  3. Yüksek Tahmin: Kullanıcının tahmini, rastgele sayıdan büyükse
Tahmin Kontrolü
// Tahmini kontrol et
if (userGuess === randomNumber) {
    // Doğru tahmin
    message.textContent = `Tebrikler! ${attempts} denemede doğru tahmin ettiniz.`;
    message.className = 'game-message correct';
    gameOver = true;
} else if (userGuess < randomNumber) {
    // Düşük tahmin
    message.textContent = 'Çok düşük! Daha yüksek bir sayı deneyin.';
    message.className = 'game-message wrong';
} else {
    // Yüksek tahmin
    message.textContent = 'Çok yüksek! Daha düşük bir sayı deneyin.';
    message.className = 'game-message wrong';
}

Aralık Güncelleme

Kullanıcıya daha iyi ipuçları vermek için, her tahminden sonra minimum ve maksimum aralığı güncelleyebiliriz:

Aralık Güncelleme
// Düşük tahmin
if (userGuess < randomNumber) {
    // ...
    
    // Minimum aralığı güncelle
    if (userGuess > minRange) {
        minRange = userGuess;
        minRangeDisplay.textContent = minRange;
    }
}

// Yüksek tahmin
if (userGuess > randomNumber) {
    // ...
    
    // Maksimum aralığı güncelle
    if (userGuess < maxRange) {
        maxRange = userGuess;
        maxRangeDisplay.textContent = maxRange;
    }
}

Bu şekilde, kullanıcı her tahminden sonra daha dar bir aralıkta tahmin yapabilir.

6 Tahmin Geçmişi Ekleme

Kullanıcının önceki tahminlerini görmesi, oyunu daha stratejik hale getirir. Tahmin geçmişi ekleyerek, kullanıcının hangi sayıları denediğini ve sonuçlarını görmesini sağlayabiliriz.

Tahmin Geçmişi Ekleme
// Tahmin geçmişine ekleme
function addToHistory(guess) {
    // Yeni liste öğesi oluştur
    const historyItem = document.createElement('li');
    historyItem.className = 'game-history-item';
    
    // Tahmin sonucunu belirle
    let resultClass = '';
    let resultText = '';
    
    if (guess === randomNumber) {
        resultClass = 'correct';
        resultText = 'Doğru!';
    } else if (guess < randomNumber) {
        resultClass = 'low';
        resultText = 'Çok düşük';
    } else {
        resultClass = 'high';
        resultText = 'Çok yüksek';
    }
    
    // Liste öğesi içeriğini oluştur
    historyItem.innerHTML = `
        ${guess}
        ${resultText}
    `;
    
    // Liste öğesini geçmişe ekle (en üste)
    historyList.insertBefore(historyItem, historyList.firstChild);
}

Bu fonksiyon, her tahmin için bir liste öğesi oluşturur ve tahmin sonucuna göre uygun sınıf ve metin ekler. Yeni tahminler, listenin en üstüne eklenir, böylece kullanıcı en son tahminini kolayca görebilir.

7 Projeyi Test Etme ve Hata Ayıklama

Sayı tahmin oyununu oluşturduktan sonra, farklı senaryoları test ederek doğru çalıştığından emin olun:

  • Doğru tahmin: Rastgele sayıyı doğru tahmin ettiğinizde, tebrik mesajı görmelisiniz
  • Düşük tahmin: Rastgele sayıdan düşük bir sayı tahmin ettiğinizde, "Çok düşük" mesajı görmelisiniz
  • Yüksek tahmin: Rastgele sayıdan yüksek bir sayı tahmin ettiğinizde, "Çok yüksek" mesajı görmelisiniz
  • Geçersiz giriş: 1'den küçük veya 100'den büyük bir sayı girdiğinizde, hata mesajı görmelisiniz
  • Aralık güncelleme: Tahminlerinize göre minimum ve maksimum aralık değerleri güncellenmelidir
  • Tahmin geçmişi: Her tahmin, tahmin geçmişi listesine eklenmelidir
  • Yeni oyun: "Yeni Oyun" butonuna tıkladığınızda, oyun sıfırlanmalı ve yeni bir rastgele sayı seçilmelidir

Herhangi bir hata veya beklenmeyen davranış tespit ederseniz, JavaScript kodunuzu gözden geçirin ve düzeltin.

8 Bonus Özellikleri Ekleme

Temel sayı tahmin oyunu işlevselliğini tamamladıktan sonra, aşağıdaki bonus özellikleri ekleyebilirsiniz:

Zorluk Seviyeleri

Zorluk Seviyeleri Ekleme
// HTML'e zorluk seviyeleri ekleyin
<div class="difficulty-selector">
    <button class="difficulty-btn" data-difficulty="easy">Kolay (1-50)</button>
    <button class="difficulty-btn active" data-difficulty="medium">Orta (1-100)</button>
    <button class="difficulty-btn" data-difficulty="hard">Zor (1-200)</button>
</div>

// JavaScript'te zorluk seviyelerini işleyin
const difficultyButtons = document.querySelectorAll('.difficulty-btn');
let maxNumber = 100; // Varsayılan

difficultyButtons.forEach(button => {
    button.addEventListener('click', () => {
        // Aktif sınıfını güncelle
        difficultyButtons.forEach(btn => btn.classList.remove('active'));
        button.classList.add('active');
        
        // Zorluk seviyesini al
        const difficulty = button.getAttribute('data-difficulty');
        
        // Maksimum sayıyı ayarla
        if (difficulty === 'easy') {
            maxNumber = 50;
        } else if (difficulty === 'medium') {
            maxNumber = 100;
        } else if (difficulty === 'hard') {
            maxNumber = 200;
        }
        
        // Input'un max özniteliğini güncelle
        guessInput.setAttribute('max', maxNumber);
        
        // Yeni oyun başlat
        initGame();
    });
});

// initGame fonksiyonunu güncelle
function initGame() {
    // Rastgele sayı üret (1-maxNumber arası)
    randomNumber = Math.floor(Math.random() * maxNumber) + 1;
    
    // Diğer kodlar...
    
    // Maksimum aralığı güncelle
    maxRange = maxNumber;
    maxRangeDisplay.textContent = maxRange;
}

Zaman Sınırı

Zaman Sınırı Ekleme
// HTML'e zaman göstergesi ekleyin
<div class="game-stat">
    <div class="game-stat-value" id="timeLeft">60</div>
    <div class="game-stat-label">Saniye</div>
</div>

// JavaScript'te zaman sınırı ekleyin
const timeLeftDisplay = document.getElementById('timeLeft');
let timeLeft;
let timerInterval;

function startTimer() {
    // Zamanlayıcıyı temizle
    clearInterval(timerInterval);
    
    // Zamanı ayarla (60 saniye)
    timeLeft = 60;
    timeLeftDisplay.textContent = timeLeft;
    
    // Zamanlayıcıyı başlat
    timerInterval = setInterval(() => {
        timeLeft--;
        timeLeftDisplay.textContent = timeLeft;
        
        // Zaman bittiyse
        if (timeLeft <= 0) {
            clearInterval(timerInterval);
            message.textContent = `Zaman doldu! Doğru sayı ${randomNumber} idi.`;
            message.className = 'game-message wrong';
            gameOver = true;
        }
    }, 1000);
}

// initGame fonksiyonunu güncelle
function initGame() {
    // Diğer kodlar...
    
    // Zamanlayıcıyı başlat
    startTimer();
}

// checkGuess fonksiyonunu güncelle
function checkGuess() {
    // Diğer kodlar...
    
    // Doğru tahmin
    if (userGuess === randomNumber) {
        // Zamanlayıcıyı durdur
        clearInterval(timerInterval);
        
        // Diğer kodlar...
    }
}

En Yüksek Skorlar

En Yüksek Skorlar Ekleme
// HTML'e en yüksek skorlar ekleyin
<div class="high-scores">
    <h3>En Yüksek Skorlar</h3>
    <ul class="high-scores-list" id="highScores"></ul>
</div>

// JavaScript'te en yüksek skorları işleyin
const highScoresList = document.getElementById('highScores');
let highScores = [];

// LocalStorage'dan en yüksek skorları yükle
function loadHighScores() {
    const storedScores = localStorage.getItem('highScores');
    if (storedScores) {
        highScores = JSON.parse(storedScores);
        renderHighScores();
    }
}

// En yüksek skorları kaydet
function saveHighScore(attempts, timeLeft) {
    // Kullanıcı adını al
    const playerName = prompt('Tebrikler! Adınızı girin:') || 'Anonim';
    
    // Yeni skor objesi oluştur
    const newScore = {
        name: playerName,
        attempts: attempts,
        timeLeft: timeLeft,
        date: new Date().toLocaleDateString()
    };
    
    // Skoru listeye ekle
    highScores.push(newScore);
    
    // Skorları sırala (deneme sayısına göre artan, kalan zamana göre azalan)
    highScores.sort((a, b) => {
        if (a.attempts === b.attempts) {
            return b.timeLeft - a.timeLeft;
        }
        return a.attempts - b.attempts;
    });
    
    // En fazla 5 skor sakla
    highScores = highScores.slice(0, 5);
    
    // LocalStorage'a kaydet
    localStorage.setItem('highScores', JSON.stringify(highScores));
    
    // Skorları render et
    renderHighScores();
}

// En yüksek skorları render et
function renderHighScores() {
    highScoresList.innerHTML = '';
    
    highScores.forEach((score, index) => {
        const scoreItem = document.createElement('li');
        scoreItem.className = 'high-score-item';
        scoreItem.innerHTML = `
            ${index + 1}
            ${score.name}
            ${score.attempts} deneme
            ${score.timeLeft} saniye kaldı
            ${score.date}
        `;
        highScoresList.appendChild(scoreItem);
    });
}

// checkGuess fonksiyonunu güncelle
function checkGuess() {
    // Diğer kodlar...
    
    // Doğru tahmin
    if (userGuess === randomNumber) {
        // Diğer kodlar...
        
        // En yüksek skoru kaydet
        saveHighScore(attempts, timeLeft);
    }
}

// Sayfa yüklendiğinde en yüksek skorları yükle
document.addEventListener('DOMContentLoaded', () => {
    initGame();
    loadHighScores();
});

Proje Zorlukları ve Çözümleri

Zorluk 1: Rastgele Sayı Üretme

Sayı tahmin oyununda, her oyun başlangıcında yeni bir rastgele sayı üretmek önemlidir.

Çözüm: Math.random() ve Math.floor() fonksiyonlarını kullanarak, belirli bir aralıkta rastgele tam sayılar üretebilirsiniz. Formül: Math.floor(Math.random() * max) + 1

Zorluk 2: Kullanıcı Girdisini Doğrulama

Kullanıcının geçerli bir sayı girdiğinden emin olmak önemlidir.

Çözüm: parseInt() fonksiyonu ile kullanıcı girdisini sayıya çevirebilir ve isNaN() fonksiyonu ile geçerli bir sayı olup olmadığını kontrol edebilirsiniz. Ayrıca, HTML input elementine type="number"min="1" ve max="100" öznitelikleri ekleyerek, tarayıcının kendi doğrulama mekanizmalarını da kullanabilirsiniz.

Zorluk 3: Oyun Durumunu Yönetme

Oyunun başlangıç, devam ve bitiş durumlarını doğru bir şekilde yönetmek önemlidir.

Çözüm: Oyun durumunu takip etmek için bir gameOver değişkeni kullanabilirsiniz. Oyun başladığında false, doğru tahmin edildiğinde veya zaman dolduğunda true olarak ayarlayabilirsiniz. Bu değişkene göre, kullanıcının yeni tahminler yapmasını engelleyebilir veya izin verebilirsiniz.

Geliştirme İpuçları

  • Kullanıcı Deneyimine Odaklanın: Kullanıcıya açık ve anlaşılır geri bildirimler verin. Doğru, yüksek ve düşük tahminler için farklı renkler ve mesajlar kullanın.
  • Aralık Göstergeleri Ekleyin: Kullanıcının daha stratejik tahminler yapabilmesi için, minimum ve maksimum aralık göstergeleri ekleyin.
  • Tahmin Geçmişi Sağlayın: Kullanıcının önceki tahminlerini ve sonuçlarını görmesi, oyunu daha stratejik hale getirir.
  • Oyunu Özelleştirilebilir Yapın: Kullanıcının zorluk seviyesini, sayı aralığını veya zaman sınırını seçebilmesini sağlayın.
  • Görsel Geri Bildirim Ekleyin: Animasyonlar, renkler ve ikonlar kullanarak, kullanıcıya görsel geri bildirim sağlayın.

Proje Genişletme Fikirleri

  • Çoklu Oyuncu Modu: İki oyuncunun sırayla tahmin yapabildiği bir mod ekleyin. Her oyuncu, diğer oyuncunun tahminlerini görebilir ve sıra kendisine geldiğinde tahmin yapar.
  • Farklı Oyun Modları: "Tersine Tahmin" modu ekleyin, burada kullanıcı bir sayı seçer ve bilgisayar tahmin etmeye çalışır.
  • Görsel İpuçları: Tahminlere göre değişen bir termometre veya hedef tahtası gibi görsel ipuçları ekleyin.
  • Ses Efektleri: Doğru, yüksek ve düşük tahminler için farklı ses efektleri ekleyin.
  • Başarı Sistemi: Belirli hedefleri tamamladıkça açılan başarılar ekleyin (örneğin, "5 denemede doğru tahmin", "3 oyun üst üste kazanma" vb.).
  • Tema Değiştirme: Kullanıcının açık/koyu tema arasında geçiş yapabilmesini sağlayın.