İPUCU

Java Object Oriented Programming temeline dayanan, çok işlevli, step by step işleyen dilin dökümanlarının paylaşım alanı.

Seçenekler

Java İle İlk Projem

ahm1453 - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2016
Nereden:
yok
Mesajlar:
28
Konular:
9
Teşekkür (Etti):
12
Teşekkür (Aldı):
1
Ticaret:
(0) %
21-04-2018 00:58
#1
Java İle İlk Projem
İlk yaptığım sayı tahmin oyununun kodlarını buldum paylaşmak istedim

Kod:
import java.util.Random;
import java.util.Scanner;

public class OyunMain {
	public static **** main(String[] args) {
		Random rnd = new Random();
		Scanner scn = new Scanner(System.in);
		
		System.out.println("Kaç tahmin hakkı istersiniz?");
		int hakSayi = scn.nextInt();
		
		System.out.println("1- kaç arası tahmin istediğinizi giriniz");
		int maksSinir = scn.nextInt();
		
		int randomSayi = rnd.nextInt(maksSinir)+1;
		
		int tahmin = 0;
		int i = 0;
		for(i=1;i<= hakSayi;i++) {
			System.out.println(i+". tahmininiz!");
			tahmin = scn.nextInt();
			
			if(tahmin < randomSayi) System.out.println("Daha yüksek bir sayı giriniz");
			else if(tahmin > randomSayi) System.out.println("Daha küçük bir sayı giriniz");
			else if(tahmin == randomSayi) {Kazandin(i); break;}
		}
		if  (i == hakSayi+1) {
			System.out.println("Yeniden oynamak ister misin? ");
			System.out.println("Evet - 1, Hayır - 2");
			int k = scn.nextInt();
			if(k ==1 ) {
				System.out.println("\n\n\n\n\n\n");
				main(null);
			}
			else if(k==2) System.out.println("\n\n\n\n\nİyi günler!");
			
			else {
				System.out.println("Lütfen geçerli bir sayı giriniz!");
			}
		}


		
	}

	private static **** Kazandin(int kachak) {
		System.out.println("\n\n\n\n\n");
		System.out.println("TEBRİKLER!" + kachak + ". hakkınızda kazandınız");
		System.out.println("Yeniden oynmak ister misiniz ?");
		System.out.println("Evet - 1, Hayır - 2");
		Scanner scn = new Scanner(System.in);
		int i = scn.nextInt();
		
		if(i ==1 ) {
			System.out.println("\n\n\n\n\n\n");
			main(null);
		}
		else if(i==2) System.out.println("\n\n\n\n\nİyi günler!");
		
		else {
			System.out.println("Lütfen geçerli bir sayı giriniz!");
		}
	}
	
}
zztri Teşekkür etti.
rareg - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
03/2018
Nereden:
🆁
Mesajlar:
663
Konular:
29
Teşekkür (Etti):
41
Teşekkür (Aldı):
93
Ticaret:
(0) %
21-04-2018 01:03
#2
Gerçekten sen kodladıysan tebrik ederim
---------------------

















"Guys, We have a traitor"
Konu R4V3N tarafından (24-04-2018 02:44 Saat 02:44 ) değiştirilmiştir.
zztri - ait Kullanıcı Resmi (Avatar)
Geliştirici
Üyelik tarihi:
07/2015
Nereden:
Ankara
Mesajlar:
9.357
Konular:
68
Teşekkür (Etti):
1767
Teşekkür (Aldı):
3962
Ticaret:
(0) %
21-04-2018 08:30
#3
Geçerli işlem girmediklerinde programdan çıkıyor ... Kazandın fonksiyonu içinde geçerli işlem seçilene kadar süren bir while döngüsü olmalıydı...

Ufacık bir sorun daha var; alışkanlık haline gelirse ilerde başına bela açar. Kişi her kazandığında "Kazandın" fonksiyonu çağrılıyor, o da main fonksiyonunu geri çağırıyor.

