Sedat DURMUŞ ve Programlama Sanatı
sedatdurmuscomputereng  
 
  Görsel labirent oluşturma kodları 14.03.2025 12:17 (UTC)
   
 

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h" ,#include <iostream>
#include <conio.h>
#include <time.h>
//fonksiyonlar-----
int kontrol(void);
int bitisikontrol(void);
void ilk_deger(void);
void guncelle(void);
void atama(void);
//değişkenler----
int boyut,t2,t,sutun,satir,bitis=0,hareketyon,a,b,kivrim_sayisi;
int ***L;
int **kulln_bil;
int **bitirilen;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
Graphics::TBitmap *resim=new Graphics::TBitmap();
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1Click(TObject *Sender)
{
   srand(time(NULL));
   atama();

   ilk_deger();
   guncelle();

   for(int i=1;i<boyut-1;i++){
   resim->LoadFromFile("1-1.BMP");
  DrawGrid1->Canvas->Draw(-5,i*40,resim);
}
  for(int i=0;i<boyut-1;i++){
   resim->LoadFromFile("1-1'.BMP");
  DrawGrid1->Canvas->Draw(i*40,40*(boyut-1),resim);
}
for(int i=0;i<boyut-1;i++){
   resim->LoadFromFile("1-1'.BMP");
  DrawGrid1->Canvas->Draw(5+i*40,0,resim);
}
for(int i=0;i<boyut-2;i++){
   resim->LoadFromFile("1-1.BMP");
  DrawGrid1->Canvas->Draw(40*(boyut-1),5+i*40,resim);
}

 bitis=bitisikontrol();
 while(bitis<(boyut*boyut)){

satir=rand()%boyut;
sutun=rand()%boyut;
    while(kulln_bil[satir][sutun]!=1){
    satir=rand()%boyut;
    sutun=rand()%boyut;
         }


     t2=0;
     a=-1;
     b=-1;

         while(t2<kivrim_sayisi){
                                if(kontrol()==0){
                                   bitirilen[satir][sutun]=1;
                                   kulln_bil[satir][sutun]=0;
                                         break;
                                                }
                            hareketyon=rand()%4;
                                  while(L[satir][sutun][hareketyon]!=1){
                                  hareketyon=rand()%4;
                                                                   }

                                  //------------------------1----------------
                                    if(hareketyon==1){
                                      L[satir][sutun][1]=0;
                                      if(kontrol()==0){
                                          bitirilen[satir][sutun]=1;
                                          kulln_bil[satir][sutun]=0;
                                          }
                                          if( kulln_bil[satir][sutun+1]!=1&&bitirilen[satir][sutun+1]!=1){

                                           sutun=sutun+1;

                                          kulln_bil[satir][sutun]=1;
                                          L[satir][sutun][0]=0;

                                          resim->LoadFromFile("1-1'.BMP");
                                          if(b==3)
                                         DrawGrid1->Canvas->Draw((sutun-1)*40,satir*40,resim);
                                          else if(b==1)
                                          DrawGrid1->Canvas->Draw((sutun-1)*40,satir*40,resim);
                                          else if(b==2)
                                          DrawGrid1->Canvas->Draw((sutun-1)*40,(satir)*40,resim);
                                            else
                                          DrawGrid1->Canvas->Draw((sutun-1)*40,(satir)*40,resim);
                                          t2++;
                                          b=hareketyon;
                                          if(t==1)
                                          a=hareketyon;
                                          }
                                                   }
                                     //--------------------------------3------
                                      if(hareketyon==3){
                                      L[satir][sutun][3]=0;
                                      if(kontrol()==0){
                                          bitirilen[satir][sutun]=1;
                                          kulln_bil[satir][sutun]=0;
                                          }
                                          if( kulln_bil[satir-1][sutun]!=1&&bitirilen[satir-1][sutun]!=1){
                                           satir=satir-1;
                                           kulln_bil[satir][sutun]=1;
                                           L[satir][sutun][2]=0;

                                           resim->LoadFromFile("1-1.BMP");
                                            if(b==1)
                                           DrawGrid1->Canvas->Draw((sutun)*40,(satir)*40,resim);
                                           else if(b==0)
                                           DrawGrid1->Canvas->Draw(((sutun)*40),(satir)*40,resim);
                                           else if(b==3)
                                           DrawGrid1->Canvas->Draw((sutun)*40,(satir)*40,resim);
                                           else
                                           DrawGrid1->Canvas->Draw((sutun)*40,(satir)*40,resim);
                                          t2++;
                                           b=hareketyon;
                                          if(t==1)
                                          a=hareketyon;
                                          }
                                                   }
                                          //-----------------2-----------------
                                          if(hareketyon==2){
                                      L[satir][sutun][2]=0;
                                     if(kontrol()==0){
                                          bitirilen[satir][sutun]=1;
                                          kulln_bil[satir][sutun]=0;
                                          }
                                           if( kulln_bil[satir+1][sutun]!=1&&bitirilen[satir+1][sutun]!=1){
                                           satir=satir+1;
                                           kulln_bil[satir][sutun]=1;
                                           L[satir][sutun][3]=0;

                                           resim->LoadFromFile("1-1.BMP");
                                           if(b==2)
                                           DrawGrid1->Canvas->Draw(sutun*40,(satir-1)*40,resim);
                                           else if(b==1)
                                           DrawGrid1->Canvas->Draw((sutun)*40,(satir-1)*40,resim);
                                           else if(b==0){
                                            if(a==2)
                                            Canvas->Draw(((sutun)*40),(satir-1)*40,resim);
                                            else
                                           DrawGrid1->Canvas->Draw(((sutun)*40),(satir-1)*40,resim);
                                           }
                                           else
                                           DrawGrid1->Canvas->Draw(sutun*40,(satir-1)*40,resim);
                                          t2++;
                                           b=hareketyon;
                                          if(t==1)
                                          a=hareketyon;
                                          }
                                                   }
                                        //---------------------0---------------
                                         if(hareketyon==0){
                                      L[satir][sutun][0]=0;
                                     if(kontrol()==0){
                                          bitirilen[satir][sutun]=1;
                                          kulln_bil[satir][sutun]=0;
                                          }
                                          if( kulln_bil[satir][sutun-1]!=1&&bitirilen[satir][sutun-1]!=1){
                                           sutun=sutun-1;
                                           kulln_bil[satir][sutun]=1;
                                           L[satir][sutun][1]=0;

                                           resim->LoadFromFile("1-1'.BMP");
                                           if(b==3)
                                           DrawGrid1->Canvas->Draw(sutun*40,(satir)*40,resim);
                                          else if(b==2){
                                          if(a==0)
                                          DrawGrid1->Canvas->Draw(sutun*40,(satir)*40,resim);
                                          else
                                          DrawGrid1->Canvas->Draw(sutun*40,(satir)*40,resim);
                                          }
                                           else if(b==0)
                                          DrawGrid1->Canvas->Draw((sutun)*40,(satir)*40,resim);
                                          else
                                          DrawGrid1->Canvas->Draw(sutun*40,(satir)*40,resim);
                                          t2++;
                                          b=hareketyon;
                                          if(t==1)
                                          a=hareketyon;
                                          }
                                                   }
                                         //--------------end-------------------
                                      if(kontrol()==0){
                                          bitirilen[satir][sutun]=1;
                                          kulln_bil[satir][sutun]=0;
                                          }
                     }

     t2=0;
     a=-1;
     b=-1;
                   
       guncelle();
             bitis=bitisikontrol();

  }

 

 

 

 

 

}
//---------------------------------------------------------------------------
void ilk_deger(void){
      for(int i=0;i<boyut;i++){
         for(int j=0;j<boyut;j++){
         for(int k=0;k<4;k++){
            L[i][j][k]=1;
          }}}
        for(int i=0;i<boyut;i++){
          L[0][i][3]=0;
          L[0][i][0]=0;
          L[0][i][1]=0;
        }
        for(int i=0;i<boyut;i++){
          L[i][0][0]=0;
          L[i][0][3]=0;
          L[i][0][2]=0;
        }
        for(int i=0;i<boyut;i++){
          L[(boyut-1)][i][2]=0;
          L[(boyut-1)][i][0]=0;
          L[(boyut-1)][i][1]=0;
        }
       for(int i=0;i<boyut;i++){
          L[i][(boyut-1)][1]=0;
          L[i][(boyut-1)][3]=0;
          L[i][(boyut-1)][2]=0;
        }

for(int i=0;i<boyut;i++){   //duvar oluşturuldu....
kulln_bil[0][i]=1;
kulln_bil[(boyut-1)][i]=1;
kulln_bil[i][0]=1;
kulln_bil[i][(boyut-1)]=1;
                         }
kulln_bil[0][0]=0;
bitirilen[0][0]=1;
kulln_bil[(boyut-1)][0]=0;
bitirilen[(boyut-1)][0]=1;
kulln_bil[(boyut-1)][(boyut-1)]=0;
bitirilen[(boyut-1)][(boyut-1)]=1;
kulln_bil[0][(boyut-1)]=0;
bitirilen[0][(boyut-1)]=1;
//---------------------------------------end--

}
//--------------------------------------------------
void guncelle(void){
int temp=0;
for(int i=0;i<boyut;i++){
  for(int j=0;j<boyut;j++){
     for(int k=0;k<4;k++){
            if(L[i][j][k]==0)
              temp++;
     }
     if(temp==4){
     bitirilen[i][j]=1;
     kulln_bil[i][j]=0;
     }
     temp=0;
     }}

}
//-------------------------------------------------------------
int bitisikontrol(void){int temp=0;
    for(int i=0;i<boyut;i++){
         for(int j=0;j<boyut;j++){
           if(bitirilen[i][j]==1)
            temp++;
                         } }

           return temp;
  }
