Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Calendar; //gecen zamani alabilmek icin
public class HucreButtonHandler extends Frame implements ActionListener {
/*
* Hucreler icin actionlistenerler gerceklestiriliyor.
*/
Hafiza hafiza2 = new Hafiza();
JPanel PnlHucreler = new JPanel();//hucreleri yerlestirilecek panel olusturuluyor.
JButton OyunuBitisiKontrlEt = new JButton();//jframe eklenmeden her hucre eslesmesinde tiklanarak hucrelerin bitisini kontrol edicek.
JButton OyunuBaslat = new JButton();//zamani almak icin kullanilacak fakat jframe eklenmeden yapilacak
JButton[] BtnHucre = new JButton[16];//hucreler olusturuluyor.
int[] HucreResmi = new int[16]; //random degerler alip bunlari r
int HucreSayaci; //hucrelerin tiklanma sayisini tutuyor.
ImageIcon[] BtnHucreResimleri = new ImageIcon[16];
ImageIcon BtnHucreilkResim = new ImageIcon(getClass().getResource("ilkResim.png"));//ilk resmi atamasi icin olusturuldu.
boolean FonksiyonuCagirma = true;
int AcikHucrelerinSayisi = 0, CozulmusHucrelerinSayisi = 0;
long OyununBaslangicZamani;
int[] SonTiklananButon = new int[2];
Calendar calendar;
public HucreButtonHandler() {
OyunuBaslat.addActionListener(this);//jrame eklenmeden kullanilan buton action listenera ekleniyor.
OyunuBitisiKontrlEt.addActionListener(this);//jrame eklenmeden kullanilan buton action listenera ekleniyor.
PnlHucreler.setLayout(new GridLayout(4, 4));//4 yatay,4 dusey sekilde yerlestiriliyor.
PnlHucreler.setBackground(Color.BLACK);
for (int i = 0; i < 16; i++) {
BtnHucre[i] = new JButton();
BtnHucre[i].setBackground(Color.BLACK);
BtnHucre[i].setEnabled(true);
BtnHucre[i].setName("00");
BtnHucre[i].setIcon(BtnHucreilkResim);
BtnHucre[i].addActionListener(this);
PnlHucreler.add(BtnHucre[i]);
}
HucreResimleriniRastgeleDagit();
}
public void HucreResimleriniRastgeleDagit() { //16 elemanli diziye birbiriniz ayni olmayan degerler atanmasi yapiliyor.
for (int i = 0; i < 16; i++) {
HucreResmi[i] = (int) (Math.random() * 16) + 1;
for (int j = 0; j < i; j++) {
if (HucreResmi[i] == HucreResmi[j] && i != j && i != 0) {
--i;
}
}
}
//degerler 1- 16(dahil)arasinda verildi.
for (int i = 0; i < 16; i++) {//burada 16 elemanli dizinin ayni 2 degere sahip 8 eleman olusturuldu.ve degerlerin karsilik gelen resim atandi.
HucreResmi[i] = (HucreResmi[i] % 8);
BtnHucreResimleri[i] = new ImageIcon(getClass().getResource(HucreResmi[i] + 1 + ".png"));
}
OyunuBaslat.doClick();//jframe ekli olmayan butonumu tiklanmasini saglayarak action listenerde zamani aldim.
}
void ikiSaniyeBeklet() {
Runnable runnable = new Runnable() {
public void run() {
try {
Thread.sleep(2000);
for (int i = 0; i < 16; i++) {
if (BtnHucre[i].isEnabled() == true) {
BtnHucre[i].setIcon(BtnHucreilkResim);
BtnHucre[i].setName("00");
HucreSayaci = 0;
SonTiklananButon[0] = 21;
SonTiklananButon[1] = 22;
}
}
} catch (InterruptedException ex) {
System.out.println("Thread uyurken sorun olustu..Hata:" + ex);
}
}
};
SwingUtilities.invokeLater(runnable);
}
public void AcikHucrelerinSayisi() { //ayni hucrelerin isenabledleri false olark degistiriliyor geriye acik olanlar kaliyor bu metod acik olnalri buluyor.
for (int i = 0; i < 16; i++) {
if (BtnHucre[i].isEnabled() == true) {
AcikHucrelerinSayisi++;
}
}
CozulmusHucrelerinSayisi = (16 - AcikHucrelerinSayisi) / 2;
if (!(AcikHucrelerinSayisi == 0)) {
AcikHucrelerinSayisi = 0;
} else {
OyunuBitisiKontrlEt.doClick();//eger Hic acik hucre kalmamissa oyun bitmis demektir bitir butonuna tiklanir.
}
}
public void actionPerformed(ActionEvent e) {
calendar = Calendar.getInstance();//suanki zamani alarak gecen sureyi guncelemek icin.
if (e.getSource() == OyunuBitisiKontrlEt) { //eger buna tiklanmissa oyun bitmis demektir hafiza sinifina deger gonderip sonucu ekrana yansittiktan sonra oyun kapatilir.
String BasariSonucu = hafiza2.BasariDurumu(2, CozulmusHucrelerinSayisi, (int) (calendar.getTimeInMillis() - OyununBaslangicZamani) / 1000);
JOptionPane.showMessageDialog(PnlHucreler, "Oyun Tamamlandi.Basari Durumunuz:" + BasariSonucu, "Oyun Tamamlandi", 1);
System.exit(0);
}
if (e.getSource() == OyunuBaslat) {//oyunun baslangicinda yada yeniden baslatilince rka planda tiklatarak su anki zamani almamizi sagliyor.
OyununBaslangicZamani = calendar.getTimeInMillis();//long tipinde ve milisaniye olar tutuyor.2 zaman dilimni cikartip 1000 bolunce saniye kaliyor.
} else {
FonksiyonuCagirma = true;
if ((HucreSayaci == 0) || (HucreSayaci == 1)) { //uyurken ki durumdn faydalanilmasin diye onlem alindi.
for (int i = 0; i < 16; i++) {
{
if (e.getSource() == BtnHucre[i]) {
SonTiklananButon[HucreSayaci] = i; //en son tiklanan butonu tutuyor.
if ((HucreSayaci == 0) || (SonTiklananButon[0] != SonTiklananButon[1])) {//son iki tiklanan butonu kiyaslayarak ard arda ayni butona basilmasina engel oluyor.
BtnHucre[i].setIcon(BtnHucreResimleri[i]);
BtnHucre[i].setName(String.valueOf(HucreResmi[i]));
HucreSayaci++;
for (int j = 0; j < 16; j++) {
if (e.getSource() == BtnHucre[i] && i != j && BtnHucre[i].getName().equals(BtnHucre[j].getName())) {
BtnHucre[i].setDisabledIcon(BtnHucreResimleri[i]);
BtnHucre[j].setDisabledIcon(BtnHucreResimleri[j]);
BtnHucre[j].setEnabled(false);
BtnHucre[i].setEnabled(false);
FonksiyonuCagirma = false;//ayni resim varsa 2 saniye bekletmeye gerek yok
}
}
}
}
}
}
}
if (HucreSayaci == 2 && FonksiyonuCagirma) {
ikiSaniyeBeklet();
}
if (!FonksiyonuCagirma) {//ayni hucre varsa sayaci sifirlamak gerekir.
HucreSayaci = 0;
SonTiklananButon[0] = 21;
SonTiklananButon[1] = 22;
}
AcikHucrelerinSayisi();//acik hucre varmi diye balk varsa bitis butnonu tetikle
}
}
}
public class Hafiza {
/*
* Burada oyunun durumu saklaniyor.gecen sure ile cozulen hucre sayisi bakilip oranina gore basari olcumu yapiliyor.
*/
public String BasariDurumu(int Cagri, int CozulenHucreSayisi, int GecenSure) {
if (Cagri == 2) { //bunu ancak oyun bitirme butonu cagirir.
int oran = GecenSure / CozulenHucreSayisi;
if (oran <= 8) {
returnSuper+ GecenSure +Saniyede Tamamladiniz.”;
} else if (8.5 < oran && oran <= 11.5) {
returnNormal+ GecenSure +Saniyede Tamamladiniz.”;
} else {
returnKotu+ GecenSure +Saniyede Tamamladiniz.”;
}
} else if (Cagri == 1) { //devam eden sure icerisinde bilgi alinmak istenilirse cagiriliyor.
if (!(CozulenHucreSayisi == 0)) { //ama cozulen hucre varsa olsum yapilir.
double oran = GecenSure / CozulenHucreSayisi;
if (oran <= 8.5) {
returnSuper+ GecenSure +Saniyede+ 2 * CozulenHucreSayisi +Hucre Eslestirdiniz”;
} else if (8.5 < oran && oran <= 11.5) {
returnNormal+ GecenSure +Saniyede+ 2 * CozulenHucreSayisi +Hucre Eslestirdiniz”;
} else {
returnKotu+ GecenSure +Saniyede+ 2 * CozulenHucreSayisi +Hucre Eslestirdiniz”;
}
} else { //yoksa uyarilir.
returnHesaplanmadi Cunku Acilan Hucre Yok”;
}
} else { //cagri parametreleri 2 veya 1 degilse ki 0 dır o zamanda oyunu bilgisayarin cozdugu anlasilir.
returnHesaplanmadi Cunku Oyunu Bilgisayar Cozdu”;
}
}
}
import javax.swing.*;
import java.awt.*; //frame
import java.awt.event.*; //action listener
import java.util.Calendar;
public class HafizaGUI extends Frame implements ActionListener {
/*
* Oyun 3 siniftan olusuyor.
* main yordami burada yani HafizaGUI de gerceklestiriliyor.
* Oyunun arayuzu,yeniden baslat,oyunu coz ,oyunu kapat,gecen sure,basari durumu ve destek icin action listener gerceklestiriyor.
*/
HucreButtonHandler hucrebuttonhandler = new HucreButtonHandler();
Hafiza hafiza = new Hafiza();
JFrame FrmFrame = new JFrame("<---HAFIZA OYUNU (BULENT SiYAH)-->");//Jframe olusturuldu.
JMenuBar MnUstMenum = new JMenuBar(); //menu bar olusturuldu.1-islemler 2-durum ve 3-destek olan menumuz var
JMenu MnIslem = new JMenu(" islemler "); //1-islemler menusunde 1.a-yeniden baslat 1.b-oyunu coz ve 1.c-oyunu kapat menu itemler bulunmakta.
JMenuItem MNIYeniOyun = new JMenuItem("Yeniden Baslat");
JMenuItem MNIOyunuCoz = new JMenuItem("Oyunu Coz");
JMenuItem MNIOyunuKapat = new JMenuItem("Oyunu Kapat");
JMenu MnDurum = new JMenu(" Durum ");//2-durum menumuzde 2.a-gecen sure ve 2.b-basari durumunuz isimli menu itemler bulunuyor.
JMenuItem MNIGecenSure = new JMenuItem("Gecen Sure");
JMenuItem MNIBasariDurumu = new JMenuItem("Basari Durumunuz");
JMenu MnDestek = new JMenu(" Destek ");//3-destek menusunde 3.a-oynama seklini isimli meu item olusturuldu.
JMenuItem MNIOyunOynanisi = new JMenuItem("Oynama Sekli");
int BasariDurumunuAktiflestir = 1; //oyunu bilgisayarin cozmesi halinde 1 degerinden farkli bir deger alacaktir.
HafizaGUI() {
FrmFrame.setSize(350, 360); //boyutlari
FrmFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//kapata basinca kapatilmasi icin
FrmFrame.setResizable(false);//boyutlarla oynanmasini engellemek icin
FrmFrame.setVisible(true);
FrmFrame.setLocationRelativeTo(null);//ekrani ortalayabilmesi icin
FrmFrame.setJMenuBar(MnUstMenum); //olusturulan menu bar jframe e,menu itemlerde de  menu ye ekleniyor.
MnUstMenum.add(MnIslem);
MnUstMenum.add(MnDurum);
MnUstMenum.add(MnDestek);
MnIslem.add(MNIYeniOyun);
MnIslem.add(MNIOyunuCoz);
MnIslem.add(MNIOyunuKapat);
MnDurum.add(MNIGecenSure);
MnDurum.add(MNIBasariDurumu);
MnDestek.add(MNIOyunOynanisi);
FrmFrame.add(hucrebuttonhandler.PnlHucreler);//Hucreler diger sinifta onlarda jframe ekleniyor.
MNIOyunuCoz.addActionListener(this);//toplam 6 olan menu itemlerin action listenerleri burada gerceklestirilecek.
MNIYeniOyun.addActionListener(this);
MNIOyunuKapat.addActionListener(this);
MNIGecenSure.addActionListener(this);
MNIBasariDurumu.addActionListener(this);
MNIOyunOynanisi.addActionListener(this);
}
private void YeniOyun() { //yeni oyuna tiklenince bu metod cagirilirdi.
for (int i = 0; i < 16; i++) { //tum hucrelere ilk resim ataniyor.
hucrebuttonhandler.BtnHucre[i].setIcon(hucrebuttonhandler.BtnHucreilkResim);
hucrebuttonhandler.BtnHucre[i].setEnabled(true);
hucrebuttonhandler.BtnHucre[i].setName("00");
}
hucrebuttonhandler.HucreResimleriniRastgeleDagit(); //diger siniftaki metod cagiriyor.resimler baslatn rnd yuklaniyor ve zaman sifirlaniyor.
hucrebuttonhandler.HucreSayaci = 0;//hucreler tik sayaci sifirlaniyor.
hucrebuttonhandler.AcikHucrelerinSayisi = 0;//tum degerler ilk haline donduruldu.
hucrebuttonhandler.SonTiklananButon[0]=21;
hucrebuttonhandler.SonTiklananButon[1]=22;
hucrebuttonhandler.CozulmusHucrelerinSayisi = 0;
BasariDurumunuAktiflestir = 1;
}
public void HucreleriCoz() {//butun hucreler acildi ve basari durumunu sorgulamayi engelkemek icin 0 degeri verildi.
for (int i = 0; i < 16; i++) {
hucrebuttonhandler.BtnHucre[i].setIcon(hucrebuttonhandler.BtnHucreResimleri[i]);
hucrebuttonhandler.BtnHucre[i].setName(String.valueOf(hucrebuttonhandler.HucreResmi[i]));
hucrebuttonhandler.BtnHucre[i].setDisabledIcon(hucrebuttonhandler.BtnHucreResimleri[i]);
hucrebuttonhandler.BtnHucre[i].setEnabled(false);
}
BasariDurumunuAktiflestir = 0;
}
public void actionPerformed(ActionEvent e) {
hucrebuttonhandler.calendar = Calendar.getInstance();//suanki zamani alarakgecen sureyi guncel tutmak icin.
if (e.getSource() == MNIOyunuKapat) { //oyunu kapat ise direkt oyun sonlandirilir.
}
if (e.getSource() == MNIYeniOyun) { //yeni oyun metodu cagrilir.
YeniOyun();
}
if (e.getSource() == MNIOyunuCoz) {//hucrelericoz metodu cagiriliyor.
HucreleriCoz();
}
if (e.getSource() == MNIGecenSure) {//oyunun basladigi andan itibaren gecen sure hesaplanir.
JOptionPane.showMessageDialog(FrmFrame, "Gecen Sure:" + (int) (hucrebuttonhandler.calendar.getTimeInMillis() - hucrebuttonhandler.OyununBaslangicZamani) / 1000 + " Saniye", "Oyun Devam Ediyor", 1);
}
if (e.getSource() == MNIBasariDurumu) {//hafiza sinifina parametreler gondererek bilgi bekleniyor.donen bilgiye gore message dialog cikiyor.
String BasariSonucu = hafiza.BasariDurumu(BasariDurumunuAktiflestir, hucrebuttonhandler.CozulmusHucrelerinSayisi, (int) (hucrebuttonhandler.calendar.getTimeInMillis() - hucrebuttonhandler.OyununBaslangicZamani) / 1000);
if (BasariDurumunuAktiflestir == 1) {
JOptionPane.showMessageDialog(FrmFrame, "Basari Durumunuz: " + BasariSonucu, "Oyun Devam Ediyor", 1);
} else {
JOptionPane.showMessageDialog(FrmFrame, BasariSonucu, "Oyun Zaten Cozulmus", 1);
}
}
if (e.getSource() == MNIOyunOynanisi) {//message diyalog ile oyun anlatiliyor.
JOptionPane.showMessageDialog(FrmFrame, "En Kisa Surede Hucrelerin Eslerini Bulmaya Calismalisiniz.Actiginiz Hucre Sayisi Gecen Sureye Bolunup Basariniz Olculecek.");
}
}
public static void main(String[] args) {
HafizaGUI hafizagui = new HafizaGUI();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.