Mega Code Archive

 
Categories / Delphi / Games
 

Cards Game

Title: Cards Game Question: How to make graphical games using delphi, the ide. The purpose is to learn how to use the gdi functions etc. And the source is very short... Answer: unit Unit5; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls,math; type tkarttipi=class tip:string; numara:integer; end; type Ta_pencere = class(TForm) Shape1: TShape; Timer1: TTimer; kartarka: TImage; Shape3: TShape; Shape2: TShape; Shape4: TShape; Shape5: TShape; Shape6: TShape; Shape7: TShape; Shape8: TShape; Shape9: TShape; Shape10: TShape; Shape11: TShape; Shape12: TShape; Shape13: TShape; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure kartarkaClick(Sender: TObject); procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } kartlar,gk, sinek,maca,kupa,karo,secilikartlar,kapaklar:tlist; tx,ty,sonalinankart:integer; ///////deiken tanmlamalar procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure image1Click(Sender: TObject); procedure Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure kapakbasinca(Sender: TObject); function usttekikart(grupno:integer):timage; function usttekikapak(grupno:integer):timage; function karttipi(resim:timage):tkarttipi; function altauygunmu(ne:timage;nereye:timage;grupno:integer):boolean; function yerlestir(resim:timage):boolean; function kartsayisi(alan:integer):integer; function kapaksayisi(alan:integer):integer; end; var a_pencere: Ta_pencere; implementation {$R *.dfm} ///gruptaki kapak sysn veren fonksiyon function ta_pencere.kapaksayisi(alan:integer):integer; var s,c:integer; begin c:=0; for s:=0 to kapaklar.count-1 do begin if ((timage(kapaklar.Items[s]).Tag=alan))and ((timage(kapaklar.Items[s]).Visible)) then c:=c+1; end; kapaksayisi:=c; end; ////// function ta_pencere.kartsayisi(alan:integer):integer; var s,c:integer; begin c:=0; for s:=0 to kartlar.count-1 do begin if ((timage(kartlar.Items[s]).Tag=alan)and (secilikartlar.IndexOf(kartlar.Items[s])=-1 )) then c:=c+1; end; kartsayisi:=c; end; //////kart olmas gerektii yere gnderen fonksiyon function ta_pencere.yerlestir(resim:timage):boolean; begin if resim.Tag=1 then begin resim.Top:=((kartsayisi(1)) *30)+shape2.Top; resim.left:=shape2.Left; resim.BringToFront; end; if resim.Tag=2 then begin resim.Top:=((kartsayisi(2)) *30)+shape3.Top; resim.left:=shape3.Left; resim.BringToFront; end; if resim.Tag=3 then begin resim.Top:=((kartsayisi(3)) *30)+shape4.Top; resim.left:=shape4.Left; resim.BringToFront; end; if resim.Tag=4 then begin resim.Top:=((kartsayisi(4)) *30)+shape5.Top; resim.left:=shape5.Left; resim.BringToFront; end; if resim.Tag=5 then begin resim.Top:=((kartsayisi(5)) *30)+shape6.Top; resim.left:=shape6.Left; resim.BringToFront; end; if resim.Tag=6 then begin resim.Top:=((kartsayisi(6)) *30)+shape7.Top; resim.left:=shape7.Left; resim.BringToFront; end; if resim.Tag=7 then begin resim.Top:=((kartsayisi(7)) *30)+shape8.Top; resim.left:=shape8.Left; resim.BringToFront; end; if resim.Tag=8 then begin resim.Top:=shape1.Top; resim.left:=shape1.Left; resim.BringToFront; end; if resim.Tag=9 then begin resim.Top:=shape13.Top; resim.left:=shape13.Left; resim.BringToFront; end; if resim.Tag=10 then begin resim.Top:=shape9.Top; resim.left:=shape9.Left; resim.BringToFront; end; if resim.Tag=11 then begin resim.Top:=shape10.Top; resim.left:=shape10.Left; resim.BringToFront; end; if resim.Tag=12 then begin resim.Top:=shape11.Top; resim.left:=shape11.Left; resim.BringToFront; end; if resim.Tag=13 then begin resim.Top:=shape12.Top; resim.left:=shape12.Left; resim.BringToFront; end; yerlestir:=true; end; ///////alta uygun olup olmadn kontrol eden fonksiyon function ta_pencere.altauygunmu(ne:timage;nereye:timage;grupno:integer):boolean; var u:boolean; begin u:=true; if (karttipi(nereye).tip='mao') and (karttipi(ne).tip='sinek') then u:=false; if (karttipi(nereye).tip='karo') and (karttipi(ne).tip='kupa') then u:=false; if (karttipi(nereye).tip='sinek') and (karttipi(ne).tip='mao') then u:=false; if (karttipi(nereye).tip='kupa') and (karttipi(ne).tip='karo') then u:=false; if ((karttipi(nereye ).numara-karttipi(ne).numara)1) or not(karttipi(nereye).tipkarttipi(ne).tip ) then u:=false; if (grupno0) and (grupnoif (nereye=nil) and (karttipi(ne).numara=13) then u:=true; if (grupno9) then if (nereye=nil) and (karttipi(ne).numara=1) then u:=true; altauygunmu:=u; end; ////bir kartn tipini renen fonksiyon function ta_pencere.karttipi(resim:timage):tkarttipi; var t:tkarttipi; begin t:=tkarttipi.Create; if( (kartlar.IndexOf(resim))-1 ) then begin t.tip:='sinek'; t.numara:=kartlar.IndexOf(resim)+1; end; if( (kartlar.IndexOf(resim))12 ) then begin t.tip:='karo'; t.numara:=kartlar.IndexOf(resim)+1-13; end; if( (kartlar.IndexOf(resim))25 ) then begin t.tip:='mao'; t.numara:=kartlar.IndexOf(resim)+1-26; end; if( (kartlar.IndexOf(resim))38 ) then begin t.tip:='kupa'; t.numara:=kartlar.IndexOf(resim)+1-39; end; karttipi:=t; end; /////gruptaki en alttaki kapa alan fonksiyon (yksekliklerine gre kontrol eder) function ta_pencere.usttekikapak(grupno:integer):timage; var ti:timage; i:integer; begin ti:=nil; for i:=0 to kapaklar.Count-1 do begin if (timage(kapaklar.Items[i]).Tag=grupno) and(timage(kapaklar.Items[i]).Visible) then begin if (ti=nil) then ti:=timage.Create(self); if max(ti.Top,timage(kapaklar.Items[i]).Top)=timage(kapaklar.Items[i]).Top then ti:=timage(kapaklar.Items[i]); end; end; usttekikapak:=ti; end; function ta_pencere.usttekikart(grupno:integer):timage; var ti:timage; i:integer; begin ti:=nil; for i:=0 to kartlar.Count-1 do begin if timage(kartlar.Items[i]).Tag=grupno then begin if ti=nil then ti:=timage.Create(self); if max(ti.Top,timage(kartlar.Items[i]).Top)=timage(kartlar.Items[i]).Top then ti:=timage(kartlar.Items[i]); end; end; usttekikart:=ti; end; //////////////image1click olay kartlar oyun mantna gre yerletirir. procedure ta_pencere.image1Click(sender:tobject); var yerlestirildi:boolean; i:integer; begin yerlestirildi:=false; if timage(sender).Tag=8 then ////grubu 8 se begin timage(sender).Tag:=9; ///dokuz yap timage(sender).Left:= shape13.Left ; timage(sender).top:=shape13.Top; timage(sender).BringToFront; end else ///DOKUZUNCU ALANDAN ALINAN KARTLAR if (timage(sender).Tag=9) and (timage(sender).Top150) then ///dokuzsa begin /////dier gruplara uyup uymadn kontrol et if (timage(sender).Left shape2.Left-35 )and (altauygunmu(timage(sender),usttekikart(1),1) ) then begin timage(sender).Tag:=1; ///////biirinci gruba yerletir timage(sender).Left:=shape2.Left; timage(sender).top:=((kartsayisi(1)) *30)+200 ; timage(sender).BringToFront; yerlestirildi:=true; secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else if (timage(sender).Left shape3.Left-35 )and (altauygunmu(timage(sender),usttekikart(2),2) ) then begin timage(sender).Tag:=2; timage(sender).Left:=shape3.Left; timage(sender).top:=((kartsayisi(2)) *30)+200 ; timage(sender).BringToFront; yerlestirildi:=true; secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else if (timage(sender).Left shape4.Left-35 )and (altauygunmu(timage(sender),usttekikart(3),3) ) then begin timage(sender).Tag:=3; timage(sender).Left:=shape4.Left; timage(sender).top:=((kartsayisi(3)) *30)+200 ; timage(sender).BringToFront; ///////ne getir yerlestirildi:=true; /// yeniden yerletirme secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else if (timage(sender).Left shape5.Left-35 )and (altauygunmu(timage(sender),usttekikart(4),4) ) then begin timage(sender).Tag:=4; timage(sender).Left:=shape5.Left; timage(sender).top:=((kartsayisi(4)) *30)+200 ; timage(sender).BringToFront; ///////ne getir yerlestirildi:=true; /// yeniden yerletirme secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else if (timage(sender).Left shape6.Left-35 )and (altauygunmu(timage(sender),usttekikart(5),5) ) then begin timage(sender).Tag:=5; timage(sender).Left:=shape6.Left; timage(sender).top:=((kartsayisi(5)) *30)+200 ; timage(sender).BringToFront; ///////ne getir yerlestirildi:=true; /// yeniden yerletirme secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else if (timage(sender).Left shape7.Left-35 )and (altauygunmu(timage(sender),usttekikart(6),6) ) then begin timage(sender).Tag:=6; timage(sender).Left:=shape7.Left; timage(sender).top:=((kartsayisi(6)) *30)+200 ; timage(sender).BringToFront; ///////ne getir yerlestirildi:=true; /// yeniden yerletirme secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else if (timage(sender).Left shape8.Left-35 )and (altauygunmu(timage(sender),usttekikart(7),7) ) then begin timage(sender).Tag:=7; timage(sender).Left:=shape8.Left; timage(sender).top:=((kartsayisi(7)) *30)+200 ; timage(sender).BringToFront; ///////ne getir yerlestirildi:=true; /// yeniden yerletirme secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else end else ///DOKUZUNCU ALANDAN ALINAN KARTLAR ///DER ALANLARDAN ALINAN KARTLAR if (timage(sender).Tag0)and (timage(sender).Tag150) then begin if (timage(sender).Left shape2.Left-35 ) and (altauygunmu(timage(sender),usttekikart(1),1)) then begin timage(sender).Tag:=1; timage(sender).Left:=shape2.Left; timage(sender).top:=((kartsayisi(1)) *30)+200 ; timage(sender).BringToFront; yerlestirildi:=true; secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else if (timage(sender).Left shape3.Left-35 )and (altauygunmu(timage(sender),usttekikart(2),2)) then begin timage(sender).Tag:=2; timage(sender).Left:=shape3.Left; timage(sender).top:=((kartsayisi(2)) *30)+200 ; timage(sender).BringToFront; yerlestirildi:=true; secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else if (timage(sender).Left shape4.Left-35 )and (altauygunmu(timage(sender),usttekikart(3),3)) then begin timage(sender).Tag:=3; timage(sender).Left:=shape4.Left; timage(sender).top:=((kartsayisi(3)) *30)+200 ; timage(sender).BringToFront; yerlestirildi:=true; secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else if (timage(sender).Left shape5.Left-35 )and (altauygunmu(timage(sender),usttekikart(4),4)) then begin timage(sender).Tag:=4; timage(sender).Left:=shape5.Left; timage(sender).top:=((kartsayisi(4)) *30)+200 ; timage(sender).BringToFront; yerlestirildi:=true; secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else if (timage(sender).Left shape6.Left-35 )and (altauygunmu(timage(sender),usttekikart(5),5)) then begin timage(sender).Tag:=5; timage(sender).Left:=shape6.Left; timage(sender).top:=((kartsayisi(5)) *30)+200 ; timage(sender).BringToFront; yerlestirildi:=true; secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else if (timage(sender).Left shape7.Left-35 )and (altauygunmu(timage(sender),usttekikart(6),6)) then begin timage(sender).Tag:=6; timage(sender).Left:=shape7.Left; timage(sender).top:=((kartsayisi(6)) *30)+200 ; timage(sender).BringToFront; yerlestirildi:=true; secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else if (timage(sender).Left shape8.Left-35 ) and (altauygunmu(timage(sender),usttekikart(7),7))then begin timage(sender).Tag:=7; timage(sender).Left:=shape8.Left; timage(sender).top:=((kartsayisi(7)) *30)+200 ; timage(sender).BringToFront; yerlestirildi:=true; secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end else end else if (timage(sender).Topbegin if (timage(sender).Left shape9.Left-35 ) and altauygunmu(usttekikart(10), timage(sender),10) then begin if secilikartlar.Count1 then ///////ST TARAFA YERLETRRKEN BRDEN FAZLA KART VARSA begin i:=secilikartlar.Count-1; yerlestir( timage(sender)); while not (i=-1) do begin yerlestir(secilikartlar.items[i]); ///HEPSN YERLETR secilikartlar.Remove(secilikartlar.items[i]); i:=i-1; end; abort;//// ////VE BU FONKSYONU DURDUR end; timage(sender).Tag:=10; timage(sender).Left:=shape9.Left; timage(sender).top:=shape9.Top ; timage(sender).BringToFront; yerlestirildi:=true; secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end; if (timage(sender).Left shape10.Left-35 )and altauygunmu(usttekikart(11), timage(sender),11) then begin if secilikartlar.Count1 then ///////ST TARAFA YERLETRRKEN BRDEN FAZLA KART VARSA begin i:=secilikartlar.Count-1; yerlestir( timage(sender)); while not (i=-1) do begin yerlestir(secilikartlar.items[i]); ///HEPSN YERLETR secilikartlar.Remove(secilikartlar.items[i]); i:=i-1; end; abort;//// ////VE BU FONKSYONU DURDUR end; timage(sender).Tag:=11; timage(sender).Left:=shape10.Left; timage(sender).top:=shape10.Top ; timage(sender).BringToFront; yerlestirildi:=true; secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end; if (timage(sender).Left shape11.Left-35 ) and altauygunmu(usttekikart(12), timage(sender),12) then begin if secilikartlar.Count1 then ///////ST TARAFA YERLETRRKEN BRDEN FAZLA KART VARSA begin i:=secilikartlar.Count-1; yerlestir( timage(sender)); while not (i=-1) do begin yerlestir(secilikartlar.items[i]); ///HEPSN YERLETR secilikartlar.Remove(secilikartlar.items[i]); i:=i-1; end; abort;//// ////VE BU FONKSYONU DURDUR end; timage(sender).Tag:=12; timage(sender).Left:=shape11.Left; timage(sender).top:=shape11.Top ; timage(sender).BringToFront; yerlestirildi:=true; secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end; if (timage(sender).Left shape12.Left-35 )and altauygunmu(usttekikart(12), timage(sender),12) then begin if secilikartlar.Count1 then ///////ST TARAFA YERLETRRKEN BRDEN FAZLA KART VARSA begin i:=secilikartlar.Count-1; yerlestir( timage(sender)); while not (i=-1) do begin yerlestir(secilikartlar.items[i]); ///HEPSN YERLETR secilikartlar.Remove(secilikartlar.items[i]); i:=i-1; end; abort;//// ////VE BU FONKSYONU DURDUR end; timage(sender).Tag:=13; timage(sender).Left:=shape12.Left; timage(sender).top:=shape12.Top ; timage(sender).BringToFront; yerlestirildi:=true; secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end; end; /////YKARIDAK GRUPLAR ///DER ALANLARDAN ALINAN KARTLAR if not yerlestirildi then begin yerlestir(timage(sender)); secilikartlar.Remove(sender); ///yerletirince seili kartlar listesinnden sil end; end; procedure Ta_pencere.FormCreate(Sender: TObject); var i,rnd:integer; tempi:timage; begin //////////KARTLARI YKLEYP YERNE YERLETRYORUZ kapaklar:=tlist.Create; for i:=0 to 51 do ///////BTN KAPAKLARI OLUTUR begin tempi:=timage.Create(self); a_pencere.InsertControl(tempi); tempi.Visible:=false; tempi.Picture:=kartarka.Picture; tempi.Width:=70; tempi.Height:=100; tempi.Stretch:=true; tempi.Parent:=self; kapaklar.Add(tempi); end; sonalinankart:=0; secilikartlar:=tlist.Create; kartlar:=tlist.Create; ////// KARTLAR N LSTE A gk:=tlist.Create; ///////KARITIRMA LSTES for i:=1 to 13 do ////////SNEKLER i YKLE begin tempi:=timage.create(self); tempi.Picture.LoadFromFile('sinek'+inttostr(i)+'.bmp'); ///sineki.bmp resmini ykle tempi.Left:=600; ///resmin sol taraf 600 self.InsertControl(tempi); //////formun iine resmi kontrol olarak koy tempi.Width:=70; ///////GENLK tempi.Height:=100; ///YKSEKLK tempi.Stretch:=true; ///RESM UZATIR tempi.OnClick:=image1click; ///////RESMN TILAMA OLAYINA image1click i ata tempi.OnMouseDown:=image1mousedown; ///farenin bast ana image1mousedown ata tempi.OnMouseUp:= Image1MouseUp; ///// kaldrld "" kartlar.Add(tempi); ///////kart kartlar listesine ekle gk.Add(tempi); end; for i:=1 to 13 do begin tempi:=timage.create(self); tempi.Picture.LoadFromFile('karo'+inttostr(i)+'.bmp'); tempi.Left:=600; tempi.OnClick:=image1click; tempi.OnMouseDown:=image1mousedown; tempi.OnMouseUp:= Image1MouseUp; self.InsertControl(tempi); tempi.Width:=70; tempi.Height:=100; tempi.Stretch:=true; kartlar.Add(tempi); gk.Add(tempi); end; for i:=1 to 13 do begin tempi:=timage.create(self); tempi.Picture.LoadFromFile('maa'+inttostr(i)+'.bmp'); tempi.Left:=600; tempi.OnClick:=image1click; tempi.OnMouseDown:=image1mousedown; tempi.OnMouseUp:= Image1MouseUp; self.InsertControl(tempi); tempi.Width:=70; tempi.Height:=100; tempi.Stretch:=true; kartlar.Add(tempi); gk.Add(tempi); end; for i:=1 to 13 do ///tm kupalar begin tempi:=timage.create(self); tempi.Picture.LoadFromFile('kupa'+inttostr(i)+'.bmp'); ///kupa(i).bmp resmini dosyadan ykle tempi.Left:=600; tempi.OnClick:=image1click; tempi.OnMouseDown:=image1mousedown; tempi.OnMouseUp:= Image1MouseUp; self.InsertControl(tempi); tempi.Width:=70; tempi.Height:=100; tempi.Stretch:=true; kartlar.Add(tempi); gk.Add(tempi); end; randomize; ///yerertlerelitir for i:=0 to 0 do //////yklenen resimleri alanlara yerletir begin rnd:=random(gk.Count); ///////karma listesinden random olarak se tempi:=timage(gk.Items[rnd]); tempi.Tag:=1; tempi.Top:=200; ///seilen resmi 1 inci alana yerletir tempi.left:=shape2.Left; tempi.BringToFront; gk.Delete(rnd); ///////seilen resmi random listesinden sil end; for i:=0 to 1 do begin rnd:=random(gk.Count); tempi:=timage(gk.Items[rnd]); tempi.Tag:=2; tempi.Top:=200+i*30; ///////kartlarn yksekliini ayarla tempi.left:=shape3.Left; tempi.BringToFront; /// i not (i=* ) then ler kapaklar ykler if not (i=1 ) then ////ene alttaki kart ak brakmak iin i 1 den farklysa kapat begin timage(kapaklar.Items[i]).Visible:=true; ///grnr yap timage(kapaklar.Items[i]).top:=tempi.Top; timage(kapaklar.Items[i]).left:=tempi.Left; timage(kapaklar.Items[i]).BringToFront; ////ne getir timage(kapaklar.Items[i]).OnClick:=kapakbasinca; timage(kapaklar.Items[i]).Tag:=2; ///////taglar grup numaras end; gk.Delete(rnd); end; for i:=0 to 2 do begin rnd:=random(gk.Count); tempi:=timage(gk.Items[rnd]); tempi.Tag:=3; tempi.Top:=200+i*30; tempi.left:=shape4.Left; tempi.BringToFront; if not (i=2 ) then begin timage(kapaklar.Items[i+1]).Visible:=true; timage(kapaklar.Items[i+1]).top:=tempi.Top; timage(kapaklar.Items[i+1]).left:=tempi.Left; timage(kapaklar.Items[i+1]).BringToFront; timage(kapaklar.Items[i+1]).OnClick:=kapakbasinca; timage(kapaklar.Items[i+1]).Tag:=3; end; gk.Delete(rnd); end; for i:=0 to 3 do begin rnd:=random(gk.Count); tempi:=timage(gk.Items[rnd]); tempi.Tag:=4; tempi.Top:=200+i*30; tempi.left:=shape5.Left; tempi.BringToFront; if not (i=3 ) then begin timage(kapaklar.Items[i+3]).Visible:=true; timage(kapaklar.Items[i+3]).top:=tempi.Top; timage(kapaklar.Items[i+3]).left:=tempi.Left; timage(kapaklar.Items[i+3]).BringToFront; timage(kapaklar.Items[i+3]).OnClick:=kapakbasinca; timage(kapaklar.Items[i+3]).Tag:=4; end; gk.Delete(rnd); end; for i:=0 to 4 do begin rnd:=random(gk.Count); tempi:=timage(gk.Items[rnd]); tempi.Tag:=5; tempi.Top:=200+i*30; tempi.left:=shape6.Left; tempi.BringToFront; if not (i=4 ) then begin timage(kapaklar.Items[i+8]).Visible:=true; timage(kapaklar.Items[i+8]).top:=tempi.Top; timage(kapaklar.Items[i+8]).left:=tempi.Left; timage(kapaklar.Items[i+8]).BringToFront; timage(kapaklar.Items[i+8]).OnClick:=kapakbasinca; timage(kapaklar.Items[i+8]).Tag:=5; end; gk.Delete(rnd); end; for i:=0 to 5 do begin rnd:=random(gk.Count); tempi:=timage(gk.Items[rnd]); tempi.Tag:=6; tempi.Top:=200+i*30; tempi.left:=shape7.Left; tempi.BringToFront; if not (i=5 ) then begin timage(kapaklar.Items[i+20]).Visible:=true; timage(kapaklar.Items[i+20]).top:=tempi.Top; timage(kapaklar.Items[i+20]).left:=tempi.Left; timage(kapaklar.Items[i+20]).BringToFront; timage(kapaklar.Items[i+20]).OnClick:=kapakbasinca; timage(kapaklar.Items[i+20]).Tag:=6; end; gk.Delete(rnd); end; for i:=0 to 6 do begin rnd:=random(gk.Count); tempi:=timage(gk.Items[rnd]); tempi.Tag:=7; tempi.Top:=200+i*30; tempi.left:=shape8.Left; tempi.BringToFront; if not (i=6 ) then begin timage(kapaklar.Items[i+45]).Visible:=true; timage(kapaklar.Items[i+45]).top:=tempi.Top; timage(kapaklar.Items[i+45]).left:=tempi.Left; timage(kapaklar.Items[i+45]).BringToFront; timage(kapaklar.Items[i+45]).OnClick:=kapakbasinca; timage(kapaklar.Items[i+45]).Tag:=7; end; gk.Delete(rnd); end; while (gk.Count0) do //////// karma listesinde sol ste yerletirilecek kartlar far begin rnd:=random(gk.Count); tempi:=timage(gk.Items[rnd]); tempi.Tag:= 8; tempi.Left:=shape1.Left; tempi.Top:=shape1.Top; ///////shape 1 8 inci alann olduu yerde gk.Delete(rnd); end; gk.Destroy; kartarka.BringToFront; end; procedure Ta_pencere.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var i:integer; begin //////////farenin aa basnca secilikartlar.Clear; ////sender bastm kart... if not((timage(sender).Tag0) and (timage(sender).Tagsecilikartlar.Add(sender) else for i:=0 to kartlar.Count-1 do if (timage(kartlar.Items[i] ).Tag= timage(sender).Tag)and (timage(sender).Topsecilikartlar.Add(kartlar.Items[i]); end; procedure Ta_pencere.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var i:integer; begin i:=secilikartlar.Count-1; ////////dngy tersten balat while (secilikartlar.Count0) do ////btn seili olan kartlara begin ////image1click olay kartlar yerlerine yerletiren prosedr ierir self.image1Click(secilikartlar.Items[i]); //tklamadm ama tklam gibi yaptm i:=i-1; end; end; procedure Ta_pencere.Timer1Timer(Sender: TObject); var p:tpoint; i:integer; begin ////////zamanlayc kartlar tama ilemlerini gerekletiriyo getcursorpos(p);////fare pozisyonunu alan fonksiyon for i:=0 to secilikartlar.Count-1 do begin timage(secilikartlar.Items[i]).Left:=timage(secilikartlar.Items[i]).Left+(p.X-tx); // son fare pozisyonuyla arasndaki ffark kadar ekle timage(secilikartlar.Items[i]).top:=timage(secilikartlar.Items[i]).top+(p.y-ty); end; tx:=p.X; /// ty:=p.Y; end; ////////KAPAKLARIN TIKLANMA OLAYI procedure Ta_pencere.kartarkaClick(Sender: TObject); var i :integer; img:timage; sekizdekikartlar:tlist; begin sekizdekikartlar:=tlist.Create; ////sekizinci gruptaki kartlar oolutur img:=nil ; ///////img ye nce bo ata for i:= 0 to kartlar.Count-1 do if(timage(kartlar.Items[i])).Tag=8 then begin sekizdekikartlar.Add(kartlar.Items[i]); ////listeye topla end; if sekizdekikartlar.Count0 then begin img:= timage(sekizdekikartlar.Items[sonalinankart]); if sekizdekikartlar.Count=1 then sonalinankart:=0 else sonalinankart:=(sonalinankart+(sekizdekikartlar.Count div 3)) mod (sekizdekikartlar.Count-1);///dzenli karma end; if(imgtimage(nil)) then ///////img bo deilse image1click(img) ///resmi tkla else kartarka.Visible:=false; /////// img bosa sol stteki kapan visibln fols yap sekizdekikartlar.Destroy; //////listeyi belletken sil end; procedure Ta_pencere.Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var i:integer; begin ////8 inci blmn geri toplamas //// for i:= 0 to kartlar.Count-1 do if(timage(kartlar.Items[i])).Tag=9 then ////dokuzuncu blmdekileri al begin (timage(kartlar.Items[i])).Tag:=8; /////// grupnosunu 8 yap (timage(kartlar.Items[i])).Left:=shape1.Left; (timage(kartlar.Items[i])).BringToFront; end; kartarka.Visible:=true; ///kapa gster kartarka.BringToFront; ////////kapa ne getir end; /////////kapan fareye basmas olay procedure Ta_pencere.kapakbasinca(Sender: TObject); begin if (TImage(sender)=usttekikapak(TImage(Sender).Tag)) and (kartsayisi(TImage(Sender).Tag)=kapaksayisi(TImage(Sender).Tag)) then timage(sender).Visible:=false; end; end.