import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
// Soyut sınıf: Soru
abstract class Soru {
protected String metin;
protected String cevap;
protected ArrayList<String> siklar;
// Soyut metot: soruYazdir
public abstract void soruYazdir();
// Cevap kontrolünü gerçekleştiren metot
public boolean cevapKontrol(String kullaniciCevabi) {
return kullaniciCevabi.equalsIgnoreCase(cevap);
}
}
// Çoktan seçmeli soru sınıfı
class CoktanSecmeliSoru extends Soru {
public CoktanSecmeliSoru(String metin, String cevap, ArrayList<String> siklar) {
this.metin = metin;
this.cevap = cevap;
this.siklar = siklar;
}
// Soyut metodu uygulama: soruYazdir
@Override
public void soruYazdir() {
System.out.println("Soru: " + metin);
for (String sik : siklar) {
System.out.println(sik);
}
}
}
// Soru bankası sınıfı
class SoruBankasi {
private ArrayList<Soru> sorular;
private int soruSayisi;
public SoruBankasi() {
sorular = new ArrayList<>();
soruSayisi = 0;
}
// Soru ekleme metodu
public void soruEkle(Soru soru) {
sorular.add(soru);
}
// Rastgele bir soru döndüren metot
public Soru rastgeleSoruAl() {
Random random = new Random();
int index = random.nextInt(sorular.size());
return sorular.get(index);
}
// Soru sayısını döndüren metot
public int getSoruSayisi() {
return soruSayisi;
}
// Soru sayısını ayarlayan metot
public void setSoruSayisi(int soruSayisi) {
this.soruSayisi = soruSayisi;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Soru bankası oluşturma
SoruBankasi soruBankasi = new SoruBankasi();
// Çoktan seçmeli soruları ve şıkları ekleme
ArrayList<String> siklar1 = new ArrayList<>();
siklar1.add("a) Venüs");
siklar1.add("b) Mars");
siklar1.add("c) Jüpiter");
siklar1.add("d) Satürn");
soruBankasi.soruEkle(new CoktanSecmeliSoru("Hangi gezegen Güneş Sistemi'nde 4. sırada yer alır?", "b", siklar1));
ArrayList<String> siklar2 = new ArrayList<>();
siklar2.add("a) 3");
siklar2.add("b) 4");
siklar2.add("c) 5");
siklar2.add("d) 6");
soruBankasi.soruEkle(new CoktanSecmeliSoru("2+2 kaç eder?", "b", siklar2));
ArrayList<String> siklar3 = new ArrayList<>();
siklar3.add("a) Evet");
siklar3.add("b) Hayır");
siklar3.add("c) Belki");
siklar3.add("d) Bilmiyorum");
soruBankasi.soruEkle(new CoktanSecmeliSoru("Java bir programlama dili midir?", "a", siklar3));
// Soruları sorma
int soruSayisi = 0;
int toplamPuan = 0;
while (true) {
Soru soru = soruBankasi.rastgeleSoruAl(); // Polimorfizm: Farklı türlerdeki soruları aynı şekilde ele alıyoruz
soru.soruYazdir(); // Polimorfizm: Farklı alt sınıflardaki metotları aynı şekilde çağırıyoruz
System.out.print("Cevabınızı girin (a, b, c veya d): ");
String kullaniciCevabi = scanner.next().toLowerCase();
if (soru.cevapKontrol(kullaniciCevabi)) { // Polimorfizm: Farklı alt sınıflardaki metotları aynı şekilde kullanıyoruz
System.out.println("Doğru!");
toplamPuan += 10;
} else {
System.out.println("Yanlış! Doğru cevap: " + soru.cevap);
}
soruSayisi++;
if (soruSayisi >= 3) {
System.out.print("Devam etmek istiyor musunuz? (evet/hayır): ");
String devam = scanner.next().toLowerCase();
if (!devam.equals("evet")) {
break;
}
soruSayisi = 0;
}
}
System.out.println("Toplam puanınız: " + toplamPuan);
scanner.close();
}
}