Sayfayı Yazdır | Pencereyi Kapat

kod hatası

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Clomosy ile değişken kullanımı
Forum Tanımlaması: TRObject dili ile değişken tanımlaması ve ekranda gösterme
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1452
Tarih: 16 Haziran 2026 Saat 01:11
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: kod hatası
Mesajı Yazan: Hüseyin_Sadik
Konu: kod hatası
Mesaj Tarihi: 24 Nisan 2026 Saat 12:26
    var
      MyForm: TclForm;
      CanliMQTT: TclMQTT;
      PnlMain, PnlHeader, PnlContent, PnlLeft, PnlRight: TclProPanel;
      PnlStatus, PnlControls, PnlAnswers, PnlWinner: TclProPanel;
      LblTitle, LblSubTitle, LblKirmiziDurum, LblMaviDurum: TclProLabel;
      LblSoruText, LblKirmiziCevap, LblMaviCevap, LblWinner: TclProLabel;
      BtnBaslat, BtnKontrolEt, BtnYonlendir, BtnSonrakiSoru: TclProButton;
      MemoLog: TclMemo;
      KirmiziHazir, MaviHazir: Boolean;
      KirmiziCevap, MaviCevap: String;
      KirmiziDogru, MaviDogru: Boolean;
      KirmiziSure, MaviSure: Integer;
      KazananRengi: String;
      SoruAktif: Boolean;
      SoruMetni, SecenekA, SecenekB, SecenekC, SecenekD, DogruCevap: String;
      GelenMesaj, Komut, GelenRenk, GelenCevap, GelenSureStr: String;

{
  if (Clomosy.PlatformIsMobile)
  {
    Clomosy.RunUnit('renksec');
  }
  else
  {
    void MQTTMesajGelince;
    {
      if (CanliMQTT.ReceivedAlright)
      {
        GelenMesaj = CanliMQTT.ReceivedMessage;
        Komut = clGetStringTo(GelenMesaj, '|');
        
        if (Komut == 'RENK_SEC')
        {
          GelenRenk = clGetStringAfter(GelenMesaj, '|');
          if (GelenRenk == 'Kirmizi')
          {
            KirmiziHazir = True;
            LblKirmiziDurum.Text = '🔴 KIRMIZI: HAZIR';
            LblKirmiziDurum.clProSettings.FontColor = clAlphaColor.clLime;
            LblKirmiziDurum.SetclProSettings(LblKirmiziDurum.clProSettings);
            MemoLog.Lines.Add('✓ Kırmızı oyuncu hazır');
          }
          else if (GelenRenk == 'Mavi')
          {
            MaviHazir = True;
            LblMaviDurum.Text = '🔵 MAVİ: HAZIR';
            LblMaviDurum.clProSettings.FontColor = clAlphaColor.clLime;
            LblMaviDurum.SetclProSettings(LblMaviDurum.clProSettings);
            MemoLog.Lines.Add('✓ Mavi oyuncu hazır');
          }
          
          if (KirmiziHazir and MaviHazir)
          {
            BtnBaslat.Enabled = True;
          }
        }
        
        if (Komut == 'CEVAP')
        {
          GelenRenk = clGetStringTo(clGetStringAfter(GelenMesaj, '|'), '|');
          GelenCevap = clGetStringAfter(clGetStringAfter(GelenMesaj, '|'), '|');
          GelenSureStr = clGetStringAfter(clGetStringAfter(clGetStringAfter(GelenMesaj, '|'), '|'), '|');
          
          if (GelenRenk == 'Kirmizi')
          {
            KirmiziCevap = GelenCevap;
            KirmiziSure = StrToInt(GelenSureStr);
            LblKirmiziCevap.Text = '🔴 Kırmızı: ' + GelenCevap + ' (' + GelenSureStr + ' sn)';
            MemoLog.Lines.Add('📝 Kırmızı cevap verdi: ' + GelenCevap + ' (' + GelenSureStr + ' sn)');
          }
          else if (GelenRenk == 'Mavi')
          {
            MaviCevap = GelenCevap;
            MaviSure = StrToInt(GelenSureStr);
            LblMaviCevap.Text = '🔵 Mavi: ' + GelenCevap + ' (' + GelenSureStr + ' sn)';
            MemoLog.Lines.Add('📝 Mavi cevap verdi: ' + GelenCevap + ' (' + GelenSureStr + ' sn)');
          }
          
          if (KirmiziCevap <> '' and MaviCevap <> '')
          {
            BtnKontrolEt.Enabled = True;
          }
        }
      }
    }

    void YarismayiBaslat;
    {
      if (not KirmiziHazir)
      {
        ShowMessage('Kırmızı oyuncu hazır değil!');
        return;
      }
      if (not MaviHazir)
      {
        ShowMessage('Mavi oyuncu hazır değil!');
        return;
      }
      
      SoruMetni = 'Türkiye''nin başkenti neresidir?';
      SecenekA = 'İstanbul';
      SecenekB = 'Ankara';
      SecenekC = 'İzmir';
      SecenekD = 'Bursa';
      DogruCevap = 'B';
      
      LblSoruText.Text = SoruMetni;
      
      KirmiziCevap = '';
      MaviCevap = '';
      KirmiziDogru = False;
      MaviDogru = False;
      KirmiziSure = 0;
      MaviSure = 0;
      BtnKontrolEt.Enabled = False;
      BtnYonlendir.Enabled = False;
      SoruAktif = True;
      
      LblKirmiziCevap.Text = '🔴 Kırmızı: Bekleniyor...';
      LblMaviCevap.Text = '🔵 Mavi: Bekleniyor...';
      
      CanliMQTT.Send('SORU|' + SoruMetni + '|' + SecenekA + '|' + SecenekB + '|' + SecenekC + '|' + SecenekD);
      
      MemoLog.Lines.Add('🚀 Yarışma başlatıldı! Soru gönderildi.');
      BtnBaslat.Enabled = False;
    }

    void CevapKontrolEt;
    {
      if (KirmiziCevap == DogruCevap)
      {
        KirmiziDogru = True;
        MemoLog.Lines.Add('✅ Kırmızı DOĞRU cevap verdi!');
      }
      else
      {
        KirmiziDogru = False;
        MemoLog.Lines.Add('❌ Kırmızı YANLIŞ cevap verdi!');
      }
      
      if (MaviCevap == DogruCevap)
      {
        MaviDogru = True;
        MemoLog.Lines.Add('✅ Mavi DOĞRU cevap verdi!');
      }
      else
      {
        MaviDogru = False;
        MemoLog.Lines.Add('❌ Mavi YANLIŞ cevap verdi!');
      }
      
      if (KirmiziDogru and not MaviDogru)
      {
        KazananRengi = 'Kirmizi';
        LblWinner.Text = '🏆 KAZANAN: KIRMIZI 🏆';
        MemoLog.Lines.Add('🏆 Kırmızı kazandı!');
        BtnYonlendir.Enabled = True;
      }
      else if (MaviDogru and not KirmiziDogru)
      {
        KazananRengi = 'Mavi';
        LblWinner.Text = '🏆 KAZANAN: MAVİ 🏆';
        MemoLog.Lines.Add('🏆 Mavi kazandı!');
        BtnYonlendir.Enabled = True;
      }
      else if (KirmiziDogru and MaviDogru)
      {
        if (KirmiziSure < MaviSure)
        {
          KazananRengi = 'Kirmizi';
          LblWinner.Text = '🏆 KAZANAN: KIRMIZI (daha hızlı) 🏆';
          MemoLog.Lines.Add('🏆 Kırmızı daha hızlı cevap verdi ve kazandı!');
        }
        else if (MaviSure < KirmiziSure)
        {
          KazananRengi = 'Mavi';
          LblWinner.Text = '🏆 KAZANAN: MAVİ (daha hızlı) 🏆';
          MemoLog.Lines.Add('🏆 Mavi daha hızlı cevap verdi ve kazandı!');
        }
        else
        {
          KazananRengi = 'Kirmizi';
          LblWinner.Text = '🏆 KAZANAN: KIRMIZI (beraberlik) 🏆';
          MemoLog.Lines.Add('🏆 Beraberlik! Kırmızı kazanan sayıldı.');
        }
        BtnYonlendir.Enabled = True;
      }
      else
      {
        LblWinner.Text = '❌ İKİSİ DE YANLIŞ! Yeni soruya geçiliyor...';
        MemoLog.Lines.Add('❌ İkisi de yanlış cevap verdi!');
        BtnSonrakiSoru.Enabled = True;
      }
      
      if (KirmiziDogru)
      {
        CanliMQTT.Send('SONUC|Kirmizi|Dogru');
      }
      else
      {
        CanliMQTT.Send('SONUC|Kirmizi|Yanlis');
      }
        
      if (MaviDogru)
      {
        CanliMQTT.Send('SONUC|Mavi|Dogru');
      }
      else
      {
        CanliMQTT.Send('SONUC|Mavi|Yanlis');
      }
        
      BtnKontrolEt.Enabled = False;
    }

    void Yonlendir;
    {
      if (KazananRengi == 'Kirmizi')
      {
        CanliMQTT.Send('YONLENDIR|Kirmizi|RobotKontrol');
        CanliMQTT.Send('YONLENDIR|Mavi|RobotBekle');
        MemoLog.Lines.Add('🎮 Kırmızı robot kontrolüne yönlendirildi, Mavi beklemeye alındı.');
      }
      else if (KazananRengi == 'Mavi')
      {
        CanliMQTT.Send('YONLENDIR|Mavi|RobotKontrol');
        CanliMQTT.Send('YONLENDIR|Kirmizi|RobotBekle');
        MemoLog.Lines.Add('🎮 Mavi robot kontrolüne yönlendirildi, Kırmızı beklemeye alındı.');
      }
      
      BtnYonlendir.Enabled = False;
      BtnSonrakiSoru.Enabled = True;
    }

    void RobotBitti;
    {
      MemoLog.Lines.Add('✅ Robot işlemi tamamlandı. Sıradaki soruya hazırlanılıyor.');
      CanliMQTT.Send('ROBOT_BITTI');
      
      KirmiziHazir = True;
      MaviHazir = True;
      KirmiziCevap = '';
      MaviCevap = '';
      KirmiziDogru = False;
      MaviDogru = False;
      
      LblKirmiziDurum.Text = '🔴 KIRMIZI: HAZIR';
      LblMaviDurum.Text = '🔵 MAVİ: HAZIR';
      BtnBaslat.Enabled = True;
      BtnSonrakiSoru.Enabled = False;
    }

    void SonrakiSorunaGit;
    {
      SoruAktif = False;
      LblWinner.Text = '🏆 Yeni soruya hazırlanılıyor...';
      BtnSonrakiSoru.Enabled = False;
      MemoLog.Lines.Add('➡️ Yeni soruya geçmek için "Yarışmayı Başlat" butonuna basın.');
    }

    {
      MyForm = TclForm.Create(Self);
      MyForm.LytTopBar.Visible = False;
      MyForm.SetFormColor('#0F172A', '', clGNone);
      
      CanliMQTT = MyForm.AddNewMQTTConnection(MyForm, 'CanliMQTT');
      CanliMQTT.Channel = 'Yarisma2026_App';
      MyForm.AddNewEvent(CanliMQTT, tbeOnMQTTPublishReceived, 'MQTTMesajGelince');
      CanliMQTT.Connect;
      
      PnlMain = MyForm.AddNewProPanel(MyForm, 'PnlMain');
      PnlMain.Align = alClient;
      PnlMain.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A');
      PnlMain.SetclProSettings(PnlMain.clProSettings);
      
      PnlHeader = MyForm.AddNewProPanel(PnlMain, 'PnlHeader');
      PnlHeader.Align = alTop;
      PnlHeader.Height = 80;
      PnlHeader.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
      PnlHeader.SetclProSettings(PnlHeader.clProSettings);
      
      LblTitle = MyForm.AddNewProLabel(PnlHeader, 'LblTitle', '🏁 YARIŞMA ADMIN PANELİ');
      LblTitle.Align = alTop;
      LblTitle.Height = 35;
      LblTitle.Margins.Top = 15;
      LblTitle.Margins.Left = 20;
      LblTitle.clProSettings.FontColor = clAlphaColor.clWhite;
      LblTitle.clProSettings.FontSize = 18;
      LblTitle.clProSettings.TextSettings.Font.Style = [fsBold];
      LblTitle.SetclProSettings(LblTitle.clProSettings);
      
      LblSubTitle = MyForm.AddNewProLabel(PnlHeader, 'LblSubTitle', 'MQTT ile Canlı Yarışma Yönetimi');
      LblSubTitle.Align = alTop;
      LblSubTitle.Height = 20;
      LblSubTitle.Margins.Left = 20;
      LblSubTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#818CF8');
      LblSubTitle.clProSettings.FontSize = 12;
      LblSubTitle.SetclProSettings(LblSubTitle.clProSettings);
      
      PnlContent = MyForm.AddNewProPanel(PnlMain, 'PnlContent');
      PnlContent.Align = alClient;
      PnlContent.Margins.Left = 20;
      PnlContent.Margins.Right = 20;
      PnlContent.Margins.Top = 20;
      PnlContent.Margins.Bottom = 20;
      
      PnlRight = MyForm.AddNewProPanel(PnlContent, 'PnlRight');
      PnlRight.Align = alRight;
      PnlRight.Width = 350;
      PnlRight.Margins.Left = 20;
      
      MemoLog = MyForm.AddNewMemo(PnlRight, 'MemoLog', '');
      MemoLog.Align = alClient;
      MemoLog.ReadOnly = True;
      MemoLog.Lines.Add('=== YARIŞMA LOGU ===');
      
      PnlLeft = MyForm.AddNewProPanel(PnlContent, 'PnlLeft');
      PnlLeft.Align = alClient;
      
      PnlStatus = MyForm.AddNewProPanel(PnlLeft, 'PnlStatus');
      PnlStatus.Align = alTop;
      PnlStatus.Height = 100;
      PnlStatus.Margins.Bottom = 20;
      PnlStatus.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
      PnlStatus.clProSettings.RoundHeight = 15;
      PnlStatus.clProSettings.RoundWidth = 15;
      PnlStatus.SetclProSettings(PnlStatus.clProSettings);
      
      LblKirmiziDurum = MyForm.AddNewProLabel(PnlStatus, 'LblKirmiziDurum', '🔴 KIRMIZI: BEKLİYOR');
      LblKirmiziDurum.Align = alLeft;
      LblKirmiziDurum.Width = 200;
      LblKirmiziDurum.Margins.Top = 20;
      LblKirmiziDurum.Margins.Left = 20;
      LblKirmiziDurum.clProSettings.FontColor = clAlphaColor.clRed;
      LblKirmiziDurum.clProSettings.FontSize = 16;
      LblKirmiziDurum.clProSettings.TextSettings.Font.Style = [fsBold];
      LblKirmiziDurum.SetclProSettings(LblKirmiziDurum.clProSettings);
      
      LblMaviDurum = MyForm.AddNewProLabel(PnlStatus, 'LblMaviDurum', '🔵 MAVİ: BEKLİYOR');
      LblMaviDurum.Align = alRight;
      LblMaviDurum.Width = 200;
      LblMaviDurum.Margins.Top = 20;
      LblMaviDurum.Margins.Right = 20;
      LblMaviDurum.clProSettings.FontColor = clAlphaColor.clBlue;
      LblMaviDurum.clProSettings.FontSize = 16;
      LblMaviDurum.clProSettings.TextSettings.Font.Style = [fsBold];
      LblMaviDurum.SetclProSettings(LblMaviDurum.clProSettings);
      
      PnlAnswers = MyForm.AddNewProPanel(PnlLeft, 'PnlAnswers');
      PnlAnswers.Align = alTop;
      PnlAnswers.Height = 200;
      PnlAnswers.Margins.Bottom = 20;
      PnlAnswers.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
      PnlAnswers.clProSettings.RoundHeight = 15;
      PnlAnswers.clProSettings.RoundWidth = 15;
      PnlAnswers.SetclProSettings(PnlAnswers.clProSettings);
      
      LblSoruText = MyForm.AddNewProLabel(PnlAnswers, 'LblSoruText', 'Soru burada görünecek...');
      LblSoruText.Align = alTop;
      LblSoruText.Height = 50;
      LblSoruText.Margins.Top = 15;
      LblSoruText.Margins.Left = 15;
      LblSoruText.clProSettings.FontColor = clAlphaColor.clWhite;
      LblSoruText.clProSettings.FontSize = 16;
      LblSoruText.clProSettings.TextSettings.Font.Style = [fsBold];
      LblSoruText.SetclProSettings(LblSoruText.clProSettings);
      
      LblKirmiziCevap = MyForm.AddNewProLabel(PnlAnswers, 'LblKirmiziCevap', '🔴 Kırmızı: Bekleniyor...');
      LblKirmiziCevap.Align = alTop;
      LblKirmiziCevap.Height = 30;
      LblKirmiziCevap.Margins.Left = 15;
      LblKirmiziCevap.Margins.Top = 10;
      LblKirmiziCevap.clProSettings.FontColor = clAlphaColor.clHexToColor('#FCA5A5');
      LblKirmiziCevap.SetclProSettings(LblKirmiziCevap.clProSettings);
      
      LblMaviCevap = MyForm.AddNewProLabel(PnlAnswers, 'LblMaviCevap', '🔵 Mavi: Bekleniyor...');
      LblMaviCevap.Align = alTop;
      LblMaviCevap.Height = 30;
      LblMaviCevap.Margins.Left = 15;
      LblMaviCevap.clProSettings.FontColor = clAlphaColor.clHexToColor('#93C5FD');
      LblMaviCevap.SetclProSettings(LblMaviCevap.clProSettings);
      
      PnlWinner = MyForm.AddNewProPanel(PnlLeft, 'PnlWinner');
      PnlWinner.Align = alTop;
      PnlWinner.Height = 80;
      PnlWinner.Margins.Bottom = 20;
      PnlWinner.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
      PnlWinner.clProSettings.RoundHeight = 15;
      PnlWinner.clProSettings.RoundWidth = 15;
      PnlWinner.SetclProSettings(PnlWinner.clProSettings);
      
      LblWinner = MyForm.AddNewProLabel(PnlWinner, 'LblWinner', '🏆 Kazanan henüz belli değil');
      LblWinner.Align = alClient;
      LblWinner.clProSettings.FontColor = clAlphaColor.clYellow;
      LblWinner.clProSettings.FontSize = 18;
      LblWinner.clProSettings.FontHorzAlign = palCenter;
      LblWinner.clProSettings.TextSettings.Font.Style = [fsBold];
      LblWinner.SetclProSettings(LblWinner.clProSettings);
      
      PnlControls = MyForm.AddNewProPanel(PnlLeft, 'PnlControls');
      PnlControls.Align = alTop;
      PnlControls.Height = 60;
      
      BtnBaslat = MyForm.AddNewProButton(PnlControls, 'BtnBaslat', '🚦 YARIŞMAYI BAŞLAT');
      BtnBaslat.Align = alLeft;
      BtnBaslat.Width = 180;
      BtnBaslat.Height = 50;
      BtnBaslat.Margins.Right = 10;
      BtnBaslat.Enabled = False;
      BtnBaslat.clProSettings.BackgroundColor = clAlphaColor.clGreen;
      BtnBaslat.clProSettings.FontColor = clAlphaColor.clWhite;
      BtnBaslat.clProSettings.RoundHeight = 10;
      BtnBaslat.clProSettings.RoundWidth = 10;
      BtnBaslat.SetclProSettings(BtnBaslat.clProSettings);
      MyForm.AddNewEvent(BtnBaslat, tbeOnClick, 'YarismayiBaslat');
      
      BtnKontrolEt = MyForm.AddNewProButton(PnlControls, 'BtnKontrolEt', '✅ CEVAPLARI KONTROL ET');
      BtnKontrolEt.Align = alLeft;
      BtnKontrolEt.Width = 180;
      BtnKontrolEt.Height = 50;
      BtnKontrolEt.Margins.Right = 10;
      BtnKontrolEt.Enabled = False;
      BtnKontrolEt.clProSettings.BackgroundColor = clAlphaColor.clBlue;
      BtnKontrolEt.clProSettings.FontColor = clAlphaColor.clWhite;
      BtnKontrolEt.clProSettings.RoundHeight = 10;
      BtnKontrolEt.clProSettings.RoundWidth = 10;
      BtnKontrolEt.SetclProSettings(BtnKontrolEt.clProSettings);
      MyForm.AddNewEvent(BtnKontrolEt, tbeOnClick, 'CevapKontrolEt');
      
      BtnYonlendir = MyForm.AddNewProButton(PnlControls, 'BtnYonlendir', '🎮 YÖNLENDİR');
      BtnYonlendir.Align = alLeft;
      BtnYonlendir.Width = 150;
      BtnYonlendir.Height = 50;
      BtnYonlendir.Margins.Right = 10;
      BtnYonlendir.Enabled = False;
      BtnYonlendir.clProSettings.BackgroundColor = clAlphaColor.clPurple;
      BtnYonlendir.clProSettings.FontColor = clAlphaColor.clWhite;
      BtnYonlendir.clProSettings.RoundHeight = 10;
      BtnYonlendir.clProSettings.RoundWidth = 10;
      BtnYonlendir.SetclProSettings(BtnYonlendir.clProSettings);
      MyForm.AddNewEvent(BtnYonlendir, tbeOnClick, 'Yonlendir');
      
      BtnSonrakiSoru = MyForm.AddNewProButton(PnlControls, 'BtnSonrakiSoru', '⏩ SONRAKİ SORU');
      BtnSonrakiSoru.Align = alLeft;
      BtnSonrakiSoru.Width = 150;
      BtnSonrakiSoru.Height = 50;
      BtnSonrakiSoru.Enabled = False;
      BtnSonrakiSoru.clProSettings.BackgroundColor = clAlphaColor.clOrange;
      BtnSonrakiSoru.clProSettings.FontColor = clAlphaColor.clWhite;
      BtnSonrakiSoru.clProSettings.RoundHeight = 10;
      BtnSonrakiSoru.clProSettings.RoundWidth = 10;
      BtnSonrakiSoru.SetclProSettings(BtnSonrakiSoru.clProSettings);
      MyForm.AddNewEvent(BtnSonrakiSoru, tbeOnClick, 'SonrakiSorunaGit');
      
      KirmiziHazir = False;
      MaviHazir = False;
      SoruAktif = False;
      KirmiziCevap = '';
      MaviCevap = '';
      
      MyForm.Run;
    }
  }
}

bunun neden çalışmadığını hala anlamadımAngry
< defer="" ="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" -cf-beacon=""version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"_timing":"name":"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true,"location_startswith":null" crossorigin="anonymous">



Cevaplar:
Mesajı Yazan: kaanl0
Mesaj Tarihi: 24 Nisan 2026 Saat 16:44
Merhaba birkaç hatan var.  MQTTMesajGelince prosedürünü else bloğunun içine yazmışsın. 2. hata if sorgularında and yerine && kullanıyoruz. Hataları düzeltip iletiyorum şuanda hata almıyoruz.

var
  MyForm: TclForm;
  CanliMQTT: TclMQTT;
  PnlMain, PnlHeader, PnlContent, PnlLeft, PnlRight: TclProPanel;
  PnlStatus, PnlControls, PnlAnswers, PnlWinner: TclProPanel;
  LblTitle, LblSubTitle, LblKirmiziDurum, LblMaviDurum: TclProLabel;
  LblSoruText, LblKirmiziCevap, LblMaviCevap, LblWinner: TclProLabel;
  BtnBaslat, BtnKontrolEt, BtnYonlendir, BtnSonrakiSoru: TclProButton;
  MemoLog: TclMemo;
  KirmiziHazir, MaviHazir: Boolean;
  KirmiziCevap, MaviCevap: String;
  KirmiziDogru, MaviDogru: Boolean;
  KirmiziSure, MaviSure: Integer;
  KazananRengi: String;
  SoruAktif: Boolean;
  SoruMetni, SecenekA, SecenekB, SecenekC, SecenekD, DogruCevap: String;
  GelenMesaj, Komut, GelenRenk, GelenCevap, GelenSureStr: String;

// ============================================================================
//   FONKSİYON TANIMLAMALARI
// ============================================================================

void MQTTMesajGelince;
{
  if (CanliMQTT.ReceivedAlright)
  {
    GelenMesaj = CanliMQTT.ReceivedMessage;
    Komut = clGetStringTo(GelenMesaj, '|');
    
    if (Komut == 'RENK_SEC')
    {
      GelenRenk = clGetStringAfter(GelenMesaj, '|');
      if (GelenRenk == 'Kirmizi')
      {
        KirmiziHazir = True;
        LblKirmiziDurum.Text = '🔴 KIRMIZI: HAZIR';
        LblKirmiziDurum.clProSettings.FontColor = clAlphaColor.clLime;
        LblKirmiziDurum.SetclProSettings(LblKirmiziDurum.clProSettings);
        MemoLog.Lines.Add('✓ Kırmızı oyuncu hazır');
      }
      else if (GelenRenk == 'Mavi')
      {
        MaviHazir = True;
        LblMaviDurum.Text = '🔵 MAVİ: HAZIR';
        LblMaviDurum.clProSettings.FontColor = clAlphaColor.clLime;
        LblMaviDurum.SetclProSettings(LblMaviDurum.clProSettings);
        MemoLog.Lines.Add('✓ Mavi oyuncu hazır');
      }
      
      // DÜZELTME: and yerine &&
      if ((KirmiziHazir == True) && (MaviHazir == True))
      {
        BtnBaslat.Enabled = True;
      }
    }
    
    if (Komut == 'CEVAP')
    {
      GelenRenk = clGetStringTo(clGetStringAfter(GelenMesaj, '|'), '|');
      GelenCevap = clGetStringAfter(clGetStringAfter(GelenMesaj, '|'), '|');
      GelenSureStr = clGetStringAfter(clGetStringAfter(clGetStringAfter(GelenMesaj, '|'), '|'), '|');
      
      if (GelenRenk == 'Kirmizi')
      {
        KirmiziCevap = GelenCevap;
        KirmiziSure = StrToInt(GelenSureStr);
        LblKirmiziCevap.Text = '🔴 Kırmızı: ' + GelenCevap + ' (' + GelenSureStr + ' sn)';
        MemoLog.Lines.Add('📝 Kırmızı cevap verdi: ' + GelenCevap + ' (' + GelenSureStr + ' sn)');
      }
      else if (GelenRenk == 'Mavi')
      {
        MaviCevap = GelenCevap;
        MaviSure = StrToInt(GelenSureStr);
        LblMaviCevap.Text = '🔵 Mavi: ' + GelenCevap + ' (' + GelenSureStr + ' sn)';
        MemoLog.Lines.Add('📝 Mavi cevap verdi: ' + GelenCevap + ' (' + GelenSureStr + ' sn)');
      }
      
      // DÜZELTME: and yerine &&
      if ((KirmiziCevap <> '') && (MaviCevap <> ''))
      {
        BtnKontrolEt.Enabled = True;
      }
    }
  }
}

void YarismayiBaslat;
{
  // DÜZELTME: not yerine == False
  if (KirmiziHazir == False)
  {
    ShowMessage('Kırmızı oyuncu hazır değil!');
    Exit;
  }
  if (MaviHazir == False)
  {
    ShowMessage('Mavi oyuncu hazır değil!');
    Exit;
  }
  
  SoruMetni = 'Türkiye''nin başkenti neresidir?';
  SecenekA = 'İstanbul';
  SecenekB = 'Ankara';
  SecenekC = 'İzmir';
  SecenekD = 'Bursa';
  DogruCevap = 'B';
  
  LblSoruText.Text = SoruMetni;
  
  KirmiziCevap = '';
  MaviCevap = '';
  KirmiziDogru = False;
  MaviDogru = False;
  KirmiziSure = 0;
  MaviSure = 0;
  BtnKontrolEt.Enabled = False;
  BtnYonlendir.Enabled = False;
  SoruAktif = True;
  
  LblKirmiziCevap.Text = '🔴 Kırmızı: Bekleniyor...';
  LblMaviCevap.Text = '🔵 Mavi: Bekleniyor...';
  
  CanliMQTT.Send('SORU|' + SoruMetni + '|' + SecenekA + '|' + SecenekB + '|' + SecenekC + '|' + SecenekD);
  
  MemoLog.Lines.Add('🚀 Yarışma başlatıldı! Soru gönderildi.');
  BtnBaslat.Enabled = False;
}

void CevapKontrolEt;
{
  if (KirmiziCevap == DogruCevap)
  {
    KirmiziDogru = True;
    MemoLog.Lines.Add('✅ Kırmızı DOĞRU cevap verdi!');
  }
  else
  {
    KirmiziDogru = False;
    MemoLog.Lines.Add('❌ Kırmızı YANLIŞ cevap verdi!');
  }
  
  if (MaviCevap == DogruCevap)
  {
    MaviDogru = True;
    MemoLog.Lines.Add('✅ Mavi DOĞRU cevap verdi!');
  }
  else
  {
    MaviDogru = False;
    MemoLog.Lines.Add('❌ Mavi YANLIŞ cevap verdi!');
  }
  
  // DÜZELTMELER: and yerine &&, not yerine == False
  if ((KirmiziDogru == True) && (MaviDogru == False))
  {
    KazananRengi = 'Kirmizi';
    LblWinner.Text = '🏆 KAZANAN: KIRMIZI 🏆';
    MemoLog.Lines.Add('🏆 Kırmızı kazandı!');
    BtnYonlendir.Enabled = True;
  }
  else if ((MaviDogru == True) && (KirmiziDogru == False))
  {
    KazananRengi = 'Mavi';
    LblWinner.Text = '🏆 KAZANAN: MAVİ 🏆';
    MemoLog.Lines.Add('🏆 Mavi kazandı!');
    BtnYonlendir.Enabled = True;
  }
  else if ((KirmiziDogru == True) && (MaviDogru == True))
  {
    if (KirmiziSure < MaviSure)
    {
      KazananRengi = 'Kirmizi';
      LblWinner.Text = '🏆 KAZANAN: KIRMIZI (daha hızlı) 🏆';
      MemoLog.Lines.Add('🏆 Kırmızı daha hızlı cevap verdi ve kazandı!');
    }
    else if (MaviSure < KirmiziSure)
    {
      KazananRengi = 'Mavi';
      LblWinner.Text = '🏆 KAZANAN: MAVİ (daha hızlı) 🏆';
      MemoLog.Lines.Add('🏆 Mavi daha hızlı cevap verdi ve kazandı!');
    }
    else
    {
      KazananRengi = 'Kirmizi';
      LblWinner.Text = '🏆 KAZANAN: KIRMIZI (beraberlik) 🏆';
      MemoLog.Lines.Add('🏆 Beraberlik! Kırmızı kazanan sayıldı.');
    }
    BtnYonlendir.Enabled = True;
  }
  else
  {
    LblWinner.Text = '❌ İKİSİ DE YANLIŞ! Yeni soruya geçiliyor...';
    MemoLog.Lines.Add('❌ İkisi de yanlış cevap verdi!');
    BtnSonrakiSoru.Enabled = True;
  }
  
  if (KirmiziDogru == True)
    CanliMQTT.Send('SONUC|Kirmizi|Dogru');
  else
    CanliMQTT.Send('SONUC|Kirmizi|Yanlis');
    
  if (MaviDogru == True)
    CanliMQTT.Send('SONUC|Mavi|Dogru');
  else
    CanliMQTT.Send('SONUC|Mavi|Yanlis');
    
  BtnKontrolEt.Enabled = False;
}

void Yonlendir;
{
  if (KazananRengi == 'Kirmizi')
  {
    CanliMQTT.Send('YONLENDIR|Kirmizi|RobotKontrol');
    CanliMQTT.Send('YONLENDIR|Mavi|RobotBekle');
    MemoLog.Lines.Add('🎮 Kırmızı robot kontrolüne yönlendirildi, Mavi beklemeye alındı.');
  }
  else if (KazananRengi == 'Mavi')
  {
    CanliMQTT.Send('YONLENDIR|Mavi|RobotKontrol');
    CanliMQTT.Send('YONLENDIR|Kirmizi|RobotBekle');
    MemoLog.Lines.Add('🎮 Mavi robot kontrolüne yönlendirildi, Kırmızı beklemeye alındı.');
  }
  
  BtnYonlendir.Enabled = False;
  BtnSonrakiSoru.Enabled = True;
}

void RobotBitti;
{
  MemoLog.Lines.Add('✅ Robot işlemi tamamlandı. Sıradaki soruya hazırlanılıyor.');
  CanliMQTT.Send('ROBOT_BITTI');
  
  KirmiziHazir = True;
  MaviHazir = True;
  KirmiziCevap = '';
  MaviCevap = '';
  KirmiziDogru = False;
  MaviDogru = False;
  
  LblKirmiziDurum.Text = '🔴 KIRMIZI: HAZIR';
  LblMaviDurum.Text = '🔵 MAVİ: HAZIR';
  BtnBaslat.Enabled = True;
  BtnSonrakiSoru.Enabled = False;
}

void SonrakiSorunaGit;
{
  SoruAktif = False;
  LblWinner.Text = '🏆 Yeni soruya hazırlanılıyor...';
  BtnSonrakiSoru.Enabled = False;
  MemoLog.Lines.Add('➡️ Yeni soruya geçmek için "Yarışmayı Başlat" butonuna basın.');
}

// ============================================================================
//   ANA PROGRAM BLOĞU
// ============================================================================
{
  if (Clomosy.PlatformIsMobile)
  {
    Clomosy.RunUnit('renksec');
  }
  else
  {
    MyForm = TclForm.Create(Self);
    MyForm.LytTopBar.Visible = False;
    MyForm.SetFormColor('#0F172A', '', clGNone);
    
    CanliMQTT = MyForm.AddNewMQTTConnection(MyForm, 'CanliMQTT');
    CanliMQTT.Channel = 'Yarisma2026_App';
    MyForm.AddNewEvent(CanliMQTT, tbeOnMQTTPublishReceived, 'MQTTMesajGelince');
    CanliMQTT.Connect;
    
    PnlMain = MyForm.AddNewProPanel(MyForm, 'PnlMain');
    PnlMain.Align = alClient;
    PnlMain.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A');
    PnlMain.SetclProSettings(PnlMain.clProSettings);
    
    PnlHeader = MyForm.AddNewProPanel(PnlMain, 'PnlHeader');
    PnlHeader.Align = alTop;
    PnlHeader.Height = 80;
    PnlHeader.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
    PnlHeader.SetclProSettings(PnlHeader.clProSettings);
    
    LblTitle = MyForm.AddNewProLabel(PnlHeader, 'LblTitle', '🏁 YARIŞMA ADMIN PANELİ');
    LblTitle.Align = alTop;
    LblTitle.Height = 35;
    LblTitle.Margins.Top = 15;
    LblTitle.Margins.Left = 20;
    LblTitle.clProSettings.FontColor = clAlphaColor.clWhite;
    LblTitle.clProSettings.FontSize = 18;
    LblTitle.clProSettings.TextSettings.Font.Style = [fsBold];
    LblTitle.SetclProSettings(LblTitle.clProSettings);
    
    LblSubTitle = MyForm.AddNewProLabel(PnlHeader, 'LblSubTitle', 'MQTT ile Canlı Yarışma Yönetimi');
    LblSubTitle.Align = alTop;
    LblSubTitle.Height = 20;
    LblSubTitle.Margins.Left = 20;
    LblSubTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#818CF8');
    LblSubTitle.clProSettings.FontSize = 12;
    LblSubTitle.SetclProSettings(LblSubTitle.clProSettings);
    
    PnlContent = MyForm.AddNewProPanel(PnlMain, 'PnlContent');
    PnlContent.Align = alClient;
    PnlContent.Margins.Left = 20;
    PnlContent.Margins.Right = 20;
    PnlContent.Margins.Top = 20;
    PnlContent.Margins.Bottom = 20;
    
    PnlRight = MyForm.AddNewProPanel(PnlContent, 'PnlRight');
    PnlRight.Align = alRight;
    PnlRight.Width = 350;
    PnlRight.Margins.Left = 20;
    
    MemoLog = MyForm.AddNewMemo(PnlRight, 'MemoLog', '');
    MemoLog.Align = alClient;
    MemoLog.ReadOnly = True;
    MemoLog.Lines.Add('=== YARIŞMA LOGU ===');
    
    PnlLeft = MyForm.AddNewProPanel(PnlContent, 'PnlLeft');
    PnlLeft.Align = alClient;
    
    PnlStatus = MyForm.AddNewProPanel(PnlLeft, 'PnlStatus');
    PnlStatus.Align = alTop;
    PnlStatus.Height = 100;
    PnlStatus.Margins.Bottom = 20;
    PnlStatus.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
    PnlStatus.clProSettings.RoundHeight = 15;
    PnlStatus.clProSettings.RoundWidth = 15;
    PnlStatus.SetclProSettings(PnlStatus.clProSettings);
    
    LblKirmiziDurum = MyForm.AddNewProLabel(PnlStatus, 'LblKirmiziDurum', '🔴 KIRMIZI: BEKLİYOR');
    LblKirmiziDurum.Align = alLeft;
    LblKirmiziDurum.Width = 200;
    LblKirmiziDurum.Margins.Top = 20;
    LblKirmiziDurum.Margins.Left = 20;
    LblKirmiziDurum.clProSettings.FontColor = clAlphaColor.clRed;
    LblKirmiziDurum.clProSettings.FontSize = 16;
    LblKirmiziDurum.clProSettings.TextSettings.Font.Style = [fsBold];
    LblKirmiziDurum.SetclProSettings(LblKirmiziDurum.clProSettings);
    
    LblMaviDurum = MyForm.AddNewProLabel(PnlStatus, 'LblMaviDurum', '🔵 MAVİ: BEKLİYOR');
    LblMaviDurum.Align = alRight;
    LblMaviDurum.Width = 200;
    LblMaviDurum.Margins.Top = 20;
    LblMaviDurum.Margins.Right = 20;
    LblMaviDurum.clProSettings.FontColor = clAlphaColor.clBlue;
    LblMaviDurum.clProSettings.FontSize = 16;
    LblMaviDurum.clProSettings.TextSettings.Font.Style = [fsBold];
    LblMaviDurum.SetclProSettings(LblMaviDurum.clProSettings);
    
    PnlAnswers = MyForm.AddNewProPanel(PnlLeft, 'PnlAnswers');
    PnlAnswers.Align = alTop;
    PnlAnswers.Height = 200;
    PnlAnswers.Margins.Bottom = 20;
    PnlAnswers.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
    PnlAnswers.clProSettings.RoundHeight = 15;
    PnlAnswers.clProSettings.RoundWidth = 15;
    PnlAnswers.SetclProSettings(PnlAnswers.clProSettings);
    
    LblSoruText = MyForm.AddNewProLabel(PnlAnswers, 'LblSoruText', 'Soru burada görünecek...');
    LblSoruText.Align = alTop;
    LblSoruText.Height = 50;
    LblSoruText.Margins.Top = 15;
    LblSoruText.Margins.Left = 15;
    LblSoruText.clProSettings.FontColor = clAlphaColor.clWhite;
    LblSoruText.clProSettings.FontSize = 16;
    LblSoruText.clProSettings.TextSettings.Font.Style = [fsBold];
    LblSoruText.SetclProSettings(LblSoruText.clProSettings);
    
    LblKirmiziCevap = MyForm.AddNewProLabel(PnlAnswers, 'LblKirmiziCevap', '🔴 Kırmızı: Bekleniyor...');
    LblKirmiziCevap.Align = alTop;
    LblKirmiziCevap.Height = 30;
    LblKirmiziCevap.Margins.Left = 15;
    LblKirmiziCevap.Margins.Top = 10;
    LblKirmiziCevap.clProSettings.FontColor = clAlphaColor.clHexToColor('#FCA5A5');
    LblKirmiziCevap.SetclProSettings(LblKirmiziCevap.clProSettings);
    
    LblMaviCevap = MyForm.AddNewProLabel(PnlAnswers, 'LblMaviCevap', '🔵 Mavi: Bekleniyor...');
    LblMaviCevap.Align = alTop;
    LblMaviCevap.Height = 30;
    LblMaviCevap.Margins.Left = 15;
    LblMaviCevap.clProSettings.FontColor = clAlphaColor.clHexToColor('#93C5FD');
    LblMaviCevap.SetclProSettings(LblMaviCevap.clProSettings);
    
    PnlWinner = MyForm.AddNewProPanel(PnlLeft, 'PnlWinner');
    PnlWinner.Align = alTop;
    PnlWinner.Height = 80;
    PnlWinner.Margins.Bottom = 20;
    PnlWinner.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
    PnlWinner.clProSettings.RoundHeight = 15;
    PnlWinner.clProSettings.RoundWidth = 15;
    PnlWinner.SetclProSettings(PnlWinner.clProSettings);
    
    LblWinner = MyForm.AddNewProLabel(PnlWinner, 'LblWinner', '🏆 Kazanan henüz belli değil');
    LblWinner.Align = alClient;
    LblWinner.clProSettings.FontColor = clAlphaColor.clYellow;
    LblWinner.clProSettings.FontSize = 18;
    LblWinner.clProSettings.FontHorzAlign = palCenter;
    LblWinner.clProSettings.TextSettings.Font.Style = [fsBold];
    LblWinner.SetclProSettings(LblWinner.clProSettings);
    
    PnlControls = MyForm.AddNewProPanel(PnlLeft, 'PnlControls');
    PnlControls.Align = alTop;
    PnlControls.Height = 60;
    
    BtnBaslat = MyForm.AddNewProButton(PnlControls, 'BtnBaslat', '🚦 YARIŞMAYI BAŞLAT');
    BtnBaslat.Align = alLeft;
    BtnBaslat.Width = 180;
    BtnBaslat.Height = 50;
    BtnBaslat.Margins.Right = 10;
    BtnBaslat.Enabled = False;
    BtnBaslat.clProSettings.BackgroundColor = clAlphaColor.clGreen;
    BtnBaslat.clProSettings.FontColor = clAlphaColor.clWhite;
    BtnBaslat.clProSettings.RoundHeight = 10;
    BtnBaslat.clProSettings.RoundWidth = 10;
    BtnBaslat.SetclProSettings(BtnBaslat.clProSettings);
    MyForm.AddNewEvent(BtnBaslat, tbeOnClick, 'YarismayiBaslat');
    
    BtnKontrolEt = MyForm.AddNewProButton(PnlControls, 'BtnKontrolEt', '✅ CEVAPLARI KONTROL ET');
    BtnKontrolEt.Align = alLeft;
    BtnKontrolEt.Width = 180;
    BtnKontrolEt.Height = 50;
    BtnKontrolEt.Margins.Right = 10;
    BtnKontrolEt.Enabled = False;
    BtnKontrolEt.clProSettings.BackgroundColor = clAlphaColor.clBlue;
    BtnKontrolEt.clProSettings.FontColor = clAlphaColor.clWhite;
    BtnKontrolEt.clProSettings.RoundHeight = 10;
    BtnKontrolEt.clProSettings.RoundWidth = 10;
    BtnKontrolEt.SetclProSettings(BtnKontrolEt.clProSettings);
    MyForm.AddNewEvent(BtnKontrolEt, tbeOnClick, 'CevapKontrolEt');
    
    BtnYonlendir = MyForm.AddNewProButton(PnlControls, 'BtnYonlendir', '🎮 YÖNLENDİR');
    BtnYonlendir.Align = alLeft;
    BtnYonlendir.Width = 150;
    BtnYonlendir.Height = 50;
    BtnYonlendir.Margins.Right = 10;
    BtnYonlendir.Enabled = False;
    BtnYonlendir.clProSettings.BackgroundColor = clAlphaColor.clPurple;
    BtnYonlendir.clProSettings.FontColor = clAlphaColor.clWhite;
    BtnYonlendir.clProSettings.RoundHeight = 10;
    BtnYonlendir.clProSettings.RoundWidth = 10;
    BtnYonlendir.SetclProSettings(BtnYonlendir.clProSettings);
    MyForm.AddNewEvent(BtnYonlendir, tbeOnClick, 'Yonlendir');
    
    BtnSonrakiSoru = MyForm.AddNewProButton(PnlControls, 'BtnSonrakiSoru', '⏩ SONRAKİ SORU');
    BtnSonrakiSoru.Align = alLeft;
    BtnSonrakiSoru.Width = 150;
    BtnSonrakiSoru.Height = 50;
    BtnSonrakiSoru.Enabled = False;
    BtnSonrakiSoru.clProSettings.BackgroundColor = clAlphaColor.clOrange;
    BtnSonrakiSoru.clProSettings.FontColor = clAlphaColor.clWhite;
    BtnSonrakiSoru.clProSettings.RoundHeight = 10;
    BtnSonrakiSoru.clProSettings.RoundWidth = 10;
    BtnSonrakiSoru.SetclProSettings(BtnSonrakiSoru.clProSettings);
    MyForm.AddNewEvent(BtnSonrakiSoru, tbeOnClick, 'SonrakiSorunaGit');
    
    KirmiziHazir = False;
    MaviHazir = False;
    SoruAktif = False;
    KirmiziCevap = '';
    MaviCevap = '';
    
    MyForm.Run;
  }
}
https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net