Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Genel İşlemler
  Aktif Konular Aktif Konular RSS - Veritabanına Kullanıcı Adı Çekme
  SSS SSS  Forumu Ara   Etkinlikler   Kayıt Ol Kayıt Ol  Giriş Giriş

Clomosy Resmi Forum Sitesidir. Amacımız kullanıcılarımıza, iş ortaklarımıza, danışmanlara, yazılımcılara programlarımız hakkında destek ve bilgi vermektir.

Veritabanına Kullanıcı Adı Çekme

 Yanıt Yaz Yanıt Yaz Sayfa  12>
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
emre.gungor01 Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 03 Mayıs 2024
Konum: Konya
Durum: Aktif Değil
Puanlar: 46
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı emre.gungor01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Veritabanına Kullanıcı Adı Çekme
    Gönderim Zamanı: 10 Haziran 2024 Saat 12:45
Merhabalar, oyun projemde Ana Kod ve Oyun Unit'im bulunmaktadır. Ana kod'umda giriş ekranı tasarladım ve burada giriş ekranında kullanıcı adını girdiği zaman bunu veritabanına alıyor aynı kullanıcı adıyla girmişse kullanıcı adını birdaha almayacak şekilde tasarladım. Kodları:

En sonunda gerçekleşirse Oyun Unit'ime gidiyor ve gerçekleşiyorda. Burada sıkıntı yok sadece burada bulunan kullanıcı girdiğinde kullanıcını adını yazıyor ve mssql veri tabanına kaydediyor, kaydettiği kullanıcı adını mssql'de bulunan skorlar tablomda da görmek istiyorum. Çünkü oyun Unit'imde kullanıcı adını girebileceği yer yok ve bu işlemi gerçekleştiremiyor. Eğer ki Oyun Unit dosyamda kullanıcı adını çekebiliyorsam nasıl yapabilirim?  Oyun Unit dosyama gelecek olursam oyunun oynandığı kısım tamamen burası btn1 adında butonum bulunuyor ve içerisinde sayac=Integer değerinde bir değişkenim var ve butona bastıkça içindeki sayıyı arttırıyor. Süre bittiğinde veya buton haricinde ekranın herhangi bir yerine tıklandığında oyundan çıkıyor ve bu skoru kaydetmesini istiyorum veritabanına giriş ekranında kullanıcı girişini giren kişinin yanına skorumu kaydetmesini istiyorum. Skoru nasıl veri tabanına kaydedeceğimi buldum. Kodları:
Böyle yaptığım zaman mssql'de bulunan dbo.Skorlar tabloma ekleme yapıyor. Çıktı:                
fakat benim istediğim Ana Kodda bulunan giriş ekranında kullanıcı adını giren kişiyi mssql'de bulunan dbo.Kullaniicilar tabloma eklediği gibi bunu dbo.Skorlar tablomada eklemesini istiyorum ve yanına skorunu yazmasını istiyorum ve bunu aynı kullanıcı girerse aynı kullanıcının üstüne güncel skorunu yazmasını farklı kullanıcı ise önceki kullanıcıyı geçtiği zaman üstüne yazdırmasını istiyorum mssql çıktısındaki gibi değilde 9 sayısının en üstte sonra 4 3 3 3 şeklinde ilerlemesini istiyorum. Fakat sürekli hata alıyorum bununda nedeninin Ana Kod'dan kullanıcı adını çekememden kaynaklı olduğunu düşünüyorum.
Şu şekilde Oyun Unit'imde kodu tasarladığım zaman hata veriyor.

Çıktı:


Burada şöyle düşündüm hadi ana kodda KullaniciId'yi çekemedim. OyuncuAdi'nda da hata veriyor. Sürekli olarak bu hataları yaşıyorum bunu nasıl çözebilirim?
Ana Kod:
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
  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');
  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');
  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');
  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');
  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');
  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');
  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');
  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');
  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');
  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');
  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.
 
 }

Oyun Unit Kodlarım:

Var
  AnaForm:TclForm;
 
  KullaniciAdi: String;
 
 //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;
  
  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) VALUES ('+ IntToStr(sayac) +')';
      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');
  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');
  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;
 
 }
Yukarı Dön
Developer Açılır Kutu İzle
Forum Yöneticisi
Forum Yöneticisi


