Şimdi Ara

Java Soru Oyunu Yardım Lütfen

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
1.447
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Başla butonuna basıldığında oyun başlayacak ve program soru sormaya başlayacak sorular ve cevapları yazdım karşılaştırma ifadeleri felan da var fakat bu actionperformed olayı kafamı karıştırıyor kaynakta bulamadım başla butonuna bastığımız zaman oyun başlayacak ve harflerle ilgili sorular gelmeye başlayacak ve OK butonuna bastığım zaman soruyu karşılaştıracak doğruluğunu yanlışlığını bunu bir for ile 20 harf için yapmam lazım fakat yapamıyorum yardımcı olursanız çok sevinirim

     Java Soru Oyunu Yardım Lütfen


     
    package remzi.bahadır;

    import java.awt.Color;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;

    public class passaparola extends JFrame implements ActionListener{
    public JButton dogrubutonu=new JButton("dogrusayisi");
    public JButton baş=new JButton("BAŞLA");
    public JTextField cevap=new JTextField();
    public JLabel soru =new JLabel("Sorunuz: ");
    public JLabel dogyaz=new JLabel("DOÄRU");
    public JLabel yanyaz=new JLabel("YANLIŞ");
    public JButton ds =new JButton("D.S:");
    public JButton ys=new JButton("Y.S:");
    public JLabel süre=new JLabel("Süre:");
    String[] pasdiz={"pas"};
    private ActionListener dinle;
    int butonsayısı=20;
    int dogrusay=0;
    String dogrusayısı="";
    int yanlıssay=0;
    String yanlışsayısı="";
    public static int k;
    public static String b;
    public JButton ok =new JButton("OK");
    public static String[][] pas = new String[20][2];
    public static int s;
    public JButton a[] = new JButton[butonsayısı];
    public static String sorucevap[][]={

    {"Türkiyenin başkenti neresidir?","Hristiyanlık da dinden çıkarma cezası?","Usandirici biktirici zorla yapilan is?","Akla ve gercege aykiri?","Nevşehirin çömlek yapımı ile meşhur ilçesi?","ankara","aforoz","angarya","abes","avanos"},
    {"Türkiye'nin 3. büyük tatlısu gölü?","Bayağı,Basit,Sıradan","Macaristan başkenti?","Saskinliga ugrayip ne yapacagini bilememek?","Önemli bir maden?","beyşehir gölü","banal","budapeşte","bocalamak","bor"},
    {"Ölüm cezalrını yerine getiren kişi?","Kahve pişiren alet?","Bir maddenin özü?","Bilgisiz?","Ara bozucu fitnece?","cellat","cezve","cevher","cahil","cazgır" },
    {"Madeni para basılan yer?","Danimarka dili?","Horozları ile meşhur ilimiz?","Deseni karelerden oluşan kumaş?","Gereksiz araç gereçle yapılan","darphane","dança","denizli","dantel","derme çatma"},
    {"Doğum yaptıran kişi?","Şırınga?","Gereksiz telaş yapmak?","Uzak ülkelerle ilgili olan","Bir şeyi elemek için kullanılan alet?","ebe","enjektör","evham","egzotik","elek"},
    {"Cezayir hangi ülkenin sömürgesinde idi?","Gerçekleştireni belli olmayan","Bir inşaat malzemesi","Toplu üretim yeri?","Muhteşem,kusursuz olan?","fransa","faili meçhul","fayans","fabrika","fevkalade"},
    {"Ekin biçme kaldırma işi?","Yüksek sesle bağırmak?","Olağandan yüksek atardamar basıncı?","İçine mürekkep konan küçük kap?","Düşmanlık?","hasat","haykırmak","hipertansiyon","hokka","husumet"},
    {"Bir şeye meraklı olmak?","Ad?","Bir kimse veya bir şeyi benzerlerinden ayrı tutma?","Tren,metro durağı?","Çok dikkat etmek","ilgi","isim","istisna","istasyon","itina"},
    {"Bakanlar kurulu?","Alın yazısı,yazgı?","Bir işte görev alan kişiler?","Karayolunda bulunan bozukluk vr cukurlar?","Uçakta yolcuların oturduğu bölüm","kabine","kader","kadro","kasis","kabin"},
    {"Adını tavuktan alan oyun?","Süt şekeri?","Yanardağdan fışkıran erimiş kızgın madde?","Şehzadelerin özel eğitmeni?","Parlak ışın?","lades","laktoz","lav","lala","lazer"},
    {"İskambil de bir kağıt dizisi?","Yazın karadan esen rüzgar?","Olası?","El ve ayak tırnaklarının bakımı?","Uygun?","maça","meltem","mümkün","manikür","makul"},
    {"Silahın ucundaki boru?","Kuşak rejenerasyn?","Evliliğin resmi işlemi?","Müzik yazısı?","Duvarda bırakılan oyuk?","namlu","nesil","nikah","nota","niş"},
    {"İçinde su biriken çukur yer?","İşyeri,büro?","Yaylı,telli,üflemeli çalgılardan oluşan topluluk?","Motorlu taşıt üreten sanayi dalı?","Bozulmuş şeyleri yapmak","obruk","ofis","orkestra","otomotiv","onarmak"},
    {"Ucuz olmayan?","İndirim yaptırmaya çalışmak?","Çiçek tozu?","Yunan mitolojisinde uçan at?","Bir kuş?","pahalı","pazarlık","polen","pegasus","papağan"},
    {"İki yüzlülük?","Osmanlı devletinin balkanlardaki toprakları?","Gemilerin yük alıp boşalttığı yer?","Akla uygun olan","Yarış içinde olma?","riya","rumeli","rıhtım","reel","rekabet"},
    {"Süsü gösterişi olmayan?","Bir skor karşılaşmasının sayı olarak sonucu?","Oteller de birçok odaya sahip olan bölüm?","Mürekkep balığından alınan koyu renk","İşçi haklarını korumak için kurulmuş tüzel kişilik","sade","skor","suit","sepya","sendika"},
    {"Savurgan,müsrif?","Balık avlamak için yapılmış bir ağ türü?","Beklenmedik anda gelişen hava akımı?","Dik yere çıkmak?","Karadeniz de bir ilimiz?","tutumsuz","trol","trübülans","tırmanmak","trabzon"},
    {"Elektrik gerilimi bilimi?","Birinin yerine geçen?","Bir bağlaç?","Baytar?","Sodalı gölümüz?","volt","vekil","ve","veteriner","van gölü"},
    {"Yapılmaması gereken?","Gök cisminin izlediği yol?","Yere serilen ince uzun halı","Ruhi yaşama egemen olmayı amaçlayan felsefe?","Bir tür sürüngen?","yasak","yörünge","yolluk","yoga","yılan"},
    {"İç içe geçmiş sehpa takımı?","Düşünüş biçimi?","Taban döşeme yer?","Hakkari ilimzde bulunan rafting yapılan ırmak?","İçine mektup koyulan şey?","zigon","zihniyet","zemin","zap","zarf"}



    };

    public static String[] buttons = {"A","B","C","D","E","F","H","Ä°","K","L","M","N","O","P","R","S","T","V","Y","Z"};
    public passaparola()
    { add(yanyaz);
    add(dogyaz);
    add(süre);
    add(soru);
    add(ds);
    add(ys);
    add(baş);
    add(cevap);
    add(ok);



    baş.setBounds(250,285,80,30);
    cevap.setBounds(120,250,150,30);
    ok.setBounds(165,280,60,35);
    soru.setBounds(70,150,260,30);
    dogyaz.setBounds(90,50,100,50);
    ds.setBounds(90,83,42,42);
    yanyaz.setBounds(270,50,100,50);
    ys.setBounds(270,83,42,42);
    süre.setBounds(150,110,30,30);



    ds.setBackground(Color.green);
    ys.setBackground(Color.red);

    //butonları bir dizi de topluyoruz
    for(int i=0; i<butonsayısı; i++)
    {
    a[i] = new JButton(buttons[i]); //belirttiğimiz sayı kadar for ile buton oluşturuluyor
    }
    for(int j=0;j<=19;j++)
    {
    add(a[j]); //botonları penceremize ekliyoruz
    }
    a[0].setBounds(20,20,45,45);
    a[1].setBounds(85,20,45,45);
    a[2].setBounds(150,20,45,45);
    a[3].setBounds(215,20,45,45);
    a[4].setBounds(280,20,45,45);
    a[5].setBounds(345,20,45,45);
    a[6].setBounds(345,80,45,45);
    a[7].setBounds(345,140,45,45);
    a[8].setBounds(345,200,45,45); //butonların tek tek kordinatlarını veriyoruz
    a[9].setBounds(345,260,45,45);
    a[10].setBounds(345,320,45,45);
    a[11].setBounds(280,320,45,45);
    a[12].setBounds(215,320,45,45);
    a[13].setBounds(150,320,45,45);
    a[14].setBounds(85,320,45,45);
    a[15].setBounds(20,320,45,45);
    a[16].setBounds(20,260,45,45);
    a[17].setBounds(20,200,45,45);
    a[18].setBounds(20,140,45,45);
    a[19].setBounds(20,80,45,45);

    setLayout(null);
    setVisible(true);
    setSize(423,423);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    baş.addActionListener(this);
    ok.addActionListener(this);
    }

    public static void main(String [] args){
    passaparola remzi=new passaparola();
    }




    public void actionPerformed(ActionEvent e) {

    if (e.getSource()==baş) {
    dogrusayısı = Integer.toString(dogrusay);
    yanlışsayısı = Integer.toString(yanlıssay);
    ds.setText(dogrusayısı);
    ys.setText(yanlışsayısı);
    soru.setText(null);

    k=(int)(Math.random()*5);
    b=sorucevap[0][k];
    soru.setText(b);



    if (e.getSource()==ok) {


    if(sorucevap[0][k+5].equalsIgnoreCase(cevap.getText())==true)
    {
    a[0].setBackground(Color.green);
    dogrusay= dogrusay+1;
    dogrusayısı = Integer.toString(dogrusay);
    ds.setText(dogrusayısı);
    }
    if(sorucevap[s][k+5].equalsIgnoreCase(cevap.getText())==false && (pasdiz[0].equalsIgnoreCase(cevap.getText())==false ))
    {
    a[0].setBackground(Color.red);
    yanlıssay=yanlıssay+1;
    yanlışsayısı=Integer.toString(yanlıssay);
    ys.setText(yanlışsayısı);
    }
    if(pasdiz[0].equalsIgnoreCase(cevap.getText())==true)
    {
    a[0].setBackground(Color.yellow);
    pas[0][0]=sorucevap[0][k];
    pas[0][1]=sorucevap[0][k+5];
    }
    }
    }



    }


    }



    < Bu mesaj bu kişi tarafından değiştirildi SyNeRGeNIX -- 18 Aralık 2013; 20:51:11 >







  • Bana kalırsa bunu yapmak için for döngüsüne ihtiyacın yok. Zaten harfin kadar tuşu koymuşsun, oyunun mantığını bilmiyorum ama sanırım kullanıcı istediği harfe basıp o harfin baş harfi olduğu cevaplardan oluşan bir soruyu cevaplayacak.
  • welrocken W kullanıcısına yanıt
    kullanıcı istediği soruyu cevaplamayacak bütün soruları cevaplayacak.mantık da passaparola oyunu tarzında (yani sorulan soruların cevabı,butonların üzerinde ki harflerle başlıyor).karşılaştırma ifadeleri falan yazıldı tek sıkıntı actionperformed de başlaya basıldığı zaman oyun başlayacak ve soru sorunca biz textfield e cevabı girecegiz.ok butonuna bastığımız zaman da cevabımızı karşılaştırma yapacak.
  • quote:

    Orijinalden alıntı: SyNeRGeNIX

    kullanıcı istediği soruyu cevaplamayacak bütün soruları cevaplayacak.mantık da passaparola oyunu tarzında (yani sorulan soruların cevabı,butonların üzerinde ki harflerle başlıyor).karşılaştırma ifadeleri falan yazıldı tek sıkıntı actionperformed de başlaya basıldığı zaman oyun başlayacak ve soru sorunca biz textfield e cevabı girecegiz.ok butonuna bastığımız zaman da cevabımızı karşılaştırma yapacak.

    Bütün soruları ama istediği sırayla değil mi? Öyleyse for'a gerek yok bence. Yapamadığın şey nedir? Kodunu çalıştıramıyorum şuanda, deneme şansım yok. Başlatma olayını temel bir şekilde visible özellikleriyle yapabilirsin. Yani oyun başlamadan önce sorular ve cevaplar ile ilgili herşey görünmez olacak, başla tuşuna basınca başla tuşu kaybolacak ve diğer herşey görünür olacak. Kodunu açamadığım için neyi yapıp neyi yapmadığını göremiyorum dediğim gibi, tam olarak neleri yapmadığını söylersen belki yardımcı olabilirim.




  • welrocken W kullanıcısına yanıt
    hocam bu aşamada ne yapıyor mesela a harfi için bir random sayı oluşturuyor o soruyu alıyor JLabela atıyor ondan sonra biz textfielde değer giriyor ve ok tıklıyoruz biz bunu dedikten doğruysa o buton yeşil yanlışsa kırmızı pas dediyse sarı yanacak dogru yanlış sayısını artırcak ve diger harfle ilgili soruya geçeçek ben bu aşamaların hepsini tek tek yapmaktansa bi for oluşturmak istiyorum yarışmacı başlaya bastığı zaman bu for devreye girsin ve bütün sorular için bu işlemi gerçeklerştirsin.yapamadığım şey actionperformed olayı.hep sıkıntı veriyor

    uygulama istediği sırayla değil yarışmacı başlaya basınca ilk a hrfi ile ilgili soru daha sonra b böyle böyle alfabetik sıraya göre sonuna kadar yani zye kadar gidecek bizim koyduğumuz a b c vb butonların üzerine basmayacağız sadece başla ve ok butonuna basacağız

    public void actionPerformed(ActionEvent e) { 

    if (e.getSource()==baş) {
    dogrusayısı = Integer.toString(dogrusay);
    yanlışsayısı = Integer.toString(yanlıssay);
    ds.setText(dogrusayısı);
    ys.setText(yanlışsayısı);
    soru.setText(null);

    k=(int)(Math.random()*5);
    b=sorucevap[0][k];
    soru.setText(b);



    if (e.getSource()==ok) {


    if(sorucevap[0][k+5].equalsIgnoreCase(cevap.getText())==true)
    {
    a[0].setBackground(Color.green);
    dogrusay= dogrusay+1;
    dogrusayısı = Integer.toString(dogrusay);
    ds.setText(dogrusayısı);
    }
    if(sorucevap[s][k+5].equalsIgnoreCase(cevap.getText())==false && (pasdiz[0].equalsIgnoreCase(cevap.getText())==false ))
    {
    a[0].setBackground(Color.red);
    yanlıssay=yanlıssay+1;
    yanlışsayısı=Integer.toString(yanlıssay);
    ys.setText(yanlışsayısı);
    }
    if(pasdiz[0].equalsIgnoreCase(cevap.getText())==true)
    {
    a[0].setBackground(Color.yellow);
    pas[0][0]=sorucevap[0][k];
    pas[0][1]=sorucevap[0][k+5];
    }
    }
    }



    < Bu mesaj bu kişi tarafından değiştirildi SyNeRGeNIX -- 18 Aralık 2013; 21:45:06 >




  • Tamam soru kısmını anladım. ActionPerformed tuşa basılması anlamına geliyor sanırsam. Şöyle birşey yapabilirsin;
    aktifSoruSayisi adında bir değişken tanımla. Başlaya basıldığında bu 0 olsun. Daha sonra actionPerformed'da bunu 1 artır. Yine fora gerek yok, daha doğrusu klasik for döngüsünü kullanırsan zaten senin program çalışmaz, for döngüsü bitmeden başka bir işlem yapamazsın (multi threading kullanmıyorsan), yani sen for döngüsünde soruyu soracaksın kullanıcıdan cevabı vermesini bekleyeceksin, ama bu işlem işletim sistemi tarafından yapılan bir işlem ve for döngüsü bitmeden yapılmaz. Uzun lafın kısası for döngüsünü burada kullanma, benden sana tavsiye. Kullanman gereken şey ise yukarıda da dediğim gibi aktifSoruSayisi değişkeni. Kullanım şekline gelecek olursak, sorunun cevabı onaylandığında (senin dediğine göre ok'a basıldığında) sorunun cevabı doğruda olsa yanlış da olsa bu değer 1 artırılacak. Daha sonra soru ile ilgili işlem bittiğinde (puanı artırma veya ne varsa) soruyu gösterdiğin yerde şunu yapacaksın;

    soruyuGosterdiginNesne.Text = sorucevap[aktifSoruSayisi][0];//Label kullandığını tahmin ediyorum

    Cevaplar için de;
    cevap1Nesnesi.Text = sorucevap[aktifSoruSayisi][1];
    cevap2Nesnesi.Text = sorucevap[aktifSoruSayisi[2];
    ve diğer iki şık

    Tabii bu yöntemi kullanırken bir şeye dikkat etmen lazım, son soruya gelindiğinde bu aktifSoru bir daha artırılmayacak. Bunun için de bir şart ekleyeceksin actionPerformed'a aktifSoruSayisi >= 20 ise oyunu bitireceksin. Bu yazdıklarımı bir dene, olmazsa proje dosyanı bir gönder ben deniyeyim. Hiç olmadı forumda bir sürü javacı var yarına öteki güne daha net cevaplar alırsın. Kolay gelsin



    < Bu mesaj bu kişi tarafından değiştirildi welrocken -- 18 Aralık 2013; 22:08:55 >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.