Var
AnaForm:TclForm;
KullaniciId: String;
Id:Integer;
OyunGirisButonu: TClProButton; //Giriş butonu
GirisLabeli: TCLLabel; //Oyun Adı
KullaniciAdiEdt:TclEdit; //Kullanıcı Adı Girişi
KullaniciAdi: String; //Kullanıcı Adı Girişi
//Resimler
resim1:TCLImage;
resim2:TCLImage;
resim3:TCLImage;
resim4:TCLImage;
resim5:TCLImage;
resim6:TCLImage;
bomba1:TCLImage;
time1:TCLImage;
//Veritabanı
OyunVeritabani:TClSqlQuery;
//Skor Tablosu
SkorTablosu: TClProButton;
//Kurucu Girişi
adminGirisi: TClProButton;
//Veri Tabanı bağlantısı için.
Void SetupSqlConnection
{
Clomosy.DBSQLServerConnect('SQL Server', '192.168.1.149', 'sa', '1', 'Oyun', 1433);
}
//Girilen Kullanıcı Adlarını Veri Tabanına almak için.
void OyunGirisButonuClick
{
OyunVeritabani = TClSqlQuery.Create(nil);
try
OyunVeritabani.Connection = Clomosy.DBSQLServerConnection;
// Kullanıcı adını ekleme veya varsa kullanıcı id'sini alma
OyunVeritabani.SQL.Text =
'IF NOT EXISTS (SELECT 1 FROM Kullaniicilar WHERE OyuncuAdi = ' + QuotedStr(KullaniciAdiEdt.Text) + ') ' +
'BEGIN ' +
'INSERT INTO Kullaniicilar (OyuncuAdi) VALUES (' + QuotedStr(KullaniciAdiEdt.Text) + '); ' +
'END; ' +
'SELECT Id FROM Kullaniicilar WHERE OyuncuAdi = ' + QuotedStr(KullaniciAdiEdt.Text);
OyunVeritabani.Open;
KullaniciId = OyunVeritabani.FieldByName('Id').AsString;
KullaniciAdi = KullaniciAdiEdt.Text; // Kullanıcı adını al
Clomosy.GlobalVariableString=KullaniciAdiEdt.Text; // Kullanıcı adını al //burası
finally
OyunVeritabani.Free;
}
Clomosy.RunUnit('Oyun'); //Oyun adlı Unit'e gitmek için.
}
//Tıklandığında Skor'a atar.
void SkorTablosuClick
{
Clomosy.RunUnit('Skor');
}
//Tıklandığında adminGirisi'ne atar.
void adminGirisiClick
{
Clomosy.RunUnit('Admin');
}
{
AnaForm = TclForm.Create(Self);
SetupSqlConnection; //Veritabanı bağlantısı için
//Resimler
//resim1
resim1=AnaForm.AddNewImage(AnaForm,'resim1');
AnaForm.SetImage(resim1,' https://cdn0.iconfinder.com/data/icons/phosphor-thin-vol-3/256/number-circle-one-thin-256.png" rel="nofollow - https://cdn0.iconfinder.com/data/icons/phosphor-thin-vol-3/256/number-circle-one-thin-256.png ');
resim1.Height=120;
resim1.Width=120;
resim1.Align=alBottom;
resim1.Margins.Right=350;
//resim2
resim2=AnaForm.AddNewImage(AnaForm,'resim2');
AnaForm.SetImage(resim2,' https://cdn0.iconfinder.com/data/icons/phosphor-thin-vol-3/256/number-circle-three-thin-512.png" rel="nofollow - https://cdn0.iconfinder.com/data/icons/phosphor-thin-vol-3/256/number-circle-three-thin-512.png ');
resim2.Height=120;
resim2.Width=120;
resim2.Align=alCenter;
resim2.Margins.Right=500;
//resim3
resim3=AnaForm.AddNewImage(AnaForm,'resim3');
AnaForm.SetImage(resim3,' https://cdn0.iconfinder.com/data/icons/phosphor-thin-vol-3/256/number-circle-five-thin-512.png" rel="nofollow - https://cdn0.iconfinder.com/data/icons/phosphor-thin-vol-3/256/number-circle-five-thin-512.png ');
resim3.Height=65;
resim3.Width=65;
resim3.Align=alCenter;
resim3.Margins.Left=500;
//resim4
resim4=AnaForm.AddNewImage(AnaForm,'resim4');
AnaForm.SetImage(resim4,' https://cdn0.iconfinder.com/data/icons/phosphor-thin-vol-3/256/number-circle-seven-thin-512.png" rel="nofollow - https://cdn0.iconfinder.com/data/icons/phosphor-thin-vol-3/256/number-circle-seven-thin-512.png ');
resim4.Height=120;
resim4.Width=120;
resim4.Align=alBottom;
resim4.Margins.Left=400;
//resim5
resim5=AnaForm.AddNewImage(AnaForm,'resim5');
AnaForm.SetImage(resim5,' https://cdn0.iconfinder.com/data/icons/phosphor-thin-vol-3/256/number-circle-nine-thin-512.png" rel="nofollow - https://cdn0.iconfinder.com/data/icons/phosphor-thin-vol-3/256/number-circle-nine-thin-512.png ');
resim5.Height=80;
resim5.Width=80;
resim5.Align=alTop;
resim5.Margins.Right=200;
//resim6
resim6=AnaForm.AddNewImage(AnaForm,'resim6');
AnaForm.SetImage(resim6,' https://cdn0.iconfinder.com/data/icons/phosphor-thin-vol-3/256/number-circle-six-thin-512.png" rel="nofollow - https://cdn0.iconfinder.com/data/icons/phosphor-thin-vol-3/256/number-circle-six-thin-512.png ');
resim6.Height=80;
resim6.Width=80;
resim6.Align=alTop;
resim6.Margins.Left=400;
//bomba1
bomba1=AnaForm.AddNewImage(AnaForm,'bomba1');
AnaForm.SetImage(bomba1,' https://cdn2.iconfinder.com/data/icons/nasty/60/apocolypse_nuclear_explosion_atomic_bomb-256.png" rel="nofollow - https://cdn2.iconfinder.com/data/icons/nasty/60/apocolypse_nuclear_explosion_atomic_bomb-256.png ');
bomba1.Height=60;
bomba1.Width=60;
bomba1.Align=alBottom;
bomba1.Margins.Left=200;
//time1
time1=AnaForm.AddNewImage(AnaForm,'time1');
AnaForm.SetImage(time1,' https://cdn4.iconfinder.com/data/icons/basic-ui-2-line/32/clock-time-ticker-times-hour-256.png" rel="nofollow - https://cdn4.iconfinder.com/data/icons/basic-ui-2-line/32/clock-time-ticker-times-hour-256.png ');
time1.Height=45;
time1.Width=45;
time1.Align=alLeft;
time1.Margins.Left=10;
// Başlık Label'ı
GirisLabeli = AnaForm.AddNewLabel(AnaForm, 'GirisLabeli', 'TimeTap');
GirisLabeli.StyledSettings = ssFamily;
GirisLabeli.TextSettings.Font.Size = 24;
GirisLabeli.Align = alTop;
GirisLabeli.Height = 50;
GirisLabeli.Width = 200;
GirisLabeli.Margins.Left=300;
GirisLabeli.Position.X = (AnaForm.clWidth / 2) - (GirisLabeli.Width / 2);
GirisLabeli.Position.Y = 50;
// Kullanıcı Adı Bölümü
KullaniciAdiEdt = AnaForm.AddNewEdit(AnaForm,'KullaniciAdiEdt', 'Kullanici Adinizi Giriniz');
KullaniciAdiEdt.Align = alNone;
KullaniciAdiEdt.Margins.Top=30;
KullaniciAdiEdt.Width = 200;
KullaniciAdiEdt.Height = 30;
KullaniciAdiEdt.Position.X = (AnaForm.clWidth / 2) - (KullaniciAdiEdt.Width / 2) + 2;
KullaniciAdiEdt.Position.Y = (AnaForm.clHeight / 2) - (KullaniciAdiEdt.Height / 2) - 75;
KullaniciAdiEdt.TextPrompt = 'Kullanıcı Adınızı Girin';
KullaniciAdiEdt.MaxLength=17; //Belirli miktarda kullanıcı adı girebilir.
// Başlat Butonu
OyunGirisButonu = AnaForm.AddNewProButton(AnaForm, 'OyunGirisButonu', 'Başlat');
OyunGirisButonu.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#e0d1d1');
OyunGirisButonu.Margins.Top= 50;
OyunGirisButonu.Align = alNone;
OyunGirisButonu.Width = 100;
OyunGirisButonu.Height= 50;
OyunGirisButonu.Position.X = (AnaForm.clWidth / 2) - (OyunGirisButonu.Width / 2);
OyunGirisButonu.Position.Y = (AnaForm.clHeight / 2) - (OyunGirisButonu.Height / 2);
OyunGirisButonu.SetclProSettings(OyunGirisButonu.clProSettings);
AnaForm.AddNewEvent(OyunGirisButonu, tbeOnClick, 'OyunGirisButonuClick');
// SkorTablosu
SkorTablosu = AnaForm.AddNewProButton(AnaForm, 'SkorTablosu', '');
clComponent.SetupComponent(SkorTablosu,'{"RoundHeight": 2, "RoundWidth": 2, "BorderColor": "#000000"}');
AnaForm.SetImage(SkorTablosu, ' https://cdn3.iconfinder.com/data/icons/customer-experience-1/32/Score-256.png" rel="nofollow - https://cdn3.iconfinder.com/data/icons/customer-experience-1/32/Score-256.png ');
SkorTablosu.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#b4f500');
SkorTablosu.Margins.Left= 480;
SkorTablosu.Margins.bottom=500;
SkorTablosu.Align = alNone;
SkorTablosu.Width = 70;
SkorTablosu.Height= 40;
SkorTablosu.SetclProSettings(SkorTablosu.clProSettings);
AnaForm.AddNewEvent(SkorTablosu, tbeOnClick, 'SkorTablosuClick');
//Admin Girişi
adminGirisi = AnaForm.AddNewProButton(AnaForm, 'adminGirisi', '');
clComponent.SetupComponent(adminGirisi,'{"RoundHeight": 2, "RoundWidth": 2, "BorderColor": "#000000"}');
AnaForm.SetImage(adminGirisi, ' https://cdn4.iconfinder.com/data/icons/essential-app-2/16/user-avatar-human-admin-login-256.png" rel="nofollow - https://cdn4.iconfinder.com/data/icons/essential-app-2/16/user-avatar-human-admin-login-256.png ');
adminGirisi.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#00b8f5');
adminGirisi.Margins.Right= 630;
adminGirisi.Margins.bottom=500;
adminGirisi.Align = alNone;
adminGirisi.Width = 70;
adminGirisi.Height= 40;
adminGirisi.SetclProSettings(adminGirisi.clProSettings);
AnaForm.AddNewEvent(adminGirisi, tbeOnClick, 'adminGirisiClick');
TclButton(anaForm.clFindComponent('BtnFormMenu')).Visible = False; //Clomosy Form Menu kapatma olayı.
TclButton(anaForm.clFindComponent('BtnGoBack')).Visible = False; //Clomosy Geri tuşunu kapatma olayı.
AnaForm.SetFormColor('#ad6ec4','#6d6bbd',clGHorizontal); //AnaForm'un arkaplanını renklendirme.
AnaForm.Run; // AnaForm'u çalıştırma.
}
Var
AnaForm:TclForm;
//Buton kısmı
btn1 : TClProButton;
Zaman : TCLTimer;
sayac:Integer;
//Random Renk verme kısmı
RndmTimer: TClTimer;
colorArray : array of String;
//Oyun Süresi kısmı
oyunzaman:TCLTimer;
sayac1:Integer;
lblTimer: TCLLabel;
//Random oyun süresi arttırma azaltma için ekranda çıkan görseller
surearttirma: TCLImage;
sureazaltma: TCLImage;
SkorVeritabani: TClSqlQuery;
KullaniciAdi:String;
void SetupSqlConnection
{
Clomosy.DBSQLServerConnect('SQL Server', '192.168.1.149', 'sa', '1', 'Oyun', 1433);
}
//Buton haricinde ekranın herhangi bir yerine basınca oyundan çıkmak için.
void onFormMouseDown
{
ShowMessage('Yandınız.Oyuna tekrardan başlayınız.');
AnaForm.clHide;
oyunzaman.Enabled=False;
}
//Başlangıç ekranından sonra olacak olay için
void OyunBaslangic;
{
btn1.Visible=True;
}
//Random olarak arkaplan rengini değiştirmek için.
void randomColor;
var
randmDeger: Integer;
{
colorArray = ['#26cf3a','#ff780a','#9a7de8','#813b3b','#a664c4','#6492c4','#81c464'];
randmDeger = clMath.GenerateRandom(0,6);
AnaForm.SetFormColor(colorArray[randmDeger],'',clGNone);
}
//Random olarakm btn1'in yerini değiştirmek için kısayol.
void randomPosition;
{
if((sayac >= 32) && (sayac <= 55))
{
btn1.Position.X = Abs((Random() * AnaForm.clWidth) - btn1.Width);
btn1.Position.Y = Abs((Random() * AnaForm.clHeight) - btn1.Height);
}
}
//Belirli zamanda ekranın herhangi bir yerinde çıkan görsele basınca ek süre eklemek için.
void eksure //Ekranın ortasındaki sayı 3 veya büyük olunca çıkması için yapıldı.
{
if(IntToStr(btn1.Text) >= 3)
{
surearttirma.visible=False;
sayac1 = sayac1+5;
}
}
//Belirli zamanda ekranın herhangi bir yerinde çıkan görsele basınca süre azaltmak için.
void sureazalt //Ekranın ortasındaki sayı 3 veya büyük olunca çıkması için yapıldı.
{
if(IntToStr(btn1.Text) >= 3)
{
sureazaltma.visible=False;
sayac1 = sayac1-2;
}
}
//btn1 içerisinde yazan sayıya göre işlemler döndüren kısım. randomColor,randomPosition,süre arttırma ve azaltma gibi işlemler yapar.
void zamanlayici;
{
//Bu fonksiyon RndmTimer'ın rastgale çalışmasını engellemiş oluyor.
if (sayac >= 32)
{
RndmTimer.Enabled = True;
}
btn1.Text = IntToStr(sayac);
sayac = sayac + 1; //sayacı 1 1 arttırır.
oyunzaman.Enabled=True; //oyun zamanı etkinleştirir
btn1.Text = IntToStr(sayac); //btn1 içerisindeki sayı
if(sayac == 3) //sureazaltma
{
sureazaltma.Position.X = Abs((Random() * AnaForm.clWidth) - sureazaltma.Width);
sureazaltma.Position.Y = Abs((Random() * AnaForm.clHeight) - sureazaltma.Height);
sureazaltma.visible=True;
}
if(sayac == 5)
{
AnaForm.SetFormColor('#23c7c5','',clGNone);
sayac1 = sayac1 + 3;
btn1.Position.X = Abs((Random() * AnaForm.clWidth) - btn1.Width);
btn1.Position.Y = Abs((Random() * AnaForm.clHeight) - btn1.Height);
surearttirma.Position.X = Abs((Random() * AnaForm.clWidth) - surearttirma.Width);
surearttirma.Position.Y = Abs((Random() * AnaForm.clHeight) - surearttirma.Height);
surearttirma.visible=True;
}
if(sayac==9) //sureazaltma
{
sureazaltma.Position.X = Abs((Random() * AnaForm.clWidth) - sureazaltma.Width);
sureazaltma.Position.Y = Abs((Random() * AnaForm.clHeight) - sureazaltma.Height);
sureazaltma.visible=True;
}
if(sayac == 13)
{
AnaForm.SetFormColor('#e01f1f','',clGNone);
sayac1 = sayac1 + 5;
btn1.Position.X = Abs((Random() * AnaForm.clWidth) - btn1.Width);
btn1.Position.Y = Abs((Random() * AnaForm.clHeight) - btn1.Height);
surearttirma.Position.X = Abs((Random() * AnaForm.clWidth) - surearttirma.Width);
surearttirma.Position.Y = Abs((Random() * AnaForm.clHeight) - surearttirma.Height);
surearttirma.visible=True;
}
if(sayac==17) //sureazaltma
{
sureazaltma.Position.X = Abs((Random() * AnaForm.clWidth) - sureazaltma.Width);
sureazaltma.Position.Y = Abs((Random() * AnaForm.clHeight) - sureazaltma.Height);
sureazaltma.visible=True;
}
if(sayac == 25)
{
AnaForm.SetFormColor('#cfeb00','#db7edd',clGHorizontal);
sayac1 = sayac1 + 7;
btn1.Position.X = Abs((Random() * AnaForm.clWidth) - btn1.Width);
btn1.Position.Y = Abs((Random() * AnaForm.clHeight) - btn1.Height);
surearttirma.Position.X = Abs((Random() * AnaForm.clWidth) - surearttirma.Width);
surearttirma.Position.Y = Abs((Random() * AnaForm.clHeight) - surearttirma.Height);
surearttirma.visible=True;
}
if(sayac==29) //sureazaltma
{
sureazaltma.Position.X = Abs((Random() * AnaForm.clWidth) - sureazaltma.Width);
sureazaltma.Position.Y = Abs((Random() * AnaForm.clHeight) - sureazaltma.Height);
sureazaltma.visible=True;
}
if((sayac >= 32) && (sayac <= 55))
{
RndmTimer.Enabled = True;
randomPosition();
}
if (sayac >= 56)
{
AnaForm.SetFormColor('#ffae00','',clGNone);
RndmTimer.Enabled = False;
}
btn1.Text = IntToStr(sayac);
}
//Oyun süresi için oluşturulmuş kısım
void sure;
{
if(sayac1 == 0)
{
oyunzaman.Enabled = False;
lblTimer.caption = IntToStr(sayac1);
ShowMessage('Süreniz Doldu!');
ShowMessage('Puanınız: ' + IntToStr(sayac));
// Skoru veritabanına kaydet
SkorVeritabani = TClSqlQuery.Create(nil);
try
SkorVeritabani.Connection = Clomosy.DBSQLServerConnection;
SkorVeritabani.SQL.Text =
'INSERT INTO Skorlar (Skor,KullaniciId) VALUES ('+ IntToStr(sayac) + ', ' + QuotedStr(Clomosy.GlobalVariableString) +')';
SkorVeritabani.ExecSQL;
finally
SkorVeritabani.Free;
}
}
else
{
lblTimer.caption = IntToStr(sayac1);
Dec(sayac1);
}
}
//Ekranda bulunan her şeyin özellik kısmı eklemek için.
{
sayac=0;
sayac1=5;
AnaForm = TclForm.Create(Self);
SetupSqlConnection;
TclButton(anaForm.clFindComponent('BtnFormMenu')).Visible = False; //Clomosy'nin kendi uygulaması menü özelliği kapatıldı.
TclButton(anaForm.clFindComponent('BtnGoBack')).Visible = False; //Clomosy'nin kendi uygulaması geri özelliği kapatıldı.
//Random color kısmı
RndmTimer = AnaForm.AddNewTimer(AnaForm,'RndmTimer',100); //sürekli olacağı için timer kullanıldı.
RndmTimer.Enabled = False;
AnaForm.AddNewEvent(RndmTimer,tbeOnTimer,'randomColor');
//oyunzaman süresi
oyunzaman=AnaForm.AddNewTimer(AnaForm,'oyunzaman',1000);
oyunzaman.Enabled=False;
AnaForm.AddNewEvent(oyunzaman,tbeOnTimer,'sure');
lblTimer=AnaForm.AddNewLabel(AnaForm,'lblTimer','');
lblTimer.StyledSettings = ssFamily;
lblTimer.TextSettings.Font.Size = 35;
lblTimer.Align = alTop;
lblTimer.Height=50;
lblTimer.Width=50;
lblTimer.Margins.Left = 170;
//oyunzaman süresi
AnaForm.SetFormColor('#52504d','',clGNone);
btn1 = AnaForm.AddNewProButton(AnaForm,'btn1','Başla');
surearttirma = AnaForm.AddNewImage(AnaForm,'surearttirma');
sureazaltma = AnaForm.AddNewImage(AnaForm,'sureazaltma');
btn1.Align = alNone;
btn1.Width = 100;
btn1.Height = 100;
btn1.Position.X = (AnaForm.clWidth / 2) - (btn1.Width / 2); //konum1.
btn1.Position.Y = (AnaForm.clHeight / 2) - (btn1.Width / 2); // konum2.
btn1.visible=True;
AnaForm.SetImage(surearttirma,' https://cdn2.iconfinder.com/data/icons/chess-58/377/Time-256.png" rel="nofollow - https://cdn2.iconfinder.com/data/icons/chess-58/377/Time-256.png ');
surearttirma.Align = alNone;
surearttirma.Height = 35;
surearttirma.Width = 35;
surearttirma.Position.X = (AnaForm.clWidth / 2) - (surearttirma.Width / 2); //surearttirma konum1.
surearttirma.Position.Y = (AnaForm.clHeight / 2) - (surearttirma.Width / 2); //surearttirma konum2.
surearttirma.visible=False; //Ekranın farklı yerlerinde ek süre için çıkan resim görünürlüğü.
//SÜRE AZALTMA
AnaForm.SetImage(sureazaltma,' https://cdn2.iconfinder.com/data/icons/nasty/60/apocolypse_nuclear_explosion_atomic_bomb-256.png" rel="nofollow - https://cdn2.iconfinder.com/data/icons/nasty/60/apocolypse_nuclear_explosion_atomic_bomb-256.png ');
sureazaltma.Align = alNone;
sureazaltma.Height = 40;
sureazaltma.Width = 40;
sureazaltma.Position.X = (AnaForm.clWidth / 2) - (sureazaltma.Width / 2); //sureazaltma konum1.
sureazaltma.Position.Y = (AnaForm.clHeight / 2) - (sureazaltma.Width / 2); //sureazaltma konum2.
sureazaltma.visible=False; //Ekranın farklı yerlerinde ek süre için çıkan resim görünürlüğü.
btn1.clProSettings.BorderColor = clAlphaColor.clHexToColor('#a0a3b1');
btn1.clProSettings.FontColor = clAlphaColor.clHexToColor('#050505');
btn1.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#ffffff');
btn1.clProSettings.IsTransparent = False;
btn1.clProSettings.FontSize = 12;
btn1.clProSettings.FontVertAlign = palcenter;//palLeading , palCenter , palTrailing
btn1.clProSettings.FontHorzAlign = palCenter;
btn1.clProSettings.IsFill = True;
btn1.clProSettings.IsRound = True;
btn1.clProSettings.RoundHeight = 50;
btn1.clProSettings.RoundWidth = 50;
btn1.clProSettings.BorderWidth = 3;
btn1.SetclProSettings(btn1.clProSettings);
AnaForm.AddNewEvent(btn1,tbeOnClick,'zamanlayici'); //btn1'e tıklanınca süre etkinleşmesi için tıklanma olayı.
AnaForm.AddNewEvent(surearttirma, tbeOnClick, 'eksure'); //ek süre için tıklanma olayı.
AnaForm.AddNewEvent(sureazaltma, tbeOnClick, 'sureazalt'); //süre azaltmak için tıklanma olayı.
AnaForm.AddNewEvent(AnaForm, tbeOnMouseDown, 'onFormMouseDown');
AnaForm.Run;
}
Biz şimdi Oyun Unit kodlarımda void sure kısmında KullaniciId'yi QuotedStr(Clomosy.GlobalVariableString) buna bağladık. QuotedStr(Clomosy.GlobalVariableString) buda AnaKod kısmında KullaniciAdiEdt.Text kısmına bağlı değil mi? KullaniciAdiEdt.Text' te bir üstünde bulunan KullaniciAdi = KullaniciAdiEdt.Text; kısmıyla eşleştirildiğini düşünüyorum ben. Ama nedense işte string değeri almıyorda sadece int değerini mssql veri tabanına alıyor.