lostyazilim
tr.link

Delphi Adam Asmaca Oyunu

7 Mesajlar 1.937 Okunma
lstbozum
tr.link

fatihcan fatihcan www.ktubotekulubu.com Kullanıcı
  • Üyelik 28.08.2012
  • Yaş/Cinsiyet 32 / E
  • Meslek Öğrenci
  • Konum Trabzon
  • Ad Soyad ** **
  • Mesajlar 478
  • Beğeniler 212 / 75
  • Ticaret 2, (%100)
Merhaba arkadaşlar belki bazılarına verilmiştir bu tarz bir ödev yada birileri yapmak isteyebilir yada kendini geliştirmek isteyenle için güzel bir örnek olur inş.

Ö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.
 

 

wmaraci
reklam

muratsal muratsal Sms Onayı Gerekli Banlı Kullanıcı
  • Üyelik 28.11.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek Yazılım Mühendisi
  • Konum Eskişehir
  • Ad Soyad ** **
  • Mesajlar 109
  • Beğeniler 11 / 14
  • Ticaret 1, (%100)
keşke .net le falan yazılsaymış daha iyi olurdu .
fatihcan

kişi bu mesajı beğendi.

fatihcan fatihcan www.ktubotekulubu.com Kullanıcı
  • Üyelik 28.08.2012
  • Yaş/Cinsiyet 32 / E
  • Meslek Öğrenci
  • Konum Trabzon
  • Ad Soyad ** **
  • Mesajlar 478
  • Beğeniler 212 / 75
  • Ticaret 2, (%100)

muratsal adlı üyeden alıntı

keşke .net le falan yazılsaymış daha iyi olurdu .


Mantığına bakarak çevirebilirsin hemen hemen hepsinde açıklama satırları yazdım bunu çevirmen çok katkı sağlayabilir sana (Eğer bu konuda bilgin az ise)
 

 

BiqBanq BiqBanq Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 01.10.2012
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılım Mühendisi
  • Konum İstanbul Avrupa
  • Ad Soyad ** **
  • Mesajlar 392
  • Beğeniler 18 / 42
  • Ticaret 2, (%100)

muratsal adlı üyeden alıntı

keşke .net le falan yazılsaymış daha iyi olurdu .


Kodlama ile azda olsa uraşıyorsan yani cidden ögrenmeye başlıyorsan şunu farketmişsindir

Delpi olsun C olsun PHP olsun hepsi aynı mantıkda calışır sadece yazılış degişir

Örnek : php - Prite
Örnek : c# - Write

Yani mantık hep aynıdır :=)
 

 

wmaraci
wmaraci

muratsal muratsal Sms Onayı Gerekli Banlı Kullanıcı
  • Üyelik 28.11.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek Yazılım Mühendisi
  • Konum Eskişehir
  • Ad Soyad ** **
  • Mesajlar 109
  • Beğeniler 11 / 14
  • Ticaret 1, (%100)
programramlama seviyem fena değilde direk deneyebilmek iyi olurdu .
 

 

fatihcan fatihcan www.ktubotekulubu.com Kullanıcı
  • Üyelik 28.08.2012
  • Yaş/Cinsiyet 32 / E
  • Meslek Öğrenci
  • Konum Trabzon
  • Ad Soyad ** **
  • Mesajlar 478
  • Beğeniler 212 / 75
  • Ticaret 2, (%100)

muratsal adlı üyeden alıntı

programramlama seviyem fena değilde direk deneyebilmek iyi olurdu .


http://www.tekno-logy.com/download/AdamAsmaca.zip

Buradan indirebilirsiniz. İndirme linki kaynak sitede mevcuttu hocam.
 

 

muratsal muratsal Sms Onayı Gerekli Banlı Kullanıcı
  • Üyelik 28.11.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek Yazılım Mühendisi
  • Konum Eskişehir
  • Ad Soyad ** **
  • Mesajlar 109
  • Beğeniler 11 / 14
  • Ticaret 1, (%100)
eyvallah sağol .
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al