Java Zar Atma Uygulaması

Doğru söylediniz. Buradan ilerlemek herkes için daha faydalı. Ayrıca benim önerdiğim çözümde eksik olabilir. Herkes görürse onu da geliştirme imkanım olur. Sadece ödev yapılsın mantığı ile dm den iletişim kurmak forum mantığına ters gerçekten. Uyardığınız için teşekkür ederim
 
Doğru söylediniz. Buradan ilerlemek herkes için daha faydalı. Ayrıca benim önerdiğim çözümde eksik olabilir. Herkes görürse onu da geliştirme imkanım olur. Sadece ödev yapılsın mantığı ile dm den iletişim kurmak forum mantığına ters gerçekten. Uyardığınız için teşekkür ederim
Rica ederim. Başkaları da yararlanınca bir işe yarıyor forumlar. Ayrıca ödevlerin cevaplarını direkt olarak forumlarda arayanlar var farklı bir durum. :D
İnsan hiç mi uğraşmaz, direkt sorunun fotoğrafını atan bile görmüştüm. En azından bu konuda belirli yerler eksik. Ayrıca tüm cevapları olduğu gibi verilmemesi de önemli bir detay. Kolay gelsin, iyi akşamlar. :)
 
Arkadaslar soyle bir kod yazdim ben paylasayim:
Zar
public class Zar {
private int sayi;
//Zarin kac yuzu olacagidir. Orn. normal zarlar 6 yuzlu olur.
private int maksSayi;

public Zar(int maksSayi) {
this.maksSayi = maksSayi;
}
//Maksimum sayiya kadar olan bir rastgele sayi uretir ve bu sayiyi saklar
public int zarAt(){
sayi = new Random().nextInt(maksSayi)+1;
return sayi;
}

public int getSayi() {
return sayi;
}

public void setSayi(int sayi) {
this.sayi = sayi;
}

public int getMaksSayi() {
return maksSayi;
}

public void setMaksSayi(int maksSayi) {
this.maksSayi = maksSayi;
}
}
Main
public class Main {
private boolean isRunning=true;
private Scanner scanner;
private ArrayList<Zar> zarListesi1,zarListesi2;

public static final String HOSGELDIN_MESAJI = "Zar atmak ister misiniz?";
public static final String ZAR_ATMAK_ISTERIM_MESAJI = "Zar at.";
public static final String GECMISE_BAKMAK_ISTERIM_MESAJI = "Zar gecmisine bak.";

private void baslat(){
scanner=new Scanner(System.in);
zarListesi1= new ArrayList<>();
zarListesi2= new ArrayList<>();
while(isRunning){
handleMenu();
}
}

private void handleMenu() {
System.out.println(HOSGELDIN_MESAJI);
System.out.println("1 ) "+ZAR_ATMAK_ISTERIM_MESAJI);
System.out.println("2 ) "+ GECMISE_BAKMAK_ISTERIM_MESAJI);
switch (scanner.nextInt()){
case 1:
zarlariAt();
break;
case 2:
zarGecmisiniYazdir();
break;
}
}

private void zarGecmisiniYazdir() {
for(int i =0;i<zarListesi1.size();i++){
System.out.println(zarListesi1.get(i).getSayi()+" "+zarListesi2.get(i).getSayi());
}
}

private void zarlariAt() {
Zar zar1 = new Zar(6);
Zar zar2 = new Zar(6);
zar1.zarAt();
zar2.zarAt();
System.out.println(zar1.getSayi()+" "+ zar2.getSayi());
System.out.println("Zarlari kaydetmek ister misiniz?");
System.out.println("1 ) Evet");
System.out.println("2 ) Hayir");
switch (scanner.nextInt()){
case 1:
zarlariKaydet(zar1,zar2);
break;
}
}

private void zarlariKaydet(Zar zar1, Zar zar2) {
zarListesi1.add(zar1);
zarListesi2.add(zar2);
}

public static void main(String[] args) {
new Main().baslat();
}
}
Projeyi direk indirmek isteyenler icin link
 
@pasaahmet Elinize sağlık. Güzel olmuş. Ben de @Pelin Kıymakçı nin kodlarının üzerine şöyle ekleme yapmıştım.

-Zar sonuçlarını ve hangi tura ait olduğu bilgisini tutmak için bir class:

Java:
import java.util.List;

public class ZarSonuc {
    private int turSayisi;
    private int zar1;
    private int zar2;
    
    
    
    public ZarSonuc(int turSayisi, int zar1, int zar2) {
        this.turSayisi = turSayisi;
        this.zar1 = zar1;
        this.zar2 = zar2;
    }
    
    public int getTurSayisi() {
        return turSayisi;
    }
    public void setTurSayisi(int turSayisi) {
        this.turSayisi = turSayisi;
    }
    public int getZar1() {
        return zar1;
    }
    public void setZar1(int zar1) {
        this.zar1 = zar1;
    }
    public int getZar2() {
        return zar2;
    }
    public void setZar2(int zar2) {
        this.zar2 = zar2;
    }

}

