Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Genel İşlemler
  Aktif Konular Aktif Konular RSS - Döngüyü düzgün çalıştıramıyorum
  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.

Döngüyü düzgün çalıştıramıyorum

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
kaanl0 Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 16 Eylül 2025
Konum: konya
Durum: Aktif Değil
Puanlar: 14
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı kaanl0 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Döngüyü düzgün çalıştıramıyorum
    Gönderim Zamanı: Dün Saat 18:10
Merhaba hocam üzerinde çalıştığım projede bir problem yaşıyorum karışıklığın önüne geçmek sadeleştirip sadece problemi size anlatabileceğim kısımları size atıyorum  Sorunum ise homepage'de 4 tane isim var bu isimleri her döngüde sırayla uPlayer isimli unitte yazdırmak istiyorum 1. ismi başarılı bir şekilde yazdırıyor sonra tekrardan uPlayer unitine gelince 2. ismide yazdırıyor fakat 3. ve 4. ismi asla alamıyorum 

------------------Ana Kod----------

uses 
homepage;
{
try
Clomosy.rununit('homepage');

except
ShowMessage('General Error '+'Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);
}
}

---------------------'homepage' isimli unit-----------------

var
MainForm: TclForm;
listpnl:TclProPanel;
pname1,pname2,pname3,pname4:TClProLabel;
startbtn:TClProButton;





void listpnlV
  {
  listpnl = mainform.AddNewPropanel(mainform,'listpnl');
  listpnl.Align = alClient;
  listpnl.Margins.Bottom = 390;
  listpnl.Margins.Top = 20;
  listpnl.Margins.Right = 30;
  listpnl.Margins.Left = 23;
  listpnl.clProSettings.ColCount = 1;
  listpnl.clProSettings.ItemHeight = 100;
  listpnl.clProSettings.ItemSpace = 10;
  listpnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#FFFCFF');
  listpnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#524c4c');
  listpnl.clProSettings.BorderWidth = 5;
  listpnl.clProSettings.RoundHeight = 5;
  listpnl.clProSettings.RoundWidth =3;
  listpnl.SetclProSettings(listpnl.clProSettings);
  
  
  pname1 = mainform.AddNewProLabel(listpnl, 'pname1','Kaan');
  pname1.Align = alMostTop;
  pname1.Width = 300;
  pname1.Height = 55;
  pname1.Margins.Left = 150;
  pname1.margins.top = 20;
  pname1.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
  pname1.clProSettings.FontSize =28;
  pname1.clProSettings.TextSettings.Font.Style = [fsItalic];
  pname1.SetclProSettings(pname1.clProSettings) 
  
  pname2 = mainform.AddNewProLabel(listpnl, 'pname2','Eren');
  pname2.Align = alTop;
  pname2.Width = 300;
  pname2.Height = 55;
  pname2.Margins.Left = 150;
  pname2.margins.top = 30;
  pname2.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
  pname2.clProSettings.FontSize =28;
  pname2.clProSettings.TextSettings.Font.Style = [fsItalic];
  pname2.SetclProSettings(pname2.clProSettings)   

  pname3 = mainform.AddNewProLabel(listpnl, 'pname3','Sülo');
  pname3.Align = alTop;
  pname3.Width = 300;
  pname3.Height = 55;
  pname3.Margins.Left = 150;
  pname3.margins.top = 30;
  pname3.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
  pname3.clProSettings.FontSize =28;
  pname3.clProSettings.TextSettings.Font.Style = [fsItalic];
  pname3.SetclProSettings(pname3.clProSettings)   
  
  pname4 = mainform.AddNewProLabel(listpnl, 'pname4','Samet');
  pname4.Align = alTop;
  pname4.Width = 300;
  pname4.Height = 55;
  pname4.Margins.Left = 150;
  pname4.margins.top = 30;
  pname4.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
  pname4.clProSettings.FontSize =28;
  pname4.clProSettings.TextSettings.Font.Style = [fsItalic];
  pname4.SetclProSettings(pname4.clProSettings)   
   
  
  
}




  