Kayıt Tarihi: 14 Haziran 2023
Durum: Aktif Değil
Puanlar: 354
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Developer Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 10 Haziran 2024 Saat 14:56
Merhaba Emre,
Kullanıcı adını kontrol ettiksen sonra Clomosy.GlobalVariableString = 'Test'; diyerek. Oyun Unit'ine taşıyabilirsin kullanıcı adını skoru insert ederken de kullanıcı adını artık kullanabilirsin. Kullanıcı adını çekerken de kullaniciAdi = Clomosy.GlobalVariableString yapabilirsin.
Kolay Gelsin 
Yukarı Dön
emre.gungor01 Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 03 Mayıs 2024
Konum: Konya
Durum: Aktif Değil
Puanlar: 46
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı emre.gungor01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 10 Haziran 2024 Saat 17:14
Bunları nereye yazacağıma dair bir bilgi vermemişsiniz. Bir bilgi verebilirseniz işimi dahada kolay hale gelebilmesi ve ilerde sorun yaşayabilirsem düzeltmek için zaman ayırabilirim.
Yukarı Dön
Developer Açılır Kutu İzle
Forum Yöneticisi
Forum Yöneticisi


Kayıt Tarihi: 14 Haziran 2023
Durum: Aktif Değil
Puanlar: 354
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Developer Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 11 Haziran 2024 Saat 11:42
Merhaba Emre,

/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; //Burada kullanıcı adının atamsını yaptın.
  finally
    OyunVeritabani.Free;
  }
  Clomosy.RunUnit('Oyun');  //Oyun adlı Unit'e gitmek için.
}

//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);
    }
  }




İyi Çalışmalar
Yukarı Dön
emre.gungor01 Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 03 Mayıs 2024
Konum: Konya
Durum: Aktif Değil
Puanlar: 46
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı emre.gungor01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 11 Haziran 2024 Saat 16:28
Merhabalar;
İstediğim gibi sonuç aldım teşekkürler. Fakat bu sefer hesaba katmadığımız bir sorun var. Beni mssql veritabanımda bulunan dbo.Kullaniicilar tablomda Id int türünde bunda sıkıntı yok, OyuncuAdi nvarchar(50) türünde 

Görsel:

Giriş ekranında string türünde veriyle giriş yapabiliyorum ve oyunumuda oynayabiliyorum, oyun sonunda 

Bu hatayla karşılaşıyorum kullaniicilar tabloma alıyor kullanıcı adını fakat dbo.Skorlar tabloma o ismi almıyor. Bende giriş ekranında int tipinde değer girerek denedim ve oluyor hem dbo.Kullanicilar tabloma ekliyor hemde dbo.Skorlar tabloma ekliyor.

Görseller:



Burası Skorlar tablosu:


Burası Kullaniicilar tablosu:


Peki ben giriş ekranında string veri türünde girmek istediğimde skorlar tabloma kaydetmiyor, kullaniicilar tabloma kaydediyorsa her iki tabloma da nasıl kayıt ettirebilirim?
Yukarı Dön
Atiker01 Açılır Kutu İzle
Forum Yöneticisi
Forum Yöneticisi


Kayıt Tarihi: 26 Temmuz 2023
Durum: Aktif Değil
Puanlar: 92
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Atiker01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 11 Haziran 2024 Saat 16:33
Merhaba Emre,

görselleri ve hataları yüklememişsin. Tekrar atabilir misin?
Yukarı Dön
emre.gungor01 Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 03 Mayıs 2024
Konum: Konya
Durum: Aktif Değil
Puanlar: 46
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı emre.gungor01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 11 Haziran 2024 Saat 16:46
Merhabalar;
İstediğim gibi sonuç aldım teşekkürler. Fakat bu sefer hesaba katmadığımız bir sorun var. Beni mssql veritabanımda bulunan dbo.Kullaniicilar tablomda Id int türünde bunda sıkıntı yok, OyuncuAdi nvarchar(50) türünde 

Görsel;

Giriş ekranında string türünde veriyle giriş yapabiliyorum ve oyunumuda oynayabiliyorum, oyun sonunda 