Normalde bu kod bilgisayar tarafından işlenirken, yazdığın her fonksiyon bir "routine"e dönüştürülür. Bilgisayar hangisine gitti, bittiğinde hangisine dönecek hatırlamak için bir stack - yığın içinde bunların adreslerini tutar. Kullanıcı her kazandığında ve tekrar oynamak istediğinde, sen oraya iki tane adres yazdırıyorsun, ama aslında programında aynı noktaya dönüyorsun.

Yani bir süre devam ettiğini düşünelim; bilgisayarın diyor ki: "şimdi main'deyim, bitince kazandın'a döneceğim, o bitince main'e, o bitince kazandın'a, o bitince main'e.......".. Her devam edilen oyun için 16 byte hafızayı gereksiz yere kaybediyorsun. Yeterli miktarda bu durum devam ederse "Stack Overflow" hatası verecek.

Tabii stack boyutu, ezbere bilmesem de bir kaç mb'tır.. Hani tabii 16 byte 16 byte bu oyunun binlerce kez oynanması gerekir. Ama alışkanlık haline getirirsen, ciddi programlarında sebepsiz çökmeler yaşarsın. While döngülerini çalış üstad. Bir şey tek bir koşul harici tekrar tekrar çalışacaksa bunu "while" ile yaparsın.
--------------------- Gayrıresmi Trolleme Kulübü Kurucu Üyesi...

Sii Şarp: 430%
Site yapmah: 386%
Piieyçpii: 396.8%
Cava: 205%
Andıroyid: 37.9²%
Nodjiies: 196%
Sii artı artı: 342.333333334%
Yuniti: 154%
Paytın 304%
Bat dosyasıyla hedef çökertme: 96i+382√17%
BufGix - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
08/2015
Nereden:
Phobos/Space
Mesajlar:
1.023
Konular:
74
Teşekkür (Etti):
314
Teşekkür (Aldı):
444
Ticaret:
(0) %
22-04-2018 10:45
#4
Alıntı:
zztri´isimli üyeden Alıntı Mesajı göster
Geçerli işlem girmediklerinde programdan çıkıyor ... Kazandın fonksiyonu içinde geçerli işlem seçilene kadar süren bir while döngüsü olmalıydı...

Ufacık bir sorun daha var; alışkanlık haline gelirse ilerde başına bela açar. Kişi her kazandığında "Kazandın" fonksiyonu çağrılıyor, o da main fonksiyonunu geri çağırıyor.

Normalde bu kod bilgisayar tarafından işlenirken, yazdığın her fonksiyon bir "routine"e dönüştürülür. Bilgisayar hangisine gitti, bittiğinde hangisine dönecek hatırlamak için bir stack - yığın içinde bunların adreslerini tutar. Kullanıcı her kazandığında ve tekrar oynamak istediğinde, sen oraya iki tane adres yazdırıyorsun, ama aslında programında aynı noktaya dönüyorsun.

Yani bir süre devam ettiğini düşünelim; bilgisayarın diyor ki: "şimdi main'deyim, bitince kazandın'a döneceğim, o bitince main'e, o bitince kazandın'a, o bitince main'e.......".. Her devam edilen oyun için 16 byte hafızayı gereksiz yere kaybediyorsun. Yeterli miktarda bu durum devam ederse "Stack Overflow" hatası verecek.

Tabii stack boyutu, ezbere bilmesem de bir kaç mb'tır.. Hani tabii 16 byte 16 byte bu oyunun binlerce kez oynanması gerekir. Ama alışkanlık haline getirirsen, ciddi programlarında sebepsiz çökmeler yaşarsın. While döngülerini çalış üstad. Bir şey tek bir koşul harici tekrar tekrar çalışacaksa bunu "while" ile yaparsın.
Recursive pismanliktir
---------------------
~Cahile gelmez benden hayır

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı