köstebeği yakala

Köstebeği Yakala! Oyunu

Android Uygulama Geliştirme Ders Notları

01.06.2025

Proje Tanımı

Köstebeği Yakala, ekranda beliren köstebeklere dokunarak puan toplanılan bir oyun.

- Oyunu Android Studio'da Java dili ile geliştireceğiz.
- Kullanıcı kaydı için Firebase Authentication kullanılacak ve en yüksek puan Firebase Realtime Database'e kaydedilecek.
- Oyunun sesleri ve titreşim efekti kullanılacak.
- Oyunun başlığı ve butonları animasyon efektleri ile hareketli olacak.

Oyun 3 ekrandan oluşacak:
LoginActivity, GameActivity ve ResultActivity.

LoginActivity:

activity_login

Bu ekranda:
- Başlık görseli,
- Oyunun karakteri olan köstebek görseli,
- Kullanıcı adı girilen alanı,
- Kaydet/Başla butonu,
- Ses açma kapama butonu
bulunacak.

Uygulama ilk kez açıldığında kullanıcı adı girilecek. Girilen kullanıcı adı Firebase Authentication ve Firebase Realtime Database'de kontrol edilecek. Eğer kullanıcı adı daha önce kayıtlıysa uyarı verilecek. Yeni kullanıcı adı hem SharedPreferences'a hem de Firebase Realtime Database'e kaydedilecek.

Uygulama tekrar açıldığında kullanıcı adı SharedPreferences'tan hatırlanacak ve tekrar düzenlenemeyecek.

Uygulama ilk kez açıldıysa Kaydet butonu, daha önce kaydedilmişse Başla butonu gösterilecek.
Başla butonuna tıklandığında GameActivity'e geçip oyun başlayacak.

Kullanıcının varsa daha önce kaydettiği En yüksek puan da SharedPreferences'ta saklanacak gösterilecek.
Eğer uygulama ilk kez açılıyorsa en yüksek puan olmadığı için gösterilmeyecek.

Ses açma kapama butonu ile oyunun sesi açılıp kapatılacak ve bu durum SharedPreferences ile saklanacak.
Ses durumununa göre butonun resmi değişecek.
Uygulama tekrar açıldığında ses durumu hatırlanacak.

Butonlara tıklandığında küçülüp büyüyecek.

GameActivity:

activity_game

Ekranın üst kısmında kalan süre gösterilecek.
Süre son 3 saniyede kırmızıya dönecek.
Süre sona erdiğinde oyun sona erecek ve ResultActivity'e geçilecek.

Ortada oyun alanı olacak ve bu alanda rastgele köstebekler belirecek.
Köstebeğin hareketi için animasyon kullanılacak.
Animasyon her tekrarlandığında bir ses çalacak.
Köstebek tıklandığında vurulma sesi çalacak ve titreşim olacak.
Vurulan köstebeğin resmi değişecek.
Puan artacak.

Bazen rastgele köstebek yerine bomba belirecek.
Bomba tıklandığında patlama sesi çalacak ve titreşim olacak.
Puan azalacak.

Ekranın alt tarafında puan gösterilecek.
Puan, köstebek vurulduğunda artacak.
Her puan arttığında Puan bölümü animasyon ile büyüyüp küçülecek.







































































Gradle Scripts > build.gradle (modul: app):
   
android {

  // diğer kodlar

  viewBinding {
      enabled = true  
  }
}
            
            

manifest > AndroidManifest.xml dosyasındaki MainActivity ile ilgili kısmı silin:


<activity
    android:name=".MainActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

          
activity_login.xml:
   
<androidx.constraintlayout.widget.ConstraintLayout                       
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/main"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="#885218"
  tools:context=".LoginActivity" >

            
   
public class LoginActivity extends AppCompatActivity  {  
 
    // diğer kodlar
    
    // Köstebeğin vurulma durumu                       
    private boolean vurulduMu = false;

    // Handler, köstebeğin yukarı çıkma ve aşağı inme animasyonlarını kontrol eder
    private final Handler handler = new Handler(Looper.getMainLooper());

    // Yukarı çıkma animasyonu
    private final TranslateAnimation animUp = createTranslateAnimation(150, 0, 300); 

    // Aşağı inme animasyonu
    private final TranslateAnimation animDown = createTranslateAnimation(0, 150, 300);  

    // diğer kodlar