//---------------------------------------------------------
 int kontrol(void){ int temp=0;
for(int i=0;i<4;i++){
       if(L[satir][sutun][i]==0)
            temp++;
                    }
                    if(temp==4)
                    return 0;
                    else
                    return 1;
      
}
//----------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{

  Repaint(); //ekranı temizler...

for(int i=0;i<boyut;i++){
  for(int j=0;j<boyut;j++){
     for(int k=0;k<4;k++){
            L[i][j][k]=1;
            }}}

  for(int i=0;i<boyut;i++){
  for(int j=0;j<boyut;j++)
  kulln_bil[i][j]=0;
  }
   for(int i=0;i<boyut;i++){
  for(int j=0;j<boyut;j++)
  bitirilen[i][j]=0;
  }


}
//---------------------------------------------------------------------------
 void atama(void){

 L=new int**[boyut];
 for(int i=0;i<boyut;i++)
 L[i]=new int*[boyut];
 for(int i=0;i<boyut;i++){
 for(int j=0;j<boyut;j++)
    L[i][j]=new int[4];
           }

 

  kulln_bil=new int*[boyut];
  for(int i=0;i<boyut;i++)
  kulln_bil[i]=new int[boyut];

  bitirilen=new int*[boyut];
  for(int i=0;i<boyut;i++)
  bitirilen[i]=new int[boyut];

 }
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
boyut=StrToInt(Edit1->Text);
DrawGrid1->RowCount=boyut-1;
DrawGrid1->ColCount=boyut-1;
DrawGrid1->Height=(boyut)*40;
DrawGrid1->Width=(boyut)*40;
}
//---------------------------------------------------------------------------

 


void __fastcall TForm1::Edit2Change(TObject *Sender)
{
kivrim_sayisi=StrToInt(Edit2->Text);
}
//---------------------------------------------------------------------------

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
INFOMELDUNG_LOGINBOX
Bugün 7 ziyaretçi (74 klik) kişi burdaydı!
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol