[Java video 12] Adam asmaca örneğindeki karmaşayı bir objeye taşımak

preview_player
Показать описание
Рекомендации по теме
Комментарии
Автор

harika düşünülmüş, hele hocanın kodunun sadeliğine bakın, birde benim kodumun karmaşıklığına:

package adamAs;

import java.util.Scanner;
//Oyunda hile bulunmaktadır, 2 kez 0 değerini girerseniz oyunu kazanırsınız
public class mainAdamAs {

public static void kontrolEt(int kBoyut, String kelime, char harf, int hata, char[]tutanlar, char[]hatalar, int i) { Scanner scan=new Scanner(System.in);

int tutan=0, temp=0, hile;

while(1==1) { System.out.println();
{ //hata sayısına göre şekil çizer. 8.hata da oyun biter.
1: System.out.print(" __\n"); System.out.println(); break;

2: System.out.print(" __\n"); System.out.print(" |"); System.out.println(); break;

3: System.out.print(" __\n"); System.out.print(" |");
O"); System.out.println(); break;

4: System.out.print(" __\n"); System.out.print(" |");
O");
/"); System.out.println(); break;

5: System.out.print(" __\n"); System.out.print(" |");
O");
/"); System.out.print("|"); System.out.println(); break;

6: System.out.print(" __\n"); System.out.print(" |");
O");
/"); System.out.print("|"); System.out.print("\\"); System.out.println();


7: System.out.print(" __\n"); System.out.print(" |");
O");
/"); System.out.print("|"); System.out.print("\\");
/"); System.out.println(); break;

8: System.out.print(" __\n"); System.out.print(" |");
O");
/"); System.out.print("|"); System.out.print("\\");
/"); System.out.println(" \\");
Over"); System.exit(0); break;
break;
}
tutan=0;
girin:"); //kullanıcıdan harf alınır

if(harf=='0') { System.out.print("0)Harfi girin:"); //harf 0'a eşitse bir daha harf istenir. Yine 0 girilse oyun kazanılır(hile)
hile=scan.nextInt();
if(hile==0)
System.exit(0);}
}

for(int j=0;j<kBoyut;j++) if(tutanlar[j]==harf || hatalar[j]==harf) { //aynı harf bir daha girilince uyarı veren kod
System.out.print("\nBu harfi daha önceden girmiştiniz!!!"); kontrolEt(kBoyut, kelime, harf, hata, tutanlar, hatalar, i); }
//kodu tekrar başa sardırır, hata ve i değerinin sıfırlanmaması için onları da yollamak için zaten metodun parametresine onları yazdık.
for(int j=0;j<kBoyut;j++) { //kelimeyi yazdıran kod. Kelime tutarsa hata sayısını bulmak için tutan değişkineni 1 arttırır. Detay aşağıda
') { System.out.print(" "); tutanlar[j]=' '; }
if(tutanlar[j]!='\0')
if(kelime.charAt(j)==harf) { System.out.print(harf); tutanlar[j]=harf; tutan++; }
System.out.print("_ ");

j=0;j<kBoyut;j++) //boş olmayan tutan harf sayısı kadar değeri olan bir temp değişkeni oluştururuz
temp++;
değişkeninin boyutu dizi boyutuna eşitse demekki tüm harfler tutmuştur. yani oyun bitmiştir.
{ System.exit(0); }
temp=0; //temp'i sıfırlamalıyız ki hata olmasın, 67.satır doğru şekilde çalışşın.

{ hata++; hatalar[i]=harf; i++; }
tutan olmazsa demek ki hata vardır, hatayı hatalar dizisinde tutarız.
}
}


public static void main(String args[]) { Scanner scan=new Scanner(System.in);

kelimeVer.isim = "xyz";
//bu değeri metodla yollamak için şimdilik öylesine önemsiz bir değer verdik.Vermesek 79.satır olsa bile 90.kod hata verir
String kelime= //kelimeVer sınınfda oluşturulan 10 kelimeden 1'i rastgele verilir
char harf='x'; //bu parametreyi fonksiyona yollamak için şimdilik rastgele, önemsiz bir değer verdik.
int kBoyut=kelime.length(); //sürekli length metodunu kullanmamak için kelime boyutunu bir değişkende tutarız.

for(int i=0;i<kBoyut;i++) //kelimeye göre boşluk ve çizgi sayısı ekrana yazılır.
{
if(kelime.charAt(i)==' ') System.out.print(" ");
else System.out.print("_ ");
}
char[] tutanlar=new char[kBoyut]; //1 kez tutan harfi artık hep yazdırsın diye tutan harfleri tutanlar dizisinde saklarız.
char[] hatalar=new char[8];//aynı hatalı harfi 2 den fazla girmesini engellememize yardımcı olacak hatalı harfleri barındıran dizi
kontrolEt(kBoyut, kelime, harf, 0, tutanlar, hatalar, 0);
//geri kalan işlemleri kontrolEt metodunda yapıcaz. 0'lar hata ve i değerleridir. Detaylar yukarıda

}
}

maarifhasan