void startbtnV
  {
  startbtn = mainform.AddNewProButton(mainform,'startbtn','Oyunu Başlat');
  startbtn.Align = alCenter;
  startbtn.Width = 250;
  startbtn.Height = 100;
  startbtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  startbtn.clProSettings.FontSize = 24;
  startbtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#000000');
  startbtn.clProSettings.BorderWidth = 2;
  startbtn.clProSettings.RoundWidth = 50;
  startbtn.clProSettings.RoundHeight = 50;
  startbtn.Margins.top= 350;
  startbtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#081368');
  //startbtn.clProSettings.FontVertAlign = palcenter;//palLeading , palCenter , palTrailing
  //startbtn.clProSettings.FontHorzAlign = palCenter;
  startbtn.clProSettings.TextSettings.Font.Style = [fsBold];
  //startbtn.clProSettings.IsFill = True; 
  startbtn.SetclProSettings(startbtn.clProSettings);
  mainform.AddNewEvent(startbtn,tbeOnClick,'startgameV');
}






void startgameV
  {
   Clomosy.RunUnit('uPlayer');
    
  }


{
  mainform = TclForm.Create(Self);
  listpnlV;
  startbtnV;
  mainform.FormWaiting.Visible = False;
  mainform.BtnFormMenu.Visible = False;
  mainform.BtnGoBack.Visible=False;
  mainform.Run;
}


--------------'uPlayer' isimli unit--------------------

uses homepage;
var
mainform2:TclForm;
lb1,nameplayer:TClProLabel;
okbtn:TClProButton;
tempstring: string;


void lb1V
  {
  lb1= mainform2.AddNewProLabel(mainform2, 'lb1', 'Oyuncu Sırası: ');
  //lb1.Align = alCenter;
  lb1.Width = 440;
  lb1.Height = 50;
  lb1.margins.bottom=600;
  lb1.margins.left=200;
  lb1.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFD700');
  lb1.clProSettings.FontSize = 38;
  //lb1.clProSettings.FontVertAlign = palcenter;
  //lb1.clProSettings.FontHorzAlign = palLeading;
  lb1.clProSettings.TextSettings.Font.Style = [fsBold,fsItalic];
  //lb1.clProSettings.IsFill = True; 
  //lb1.clProSettings.IsRound = True;
  lb1.SetclProSettings(lb1.clProSettings);
}
void nameplayerV  
  {
  nameplayer= mainform2.AddNewProLabel(mainform2, 'nameplayer', '');
  nameplayer.Align = alCenter;
  nameplayer.Width=Length(pname1.text)*25;
  nameplayer.Height = 50;
  nameplayer.margins.bottom=400;
  nameplayer.clProSettings.FontColor = clAlphaColor.clHexToColor('#35b673');
  nameplayer.clProSettings.FontSize = 38;
  nameplayer.clProSettings.TextSettings.Font.Style = [fsBold,fsItalic];
  nameplayer.SetclProSettings(nameplayer.clProSettings);
  //nameplayer.Width = 130;
  //nameplayer.margins.left=80;
  //nameplayer.clProSettings.FontVertAlign = palcenter;
  //nameplayer.clProSettings.FontHorzAlign = palLeading;
  //nameplayer.clProSettings.IsFill = True; 
  //nameplayer.clProSettings.IsRound = True;
}  
void okbtnV
  {
  okbtn= mainform2.AddNewProButton(mainform2, 'okbtn', 'Tamam');
  okbtn.Align = alCenter;
  okbtn.margins.bottom=210;
  okbtn.Width = 200;
  okbtn.Height = 70;
  okbtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFD700');
  okbtn.clProSettings.FontSize = 30;
  okbtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#DAA520');
  okbtn.clProSettings.BorderWidth = 5;
  okbtn.clProSettings.RoundWidth = 15;
  okbtn.clProSettings.RoundHeight = 15;
  okbtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#2C7E7E');
  mainform2.AddNewEvent(okbtn,tbeOnClick,'WordButtonV');
  okbtn.clProSettings.TextSettings.Font.Style = [fsBold,fsItalic];
  okbtn.SetclProSettings(okbtn.clProSettings);
  //okbtn.clProSettings.IsFill = True; 
  //okbtn.clProSettings.FontVertAlign = palcenter;//palLeading , palCenter , palTrailing
  //okbtn.clProSettings.FontHorzAlign = palCenter;
}

void playerturn0V
  {
   if (nameplayer.text==''){
    tempstring = homepage.pname1.Text;
    nameplayer.Text = tempstring;
}
}
void playerTurn
 {
  
   if(nameplayer.text==homepage.pname1.Text){
    tempstring = homepage.pname2.Text;
    //ShowMessage(tempstring);
  }else if (tempstring==nameplayer.text){
    tempstring = homepage.pname3.Text;
  }else if (tempstring==nameplayer.text){
    tempstring = homepage.pname4.Text;
  }else if (tempstring==nameplayer.text){
    tempstring = homepage.pname1.Text;
  }else ShowMessage('Çalışmadı');
  nameplayer.Text = tempstring;
  //ShowMessage('nameplayer:'+nameplayer.text + 'player turn çalıştı');
}
void WordButtonV
  {
Clomosy.RunUnit('uYourWord');
}


{
mainform2 = TclForm.Create(Self);
lb1V;
nameplayerV;
okbtnV;

playerturn0V;
//playerTurn;

mainform2.run;
}

-------------------'uYourWord' isimli unit----------------------- 


uses uPlayer;
var
mainform3:TclForm;
addwordbtn,okbtn,guessbtn:TClProButton;

void okbtnV
 { 
 Clomosy.RunUnit('uPlayer');
 uPlayer.playerTurn;
}

void addwordbtnV
 {
  okbtn= mainform3.AddNewProButton(mainform3, 'okbtn', 'Geri Dön');
  okbtn.Align = alCenter;
  okbtn.Width = 175;
  okbtn.Height = 60;
  okbtn.margins.top=25;
  okbtn.margins.left=30;
  okbtn.margins.right=30;
  okbtn.clProSettings.FontSize = 21;
  okbtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#099ea4');
  okbtn.clProSettings.TextSettings.Font.Style = [fsBold];
  okbtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#312626');
  okbtn.clProSettings.RoundHeight = 15;
  okbtn.clProSettings.RoundWidth = 15;
  okbtn.clProSettings.BorderWidth = 2;
  okbtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#e6efef');
  mainform3.AddNewEvent(okbtn,tbeOnClick,'okbtnV')
  //okbtn.clProSettings.IsFill = True; 
  //okbtn.clProSettings.IsRound = True;
  okbtn.SetclProSettings(okbtn.clProSettings); 
  
}


{
  mainform3=TclForm.Create(self);
  addwordbtnV;
  mainform3.run;
}
Yukarı Dön
Emr.Erkmn Açılır Kutu İzle
Moderatör
Moderatör


Kayıt Tarihi: 28 Şubat 2025
Durum: Aktif Değil
Puanlar: 325
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (1) Teşekkürler(1)   Alıntı Emr.Erkmn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: Dün Saat 18:28
playerTurn fonksiyonunda tempstring değişkeni sürekli güncelleniyor ama nameplayer.text ile karşılaştırma yapılıyor. Bu yüzden 3. ve 4. isimler asla gelmiyor.

  currentPlayerIndex: Integer; değişken tanılayıp 

  {
    if (nameplayer.text == '') {
      currentPlayerIndex = 1; // İlk oyuncu
      tempstring = homepage.pname1.Text;
      nameplayer.Text = tempstring;
    }
  }
}

void playerTurn {
  {
    
    currentPlayerIndex = currentPlayerIndex + 1;
    
    
    if (currentPlayerIndex > 4) {
      currentPlayerIndex = 1;
    }
    
   
    case currentPlayerIndex of {
      1: tempstring = homepage.pname1.Text;
      2: tempstring = homepage.pname2.Text;
      3: tempstring = homepage.pname3.Text;
      4: tempstring = homepage.pname4.Text;
    }
    
    nameplayer.Text = tempstring;
  }
}

Yukarı Dön
kaanl0 Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 16 Eylül 2025
Konum: konya
Durum: Aktif Değil
Puanlar: 14
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı kaanl0 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 7 Saat 34 Dakika Önce Saat 11:44
Tekrardan merhaba cevap verdiğiniz için teşekkür ederim verdiğiniz kodu aşağıdaki gibi kullandım  currentPlayerIndex isimli değişkeni tanımladım fakat problem hala devam ediyor.

------------------------------

void playerturn0V
 {
    if (nameplayer.text == '') {
      currentPlayerIndex = 1; // İlk oyuncu
      tempstring = homepage.pname1.Text;
      nameplayer.Text = tempstring;
    }
  }
void playerTurn(currentPlayerIndex:Integer)
 {
  //currentPlayerIndex = currentPlayerIndex + 1;
  
  if (currentPlayerIndex > 4) {
      currentPlayerIndex = 1;
    }
    
    case currentPlayerIndex of {
      1: tempstring = homepage.pname1.Text;
      2: tempstring = homepage.pname2.Text;
      3: tempstring = homepage.pname3.Text;
      4: tempstring = homepage.pname4.Text;
    }
    
    nameplayer.Text = tempstring;
  }
Yukarı Dön
kaanl0 Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 16 Eylül 2025
Konum: konya
Durum: Aktif Değil
Puanlar: 14
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı kaanl0 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 7 Saat 31 Dakika Önce Saat 11:47
11. satır yorum satırı kalmış atarken düzeltmeyi unutmuşum 
Yukarı Dön
Emr.Erkmn Açılır Kutu İzle
Moderatör
Moderatör


Kayıt Tarihi: 28 Şubat 2025
Durum: Aktif Değil
Puanlar: 325
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (1) Teşekkürler(1)   Alıntı Emr.Erkmn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 6 Saat 4 Dakika Önce Saat 13:14
Kaan öncelikle senden istediğim, birimler de formları açarken gizlemen, her birim açıldığın da ve geri döndüğün de formlar arka planda açık kalmaya devam ediyor. 

Anakod
___________________________
uses homepage;

var
  currentPlayerIndex: Integer; 

{
  try 
    currentPlayerIndex = 0; 
    Clomosy.rununit('homepage');
   except 
    ShowMessage('General Error '+'Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);
  }
}


Uplayer
____________________________
uses homepage;
var
  mainform2: TclForm;
  lb1, nameplayer: TClProLabel;
  okbtn: TClProButton;
  tempstring: String;

void lb1V {
  {
    lb1 = mainform2.AddNewProLabel(mainform2, 'lb1', 'Oyuncu Sırası: ');
    lb1.Width = 440;
    lb1.Height = 50;
    lb1.margins.bottom = 600;
    lb1.margins.left = 200;
    lb1.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFD700');
    lb1.clProSettings.FontSize = 38;
    lb1.clProSettings.TextSettings.Font.Style = [fsBold, fsItalic];
    lb1.SetclProSettings(lb1.clProSettings);
  }
}

void nameplayerV {
  {
    nameplayer = mainform2.AddNewProLabel(mainform2, 'nameplayer', '');
    nameplayer.Align = alCenter;
    nameplayer.Width = Length(pname1.text) * 25;
    nameplayer.Height = 50;
    nameplayer.margins.bottom = 400;
    nameplayer.clProSettings.FontColor = clAlphaColor.clHexToColor('#35b673');
    nameplayer.clProSettings.FontSize = 38;
    nameplayer.clProSettings.TextSettings.Font.Style = [fsBold, fsItalic];
    nameplayer.SetclProSettings(nameplayer.clProSettings);
  }
}

void okbtnV {
  {
    okbtn = mainform2.AddNewProButton(mainform2, 'okbtn', 'Tamam');
    okbtn.Align = alCenter;
    okbtn.margins.bottom = 210;
    okbtn.Width = 200;
    okbtn.Height = 70;
    okbtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#FFD700');
    okbtn.clProSettings.FontSize = 30;
    okbtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#DAA520');
    okbtn.clProSettings.BorderWidth = 5;
    okbtn.clProSettings.RoundWidth = 15;
    okbtn.clProSettings.RoundHeight = 15;
    okbtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#2C7E7E');
    mainform2.AddNewEvent(okbtn, tbeOnClick, 'WordButtonV');
    okbtn.clProSettings.TextSettings.Font.Style = [fsBold, fsItalic];
    okbtn.SetclProSettings(okbtn.clProSettings);
  }
}

void playerturn0V {
  {
    // Sıradaki oyuncuya geç
    currentPlayerIndex = currentPlayerIndex + 1;
    
    // 4 oyuncu döngüsü
    if (currentPlayerIndex > 4) {
      currentPlayerIndex = 1;
    }
    
    // Oyuncu ismini al
    case currentPlayerIndex of {
      1: tempstring = homepage.pname1.Text;
      2: tempstring = homepage.pname2.Text;
      3: tempstring = homepage.pname3.Text;
      4: tempstring = homepage.pname4.Text;
    }
    
    nameplayer.Text = tempstring;
  }
}

void WordButtonV {
  {
    Clomosy.RunUnit('uYourWord');
  }
}

{
  mainform2 = TclForm.Create(Self);
  lb1V;
  nameplayerV;
  okbtnV;
  playerturn0V; // Her seferinde sıradaki oyuncuyu göster
  mainform2.run;
}

uYourWord
______________________________________
uses uPlayer;
var
  mainform3: TclForm;
  addwordbtn, okbtn, guessbtn: TClProButton;

void okbtnV {
  {
  
    Clomosy.RunUnit('uPlayer');
  }
}

void addwordbtnV {
  {
    okbtn = mainform3.AddNewProButton(mainform3, 'okbtn', 'Geri Dön');
    okbtn.Align = alCenter;
    okbtn.Width = 175;
    okbtn.Height = 60;
    okbtn.margins.top = 25;
    okbtn.margins.left = 30;
    okbtn.margins.right = 30;
    okbtn.clProSettings.FontSize = 21;
    okbtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#099ea4');
    okbtn.clProSettings.TextSettings.Font.Style = [fsBold];
    okbtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#312626');
    okbtn.clProSettings.RoundHeight = 15;
    okbtn.clProSettings.RoundWidth = 15;
    okbtn.clProSettings.BorderWidth = 2;
    okbtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#e6efef');
    mainform3.AddNewEvent(okbtn, tbeOnClick, 'okbtnV');
    okbtn.SetclProSettings(okbtn.clProSettings);
  }
}

{
  mainform3 = TclForm.Create(Self);
  addwordbtnV;
  mainform3.run;
}

homepage
________________________________
var
  MainForm: TclForm;
  listpnl: TclProPanel;
  pname1, pname2, pname3, pname4: TClProLabel;
  startbtn: TClProButton;
currentPlayerIndex: Integer
void listpnlV {
  {
    listpnl = mainform.AddNewPropanel(mainform, 'listpnl');
    listpnl.Align = alClient;
    listpnl.Margins.Bottom = 390;
    listpnl.Margins.Top = 20;
    listpnl.Margins.Right = 30;
    listpnl.Margins.Left = 23;
    listpnl.clProSettings.ColCount = 1;
    listpnl.clProSettings.ItemHeight = 100;
    listpnl.clProSettings.ItemSpace = 10;
    listpnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#FFFCFF');
    listpnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#524c4c');
    listpnl.clProSettings.BorderWidth = 5;
    listpnl.clProSettings.RoundHeight = 5;
    listpnl.clProSettings.RoundWidth = 3;
    listpnl.SetclProSettings(listpnl.clProSettings);
    
    pname1 = mainform.AddNewProLabel(listpnl, 'pname1', 'Kaan');
    pname1.Align = alMostTop;
    pname1.Width = 300;
    pname1.Height = 55;
    pname1.Margins.Left = 150;
    pname1.margins.top = 20;
    pname1.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
    pname1.clProSettings.FontSize = 28;
    pname1.clProSettings.TextSettings.Font.Style = [fsItalic];
    pname1.SetclProSettings(pname1.clProSettings);
    
    pname2 = mainform.AddNewProLabel(listpnl, 'pname2', 'Eren');
    pname2.Align = alTop;
    pname2.Width = 300;
    pname2.Height = 55;
    pname2.Margins.Left = 150;
    pname2.margins.top = 30;
    pname2.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
    pname2.clProSettings.FontSize = 28;
    pname2.clProSettings.TextSettings.Font.Style = [fsItalic];
    pname2.SetclProSettings(pname2.clProSettings);
    
    pname3 = mainform.AddNewProLabel(listpnl, 'pname3', 'Sülo');
    pname3.Align = alTop;
    pname3.Width = 300;
    pname3.Height = 55;
    pname3.Margins.Left = 150;
    pname3.margins.top = 30;
    pname3.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
    pname3.clProSettings.FontSize = 28;
    pname3.clProSettings.TextSettings.Font.Style = [fsItalic];
    pname3.SetclProSettings(pname3.clProSettings);
    
    pname4 = mainform.AddNewProLabel(listpnl, 'pname4', 'Samet');
    pname4.Align = alTop;
    pname4.Width = 300;
    pname4.Height = 55;
    pname4.Margins.Left = 150;
    pname4.margins.top = 30;
    pname4.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000');
    pname4.clProSettings.FontSize = 28;
    pname4.clProSettings.TextSettings.Font.Style = [fsItalic];
    pname4.SetclProSettings(pname4.clProSettings);
  }
}

void startbtnV {
  {
    startbtn = mainform.AddNewProButton(mainform, 'startbtn', 'Oyunu Başlat');
    startbtn.Align = alCenter;
    startbtn.Width = 250;
    startbtn.Height = 100;
    startbtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
    startbtn.clProSettings.FontSize = 24;
    startbtn.clProSettings.BorderColor = clAlphaColor.clHexToColor('#000000');
    startbtn.clProSettings.BorderWidth = 2;
    startbtn.clProSettings.RoundWidth = 50;
    startbtn.clProSettings.RoundHeight = 50;
    startbtn.Margins.top = 350;
    startbtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#081368');
    startbtn.clProSettings.TextSettings.Font.Style = [fsBold];
    startbtn.SetclProSettings(startbtn.clProSettings);
    mainform.AddNewEvent(startbtn, tbeOnClick, 'startgameV');
  }
}

void startgameV {
  {
    currentPlayerIndex = 0; // İlk oyuncu için sıfırla
    Clomosy.RunUnit('uPlayer');
  }
}

{
  mainform = TclForm.Create(Self);
  listpnlV;
  startbtnV;
  mainform.FormWaiting.Visible = False;
  mainform.BtnFormMenu.Visible = False;
  mainform.BtnGoBack.Visible = False;
  mainform.Run;
}


Düzenleyen Emr.Erkmn - 6 Saat 2 Dakika Önce Saat 13:16
Yukarı Dön
Emr.Erkmn Açılır Kutu İzle
Moderatör
Moderatör


Kayıt Tarihi: 28 Şubat 2025
Durum: Aktif Değil
Puanlar: 325
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Emr.Erkmn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 5 Saat 58 Dakika Önce Saat 13:20
Hata sebebi de,
Her uPlayer unite dönüldüğün de form yeniden oluşturuluyor ve currentPlayerIndex değişkeni sıfırlanıyor bu yüzden aynı oyuncu sürekli dönüyor. 
Anakod da global değişken tanımlayıp, diğer tüm birimler de kullandık,

Yukarı Dön
kaanl0 Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 16 Eylül 2025
Konum: konya
Durum: Aktif Değil
Puanlar: 14
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı kaanl0 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 5 Saat 2 Dakika Önce Saat 14:16
Teşekkürler kod başarılı bir şekilde çalışıyor fakat bir sorum olacaktı ana koddaki global değişken gibi tanımlama kısmını tam anlamıyla anlayamadım.

Homepage kısmında ana koddaki değişkenin değerini almadığını fark ettim bu gibi durumlarda ana kodda değişken belirlemek ne gibi avantaj sağlayabilir.

Ana koddan currentPlayerIndex'i  90 olarak yollamama rağmen 0 çıktısını aldım. 


--------anakod----------

uses homepage;

var
  currentPlayerIndex: Integer; 

{
  try 
    currentPlayerIndex = 90; 
    Clomosy.rununit('homepage');
   except 
    ShowMessage('General Error '+'Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);
  }
}

--------homepage unitinden bir kısım--------------------


void startgameV {
  {
  ShowMessage(IntToStr(currentPlayerIndex));
    currentPlayerIndex = 0; // İlk oyuncu için sıfırla
    Clomosy.RunUnit('uPlayer');
  }
}



Yukarı Dön
Emr.Erkmn Açılır Kutu İzle
Moderatör
Moderatör


Kayıt Tarihi: 28 Şubat 2025
Durum: Aktif Değil
Puanlar: 325
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (1) Teşekkürler(1)   Alıntı Emr.Erkmn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 3 Saat 25 Dakika Önce Saat 15:53
*Anakodda ki global değişken sorun için, 
aslında tanımlamasak da herhangi bir hata veya yanlışlık yapmayız, sadece varsayılan değer olarak tanımladım ve 0 atadım.
Anakodda ki değişkenleri diğer birimler arasında göremeyiz, her birim de kendi değişkenlerimizi tanımlamamız gerekiyor, birimler arası veri paylaşımı için fonksiyon kullanabiliriz ya da https://www.docs.clomosy.com/index.php?title=Global_Variables kullanabiliriz. Hepsi için farklı kullanımlarını aşağıda bırakıcam. 
Umarım kafan çok fazla karışmamıştır. 

*Ana koddan currentPlayerIndex'i 90 olarak yollamama rağmen 0 çıktısını aldım. Bu sorun için de şöyle bir yol izleyebiliriz. 

1--------HomePage Unit 
var
  MainForm: TclForm;
  listpnl: TclProPanel;
  pname1, pname2, pname3, pname4: TClProLabel;
  startbtn: TClProButton;
  currentPlayerIndex: Integer; 

void startgameV {
  {
    currentPlayerIndex = 90; // Burada değer ver
    ShowMessage(IntToStr(currentPlayerIndex)); // 90 gösterecek
    currentPlayerIndex = 0; // İlk oyuncu için sıfırla
    Clomosy.RunUnit('uPlayer');
  }
}

2----- Clomosy Global Variables, 
-----Anakod------
uses homepage;

{
  try {
    Clomosy.GlobalVariableInteger = 90; // Global değişkene değer ata
    Clomosy.rununit('homepage');
  } except {
    ShowMessage('General Error '+'Exception Class: '+LastExceptionClassName+' Exception Message: '+LastExceptionMessage);
  }
}

----HomePage------
var
  MainForm: TclForm;
  listpnl: TclProPanel;
  pname1, pname2, pname3, pname4: TClProLabel;
  startbtn: TClProButton;

void startgameV {
  {
    ShowMessage(IntToStr(Clomosy.GlobalVariableInteger)); // 90 gösterecek
    Clomosy.GlobalVariableInteger = 0; // İlk oyuncu için sıfırla
    Clomosy.RunUnit('uPlayer');
  }
}

----Player Unit----
uses homepage;
var
  mainform2: TclForm;
  lb1, nameplayer: TClProLabel;
  okbtn: TClProButton;
  tempstring: String;

void playerturn0V {
  {
    // Global değişkeni kullan
    Clomosy.GlobalVariableInteger = Clomosy.GlobalVariableInteger + 1;
    
    // 4 oyuncu döngüsü
    if (Clomosy.GlobalVariableInteger > 4) {
      Clomosy.GlobalVariableInteger = 1;
    }
    
    // Oyuncu ismini al
    case Clomosy.GlobalVariableInteger of {
      1: tempstring = homepage.pname1.Text;
      2: tempstring = homepage.pname2.Text;
      3: tempstring = homepage.pname3.Text;
      4: tempstring = homepage.pname4.Text;
    }
    
    nameplayer.Text = tempstring;
  }
}

Yukarı Dön
 Yanıt Yaz Yanıt Yaz

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,063 Saniyede Yüklendi.