Ön İzleme

KODLAR
Formun oluşum olayı
  var
  sayi,j,uzunluk:Integer;
  begin
Image2.Picture.LoadFromFile('bmp\Tekno-logy.png');
ListBox1.Hide;
    Randomize;
     can:=0;
ListBox1.Items.LoadFromFile('kelimeler.txt');  //kelimeleri forma çekiyoruz
  sayi:=ListBox1.Items.Count;
  j:=random(sayi-1); // kelimeler arasından rasgele bir kelime seçiyoruz
 gkelime:=ListBox1.Items[j];  // bu gelimeyi gkelime yani GERÇEK KELİME olarka belirliyoruz
  goster:=gkelime;   //Gkelimeyi goster değişkenine atıyoruz çünkü gerçek kelimeyi havızada tutuyoruz algoritmamız buna göre yapılmıştır farkı şekillerde de yapılabilirde ancak şuanki algoritma bu
  uzunluk:=length(gkelime);  // kelimelin uzunluğu alınıyor ki ekranda kaçtane çizgi olacak
 for j:=1 to uzunluk do begin   // çizgilen konuluyor
 bkelime:=bkelime+'-';
       end;
       Label1.Caption:=bkelime; //çizgiler form üzerindeki gerekli label e aktarılıyor
end;
metin kutusu yazının değişme olayı
var
  sayi:integer;
  metin:string;
begin
// edite sadece 1 tane karakter girilmesi çin kodlarımızı yazıyoruz
// Burada editin Maxlenght özelliğini 1 yaparsakta olur ancak
// Biz basit bir kod mantığı ile oyun içerisinde kod ile yapalım diye düşündük sizlere bir şeyler katması için
  sayi:=length(edit1.Text);
   metin:=edit1.Text;
   if sayi>1 then begin
     Delete(metin,2,sayi-1);
   end;
   edit1.Text:=metin;
end;
Girilen harfi kontrolünü yapan buton kodları
var
 a,i,sira:integer;
 sayi,j,uzunluk:Integer;
 resim,varmi,harf:string;
begin
    varmi:='Yok';
 harf:=edit1.Text;
 for i:=1 to Length(Label3.caption) do begin    //daha önce o karakter girildimi kontrol et
   if harf=Copy(Label3.caption,i,1) then
   varmi:='var';
 end;
  a:= Pos(harf,gkelime);  // giriken karakteri arttır.
  if varmi<>'var' then begin     // eğer girilen  karakter daha önce kullanılmadıysa örnek vermek gerekirse a harfi 1 kez girilir 2. kez giremezsin çünkü kullanılmıştır
      Label3.Caption:=label3.Caption+harf;
    if a=0 then begin  // Eğer girilen karakter kelimede yok ise adam asmaca bir adım ilerlet
       can:=can+1;  //canı arttırarak resimler arası geçiş ile sanki çiziyormuş gibi yaptık
       resim:=('bmp\r'+IntToStr(can)+'.bmp');
       Image1.Picture.LoadFromFile(resim);
       if can=11 then   begin  // eğer can 11 e ulaştı ise yani son resmimiz r11.bmp ise oyunu bitir
         goster:=('Kaybettiniz yazmanız gereken kelime '+ goster +' idi.');
       ShowMessage(goster);
           Randomize;
     can:=0;
          resim:=('bmp\r'+IntToStr(can)+'.bmp');
       Image1.Picture.LoadFromFile(resim);
         //oyun bittiği için yeni oyun için hazırlıkları başlat bu kodları formun oluşum olayında anlattığım için tekrar yazmıyorum
ListBox1.Items.LoadFromFile('kelimeler.txt');
  sayi:=ListBox1.Items.Count;
  j:=random(sayi-1);
 gkelime:=ListBox1.Items[j];
         goster:=gkelime;
  uzunluk:=length(gkelime);
          bkelime:='';
          label3.Caption:='';
 for j:=1 to uzunluk do begin
 bkelime:=bkelime+'-';
       end;
       Label1.Caption:=bkelime;
       end;
    end
    else begin  // yok hayır girilen karakter kelimenin içinde var ise
     {
     Gerçek algoritma burada doğru harf girilirse ne yapılmalı
     yapılanı özetlemek gerekirse kelime 6 harfli ise
     ----- yani 6 tire
     fatih    isim şeklinde saklanır eğer kişi a harfini girince sonuç
     -a---
     f-tih
     olacaktır yani yer değiştirme ile kelimeyi bulup bulmadığını anlıyoruz
     bunuda string kodları ise sil, ekle ve pos ile yapıyoruz
     }
    repeat
    Delete(gkelime,a,1); // gerçek kelimeden sil
    Insert('-',gkelime,a); //gerçek üzerindeki tireyi ekle
    Delete(bkelime,a,1); //forum üzerindeki kelimende girilen harfin yerindeki tireyi sil
     Insert(harf,bkelime,a); //girilen harfi ekle
     Label1.Caption:=bkelime;
     a:= Pos(harf,gkelime);  // aynı harften 1 tane olmaya bilir bunun için aynı harften var mı diye sorgula varsa aynı işleme repeat döngüsü ile devam et
     until a=0;
    end;
    end;
    /// kazanma bölümü
    if 0=Pos('-',bkelime) then begin
    ShowMessage('Kazandınız yeni oyun yükleniyor. Hazır mısınız ?');
    // oyunu kazandığına dair mesaj verme ve yeni oyuna başlama işlemlerine dön
             Randomize;
     can:=0;
          resim:=('bmp\r'+IntToStr(can)+'.bmp');
       Image1.Picture.LoadFromFile(resim);
ListBox1.Items.LoadFromFile('kelimeler.txt');
  sayi:=ListBox1.Items.Count;
  j:=random(sayi-1);
 gkelime:=ListBox1.Items[j];
 goster:=gkelime;
  uzunluk:=length(gkelime);
          bkelime:='';
          label3.Caption:='';
 for j:=1 to uzunluk do begin
 bkelime:=bkelime+'-';
       end;
       Label1.Caption:=bkelime;
    end;
    Edit1.Clear;
    Edit1.SetFocus;
    end ;
Kaynak: http://www.tekno-logy.com/delphi-adam-asmaca-oyunu.html
Proje dosyası kaynakta bulunmaktadır.
  