- Bu sonuçları kaydetmek için ZarSonuc listesi tipinde değişkeni ve 2 metotu olan olan bir class:
Java:
import java.util.ArrayList;
import java.util.List;

public class ZarKayit {

    private List<ZarSonuc> sonucList;
    
    
    public ZarKayit(){
        sonucList = new ArrayList<ZarSonuc>();
    }
    
    public void sonucKaydet(ZarSonuc zarSonuc) {
        this.sonucList.add(zarSonuc);
    }
    
    public void kayitYazdir(){
        
        System.out.println("---------");
        for(int i=0;i<sonucList.size();++i) {
            
            System.out.println(sonucList.get(i).getTurSayisi()+".nci tur icin:"
                                +"1.Zar:"+sonucList.get(i).getZar1()+", "
                                +"2.Zar:"+sonucList.get(i).getZar2());
        }
        System.out.println("---------");
        
    }
}

main de şöyle:
Java:
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        

        Scanner gir = new Scanner(System.in);
        int oyuncu1 = 100, oyuncu2 = 100;
        int zar1, zar2, sayac = 0;
        char s = 'd';
        
        //---------
        ZarKayit zarKayit = new ZarKayit();    //zar sonuclarini kaydedecek,yazdiracak
        ZarSonuc zarSonuc;
        //---------
        
        
        while(true) {
            System.out.println("Zar atmak için herhangi bir tuşa basınız...");
            s = gir.next().charAt(0);
            sayac++;
            System.out.println(sayac + ".tur");
            System.out.println("...ZARLAR ATILIYOR...");
            zar1 = (int) (1 + Math.random() * 6);
            zar2 = (int) (1 + Math.random() * 6);
            
            System.out.println("1.Zar " + zar1 + " geldi.");
            System.out.println("2.Zar " + zar2 + " geldi.");
            
            
            //=========
            System.out.println("Sonucu Kaydetmek Icin         'K' ya basiniz\n"
                              +"Programi sonlandirmak icin      'X' e basiniz\n"
                              + "devam etmek icin herhangi bir tusa basiniz\n\n");
            s = gir.next().charAt(0);
            if(s == 'K') {
                zarSonuc = new ZarSonuc(sayac, zar1, zar2);        //Son tur sonucuna gore yeni bir nesne olusturuldu.
                zarKayit.sonucKaydet(zarSonuc);                    //Bu nesne ile son tur sonucu kaydedildi.
                System.out.println("Kaydedildi");

            }else if(s == 'X'){
                System.out.println("Program Sonlandirildi !!");
                System.out.println("Mevcut Kayitlar:");
                zarKayit.kayitYazdir();                            //kaydedilmiş sonuclar yazdirildi..
                System.exit(0);
            }
            //==========
        }   
    }
}

Ama menü seçeneklerimi çok geliştiremedim. Daha da geliştirilebilir tabiki. Mesela kaydettikten sonra çıkış seçeneği yok bir tur daha zar atıp sonra çıkış yapmak zorunda kalıyorsunuz. @pasaahmet in menüsü daha güzel olmuş. ona benzer bişe yapılabilir.
Classları ekte zipledim.
@Pelin Kıymakçı Bu örnekler üzerinden ilerleyip kendinize has bir program yazarsanız sizin için daha faydalı olur. Constructor, getter-setter metotları vb. biliyor musunuz? Java bilginiz ne kadardır bilemiyorum. Ancak anlamadığınız kısımları sorabilirsiniz.
 

Ekli dosyalar

  • Desktop.rar
    1.3 KB · Görüntüleme: 5
@pasaahmet Elinize sağlık. Güzel olmuş. Ben de @Pelin Kıymakçı nin kodlarının üzerine şöyle ekleme yapmıştım.

-Zar sonuçlarını ve hangi tura ait olduğu bilgisini tutmak için bir class:

Java:
import java.util.List;

public class ZarSonuc {
    private int turSayisi;
    private int zar1;
    private int zar2;
   
   
   
    public ZarSonuc(int turSayisi, int zar1, int zar2) {
        this.turSayisi = turSayisi;
        this.zar1 = zar1;
        this.zar2 = zar2;
    }
   
    public int getTurSayisi() {
        return turSayisi;
    }
    public void setTurSayisi(int turSayisi) {
        this.turSayisi = turSayisi;
    }
    public int getZar1() {
        return zar1;
    }
    public void setZar1(int zar1) {
        this.zar1 = zar1;
    }
    public int getZar2() {
        return zar2;
    }
    public void setZar2(int zar2) {
        this.zar2 = zar2;
    }

}

- Bu sonuçları kaydetmek için ZarSonuc listesi tipinde değişkeni ve 2 metotu olan olan bir class:
Java:
import java.util.ArrayList;
import java.util.List;

public class ZarKayit {

    private List<ZarSonuc> sonucList;
   
   
    public ZarKayit(){
        sonucList = new ArrayList<ZarSonuc>();
    }
   
