On İzleme
KODLAR
Formun oluşum olayı
Kod:
var sayi,j,uzunluk:Integer; begin Image2.Picture.LoadFromFile('bmpTekno-logy.png'); ListBox1.Hide; Randomize; can:=0; ListBox1.Items.LoadFromFile('kelimeler.txt'); //kelimeleri forma cekiyoruz sayi:=ListBox1.Items.Count; j:=random(sayi-1); // kelimeler arasından rasgele bir kelime seciyoruz gkelime:=ListBox1.Items[j]; // bu gelimeyi gkelime yani GERCEK KELİME olarka belirliyoruz goster:=gkelime; //Gkelimeyi goster değişkenine atıyoruz cunku gercek kelimeyi havızada tutuyoruz algoritmamız buna gore yapılmıştır farkı şekillerde de yapılabilirde ancak şuanki algoritma bu uzunluk:=length(gkelime); // kelimelin uzunluğu alınıyor ki ekranda kactane cizgi olacak for j:=1 to uzunluk do begin // cizgilen konuluyor bkelime:=bkelime+'-'; end; Label1.Caption:=bkelime; //cizgiler form uzerindeki gerekli label e aktarılıyor
Metin kutusu yazının değişme olayı
Kod:
var sayi:integer; metin:string; begin // edite sadece 1 tane karakter girilmesi cin kodlarımızı yazıyoruz // Burada editin Maxlenght ozelliğini 1 yaparsakta olur ancak // Biz basit bir kod mantığı ile oyun icerisinde kod ile yapalım diye duşunduk sizlere bir şeyler katması icin sayi:=length(edit1.Text); metin:=edit1.Text; if sayi > 1 then begin Delete(metin,2,sayi-1); end; edit1.Text:=metin;
Girilen harfi kontrolunu yapan buton kodları
Kod:
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 once 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 once kullanılmadıysa ornek vermek gerekirse a harfi 1 kez girilir 2. kez giremezsin cunku 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ı geciş ile sanki ciziyormuş gibi yaptık resim:=('bmpr'+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:=('bmpr'+IntToStr(can]'.bmp'); Image1.Picture.LoadFromFile(resim); //oyun bittiği icin yeni oyun icin hazırlıkları başlat bu kodları formun oluşum olayında anlattığım icin 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 icinde var ise repeat Delete(gkelime,a,1); // gercek kelimeden sil Insert('-',gkelime,a); //gercek uzerindeki tireyi ekle Delete(bkelime,a,1); //forum uzerindeki 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 icin aynı harften var mı diye sorgula varsa aynı işleme repeat dongusu ile devam et until a=0; end; end; /// kazanma bolumu if 0=Pos('-',bkelime) then begin ShowMessage('Kazandınız yeni oyun yukleniyor. Hazır mısınız ?'); // oyunu kazandığına dair mesaj verme ve yeni oyuna başlama işlemlerine don Randomize; can:=0; resim:=('bmpr'+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 ;
Proje Dosyasını İndir
Kaynak: http://www.tekno-logy.com/delphi-adam-asmaca-oyunu.html
__________________