Bu hatayla karşılaşıyorum kullaniicilar tabloma alıyor kullanıcı adını fakat dbo.Skorlar tabloma o ismi almıyor. Bende giriş ekranında int tipinde değer girerek denedim ve oluyor hem dbo.Kullanicilar tabloma ekliyor hemde dbo.Skorlar tabloma ekliyor.

Görseller:

Böyle girdiğimde sorun çıkmıyor.Sadece string türünde kullanıcı adı girdiğimde çıkıyor.


Burası Kullaniicilar tablosu:


Burası Skorlar tablosu:


Peki ben giriş ekranında string veri türünde girmek istediğimde skorlar tabloma kaydetmiyor, kullaniicilar tabloma kaydediyorsa her iki tabloma da nasıl kayıt ettirebilirim?
Yukarı Dön
Developer Açılır Kutu İzle
Forum Yöneticisi
Forum Yöneticisi


Kayıt Tarihi: 14 Haziran 2023
Durum: Aktif Değil
Puanlar: 354
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Developer Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 11 Haziran 2024 Saat 18:09
Merhaba Emre 
Sanınırm KullaniciId kalmış sql Insert cümlende bunu değiştirmen gerekiyor. OyuncuAdi yazman gerekiyor. Çünki sql senden int değer türü bekliyor.
eğer anlamazsan kodunu yükler misin 
Kolay Gelsin 
Yukarı Dön
emre.gungor01 Açılır Kutu İzle
Deneyimli Üye
Deneyimli Üye


Kayıt Tarihi: 03 Mayıs 2024
Konum: Konya
Durum: Aktif Değil
Puanlar: 46
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı emre.gungor01 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 11 Haziran 2024 Saat 18:19
AnaKod:

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');
  resim1.Height=120;
  resim1.Width=120;
  resim1.Align=alBottom;
  resim1.Margins.Right=350;
  
  //resim2
  resim2=AnaForm.AddNewImage(AnaForm,'resim2');
  resim2.Height=120;
  resim2.Width=120;
  resim2.Align=alCenter;
  resim2.Margins.Right=500;
  
  //resim3
  resim3=AnaForm.AddNewImage(AnaForm,'resim3');
  resim3.Height=65;
  resim3.Width=65;
  resim3.Align=alCenter;
  resim3.Margins.Left=500;
  
  //resim4
  resim4=AnaForm.AddNewImage(AnaForm,'resim4');
  resim4.Height=120;
  resim4.Width=120;
  resim4.Align=alBottom;
  resim4.Margins.Left=400;
  
  //resim5
  resim5=AnaForm.AddNewImage(AnaForm,'resim5');
  resim5.Height=80;
  resim5.Width=80;
  resim5.Align=alTop;
  resim5.Margins.Right=200;
  
  //resim6
  resim6=AnaForm.AddNewImage(AnaForm,'resim6');
  resim6.Height=80;
  resim6.Width=80;
  resim6.Align=alTop;
  resim6.Margins.Left=400;
 
  //bomba1
  bomba1=AnaForm.AddNewImage(AnaForm,'bomba1');
  bomba1.Height=60;
  bomba1.Width=60;
  bomba1.Align=alBottom;
  bomba1.Margins.Left=200;
  
  //time1
  time1=AnaForm.AddNewImage(AnaForm,'time1');
  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"}');
  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"}');
  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.
 
 }

Oyun Unit Kodları:


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;
   
  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
  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.
Yukarı Dön
Developer Açılır Kutu İzle
Forum Yöneticisi
Forum Yöneticisi


Kayıt Tarihi: 14 Haziran 2023
Durum: Aktif Değil
Puanlar: 354
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Developer Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 12 Haziran 2024 Saat 12:00
Merhaba Emre 
 'INSERT INTO Kullaniicilar (OyuncuAdi) VALUES (' + QuotedStr(KullaniciAdiEdt.Text) + '); ' 
Bunda hata var 
INSERT INTO Kullaniicilar (id,OyuncuAdi) VALUES (2,' + QuotedStr(KullaniciAdiEdt.Text) + '); 
Böyle dener misin 
Yukarı Dön
 Yanıt Yaz Yanıt Yaz Sayfa  12>

Forum Atla Forum İzinleri Açılır Kutu İzle

Forum Software by Web Wiz Forums® version 12.07
Copyright ©2001-2024 Web Wiz Ltd.

Bu Sayfa 0,125 Saniyede Yüklendi.