    public void sonucKaydet(ZarSonuc zarSonuc) {
        this.sonucList.add(zarSonuc);
    }
   
    public void kayitYazdir(){
       
        System.out.println("---------");
        for(int i=0;i<sonucList.size();++i) {
           
            System.out.println(sonucList.get(i).getTurSayisi()+".nci tur icin:"
                                +"1.Zar:"+sonucList.get(i).getZar1()+", "
                                +"2.Zar:"+sonucList.get(i).getZar2());
        }
        System.out.println("---------");
       
    }
}

main de şöyle:
Java:
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
       

        Scanner gir = new Scanner(System.in);
        int oyuncu1 = 100, oyuncu2 = 100;
        int zar1, zar2, sayac = 0;
        char s = 'd';
       
        //---------
        ZarKayit zarKayit = new ZarKayit();    //zar sonuclarini kaydedecek,yazdiracak
        ZarSonuc zarSonuc;
        //---------
       
       
        while(true) {
            System.out.println("Zar atmak için herhangi bir tuşa basınız...");
            s = gir.next().charAt(0);
            sayac++;
            System.out.println(sayac + ".tur");
            System.out.println("...ZARLAR ATILIYOR...");
            zar1 = (int) (1 + Math.random() * 6);
            zar2 = (int) (1 + Math.random() * 6);
           
            System.out.println("1.Zar " + zar1 + " geldi.");
            System.out.println("2.Zar " + zar2 + " geldi.");
           
           
            //=========
            System.out.println("Sonucu Kaydetmek Icin         'K' ya basiniz\n"
                              +"Programi sonlandirmak icin      'X' e basiniz\n"
                              + "devam etmek icin herhangi bir tusa basiniz\n\n");
            s = gir.next().charAt(0);
            if(s == 'K') {
                zarSonuc = new ZarSonuc(sayac, zar1, zar2);        //Son tur sonucuna gore yeni bir nesne olusturuldu.
                zarKayit.sonucKaydet(zarSonuc);                    //Bu nesne ile son tur sonucu kaydedildi.
                System.out.println("Kaydedildi");

            }else if(s == 'X'){
                System.out.println("Program Sonlandirildi !!");
                System.out.println("Mevcut Kayitlar:");
                zarKayit.kayitYazdir();                            //kaydedilmiş sonuclar yazdirildi..
                System.exit(0);
            }
            //==========
        }  
    }
}

Ama menü seçeneklerimi çok geliştiremedim. Daha da geliştirilebilir tabiki. Mesela kaydettikten sonra çıkış seçeneği yok bir tur daha zar atıp sonra çıkış yapmak zorunda kalıyorsunuz. @pasaahmet in menüsü daha güzel olmuş. ona benzer bişe yapılabilir.
Classları ekte zipledim.
@Pelin Kıymakçı Bu örnekler üzerinden ilerleyip kendinize has bir program yazarsanız sizin için daha faydalı olur. Constructor, getter-setter metotları vb. biliyor musunuz? Java bilginiz ne kadardır bilemiyorum. Ancak anlamadığınız kısımları sorabilirsiniz.
Kodun okunabilirligine hayran kaldim :) Elinize saglik guzel olmus.
 
Merhaba kodlarınız çok güzel olmuş merakımdan test etmek istedim ama olmadı. Hani IDE üzerinden test edebilirim? Visual Studio olur mu?
 
ben eclipse te yazdım ama java çalıştıran herhangi bir ide de olur diye düşünüyorum. VS Code da var ama Visual Studio da java eklentisi var mı bilmiyorum. O yüzden çalıştıramamış olabilirsiniz.
 
ben eclipse te yazdım ama java çalıştıran herhangi bir ide de olur diye düşünüyorum. VS Code da var ama Visual Studio da java eklentisi var mı bilmiyorum. O yüzden çalıştıramamış olabilirsiniz.
Şimdi eclips indiriyorum bakalım olacak mı. Teşekkürler. :D
Çalıştırmak için ide ye ihtiyacın yok Bu sayfayı açıklıyor nasıl olduğunu. Visual Studio Code kullaniyorsan java üzerinde çalışabilirsin ben IntelliJ öneririm ama.
ben eclipse te yazdım ama java çalıştıran herhangi bir ide de olur diye düşünüyorum. VS Code da var ama Visual Studio da java eklentisi var mı bilmiyorum. O yüzden çalıştıramamış olabilirsiniz.
Çok güzel açıklamışsınız ama ben yapamadım, uygulamayı merak ettim en azından ss atar mısınız nasıl bir şey olmuş diye. Kodlar ilgimi çeker ama çok uğraştırıcı geliyor. Teknik şeyler daha çok hoşuma gidiyor. :D
 
Son düzenleme:
Bu şekilde bir çıktısı var.
 

Ekli dosyalar

  • Capture.PNG
    Capture.PNG
    35.9 KB · Görüntüleme: 13

Forum istatistikleri

Konular
129,867
Mesajlar
930,872
Kullanıcılar
452,732
Son üye
erencok

Yeni konular

Geri
Üst