Java Sayı Tahmin Oyunu

Merhaba, bugün Java dilinde Sayı Tahmin Oyunu yapacağız. Bu oyun için daha Java ile programlamaya yeni başlayan düzeyde kodlama yapacağız. Hatta programlamaya yeni başlayanların anlamakta sıkıntı çekmeyeceği konular üzerinden işleyeceğiz. Java Sayı Tahmin Oyunu için isterlerimi önceden sıralıyorum ki belki kodları incelemeden önce denemek isteyenler olabilir. Ve başlamadan son olarak kullanacaklarımı belirtiyim. Bu uygulamayı Console Application olarak yani Konsolda oynayabileceğiz. İlerleyen zamanlarda Java’da bulunan güçlü kütüphaneleri kullanarak kullanışlı arayüzü bulunan oyunlar tasarlayabiliriz. Kodlama kısmında isinde if else yapısı, while döngüsü kullanacağız. Ekstra olarak Random sınıfını kullanacağız. Bu sınıfı da oyunumuzu tekdüzelikten çıkarmak için şart. Daha fazla uzatmadan hadi başlayalım. 🙂

  1. Anlaşılır bir menü tasarlanılsın.
  2. Kod bloklarına dikkat edilsin.
  3. Kullanıcıya 3 adet zorluk seviyesi verilsin ve bunlar
    • [0-10] Kolay
    • [0-100] Orta
    • [0-1000] Zor
  4. Kullanıcının Kolay ve Orta zorluk seviyesinde 3, Zor seviyesinde 5 adet tahmin hakkı olsun.
  5. Kullanıcı yapmış olduğu tahmin, bulması gereken sayıdan küçük veya büyükse bununla ilgili bilgi verilsin.
  6. Kullanıcının yaptığı her yanlış tahminin ardından kalan tahmin hakkı ekrana çıktı verilsin.
  7. Eğer kullanıcının hakkı biterse bulması gereken sayıyı en son ekranda gösterilsin.

Bu şekilde isterleri arttırabiliriz ama şimdilik yeterli hadi şimdi kodlama kısmına geçelim.

Java Tahmin Oyunu Kodları
 import java.util.Random;
 import java.util.Scanner;
 public class SayiTahminOyunu{
     public static void main(String[] args) {
         Random rnd = new Random();  // random sınıfını bu şekilde oluşturuyoruz.
         Scanner input = new Scanner(System.in);   // Scanner sınıfını kullanarak kullanıcıdan konsol ekranına yazdıklarını alırız
         System.out.println("Erhan Baran-Yazılım101");
         System.out.println("Tahmin oyunumuza hoşgeldiniz..^\n"        //istenilen menü tasarımı örneği 
                 + "Toplam 3 tahmin hakkınız vardır\n"
                 + "---Oyun seviyeleri---\n"
                 + "[1]Kolay(0-10)\n"               
                 + "[2]Orta(0-100)\n"
                 + "[3]Zor(0-1000)\n"
                 + "");
         System.out.println("Lütfen seviye seçimi yapınız");
         int seviyeSecimi = input.nextInt();
         int can = 3;
         if(seviyeSecimi == 1){
             int tahminEdilcekSayi= rnd.nextInt(10);
             while(can >0){
                 System.out.println("Bir tahmin yapınız");
                 int kullanıcıTahmin = input.nextInt();
                 if(kullanıcıTahmin == tahminEdilcekSayi){
                     System.out.println("Tebrikler doğru tahmin!! <<"+tahminEdilcekSayi+">> ");
                     break;
                 }else if(kullanıcıTahmin>tahminEdilcekSayi){
                     System.out.println("Tahmininiz yüksek :) ");
                     can--;
                     System.out.println("Kalan Hakkınız: "+can);
                 }else{
                     System.out.println("Tahmininiz küçük :) ");
                     can--;
                     System.out.println("Kalan Hakkınız: "+can); 
                        }
                          }
             if(can==0)
             System.out.println("Bulmanız gereken sayı : "+ tahminEdilcekSayi);
         }
         else if(seviyeSecimi == 2){
             int tahminEdilcekSayi= (int)(Math.random()*100);
             while(can >0){
                 System.out.println("Bir tahmin yapınız");
                 int kullanıcıTahmin = input.nextInt();
                 if(kullanıcıTahmin == tahminEdilcekSayi){
                     System.out.println("Tebrikler doğru tahmin!! <<"+tahminEdilcekSayi+">> ");
                     break;
                 }else if(kullanıcıTahmin>tahminEdilcekSayi){
                     System.out.println("Tahmininiz yüksek :) ");
                     can--;
                     System.out.println("Kalan Hakkınız: "+can);
                 }else{
                     System.out.println("Tahmininiz küçük :) ");
                     can--;
                     System.out.println("Kalan Hakkınız: "+can);
                      }
                         }
            if(can==0)
            System.out.println("bulmanız gereken sayı : "+ tahminEdilcekSayi);    
            }           
            }
         else if(seviyeSecimi == 3){             
             can = 5;
             System.out.println("Bir tahmin yapınız");
             int tahminEdilcekSayi= (int)(Math.random()*1000);
             while(can >0){
                 int kullanıcıTahmin = input.nextInt();
                 if(kullanıcıTahmin == tahminEdilcekSayi){
                     System.out.println("Tebrikler doğru tahmin!! <<"+tahminEdilcekSayi+">> ");
                     break;
                 }else if(kullanıcıTahmin>tahminEdilcekSayi){
                     System.out.println("Tahmininiz yüksek :) ");
                     can--;
                     System.out.println("Kalan Hakkınız: "+can);
                 }else{
                     System.out.println("Tahmininiz küçük :) ");
                     can--; 
                     System.out.println("Kalan Hakkınız: "+can);}
                     }
             if(can==0)
             System.out.println("Bulmanız gereken sayı : "+ tahminEdilcekSayi);
                     }
             if(can==0)
             System.out.println("Bulmanız gereken sayı : "+ tahminEdilcekSayi);
             }
         else
         System.out.println("Hatalı tuşlama yaptınız..");
     }
 }

Yukarıda oluşturduğumuz isterler doğrultusunda birçok çözüm yolu ile yapılabilecek bu kodu ben böyle tasarladım. Gerçekten birbirini tekrar eden kod sayısının fazlalığını görüyorsunuz . Bu yüzden bu çözüm çokta sağlıklı değil. Ama yine de gelin tasarladığımız bu oyuna bi’ şans verelim 🙂

Java Sayı Tahmin Oyunu Çıktısı
Java Sayı Tahmin Oyunu

Birkaç fonksiyon yazıp onları kullanarak belki de yarı yarıya verim sağlayabiliriz. Fakat ben burada başta belirttiğim gibi programlamaya, javaya yeni başlayanların anlayabileceği düzeyde kodlamamı yaptım. Başka bir örnekte programcılığın temel kurallarından Kendini Tekrar Etme! mottosuna uygun kodlamalar yapacağız. Bu örnekte anlamadığınız, veya sormak istedikleriniz için bana ulaşabilirsiniz. Umarım herkesin işine yaramıştır. Başka bir yazıda görüşmek üzere <3 C358