Games Delphi

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.