Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Genel İşlemler
  Aktif Konular Aktif Konular RSS - runtime error
  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.

runtime error

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

Kayıt Tarihi: 23 Mart 2026
Konum: konya
Durum: Aktif Değil
Puanlar: 6
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Mali Demirok Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: runtime error
    Gönderim Zamanı: 4 Saat 11 Dakika Önce Saat 14:59
var
  Form1: TclForm;
  Timer1: TClTimer;
  GridW, GridH: Integer;
  SnakeX: array[0..100] of Integer;
  SnakeY: array[0..100] of Integer;
  SnakeLen: Integer;
  FoodX, FoodY: Integer;
  DirX, DirY: Integer;
  OyunBitti: Boolean;
  Puan: Integer;
  GameMemo: TclMemo;

void YemekUret;
var
  i: Integer;
  Gecerli: Boolean;
{
  Gecerli = False;
  while (not Gecerli)
  {
    Gecerli = True;
    FoodX = Random(GridW);
    FoodY = Random(GridH);
    for (i = 0 to SnakeLen - 1)
    {
      if ((SnakeX == FoodX) && (SnakeY == FoodY))
      {
        Gecerli = False;
        break;
      }
    }
  }
}

void Ciz;
var
  i, x, y: Integer;
  Satir, Ekran: String;
  YilanVar: Boolean;
{
  Ekran = '';
  for (x = 0 to GridW + 1) Ekran = Ekran + '#';
  Ekran = Ekran + #13;
  
  for (y = 0 to GridH - 1)
  {
    Satir = '#';
    for (x = 0 to GridW - 1)
    {
      if ((SnakeX[0] == x) && (SnakeY[0] == y))
      {
        Satir = Satir + 'O';
      }
      else
      {
        YilanVar = False;
        for (i = 1 to SnakeLen - 1)
        {
          if ((SnakeX == x) && (SnakeY == y))
          {
            YilanVar = True;
            break;
          }
        }
        
        if (YilanVar)
          Satir = Satir + 'o';
        else if ((FoodX == x) && (FoodY == y))
          Satir = Satir + 'F';
        else
          Satir = Satir + '.';
      }
    }
    Ekran = Ekran + Satir + '#' + #13;
  }
  
  for (x = 0 to GridW + 1) Ekran = Ekran + '#';
  Ekran = Ekran + #13 + 'PUAN: ' + IntToStr(Puan);
  
  if (OyunBitti) 
    Ekran = Ekran + #13 + 'OYUN BITTI! [R] Yeniden Baslat';
    
  GameMemo.Lines.Text = Ekran;
}

void Hareket;
var
  i: Integer;
  YeniX, YeniY: Integer;
  YemekYendi: Boolean;
{
  if (OyunBitti) exit;
  
  YeniX = SnakeX[0] + DirX;
  YeniY = SnakeY[0] + DirY;
  
  if ((YeniX < 0) || (YeniX >= GridW) || (YeniY < 0) || (YeniY >= GridH))
  {
    OyunBitti = True;
    Ciz;
    exit;
  }
  
  YemekYendi = (YeniX == FoodX) && (YeniY == FoodY);
  
  if (YemekYendi)
  {
    SnakeLen = SnakeLen + 1;
    Puan = Puan + 10;
    for (i = SnakeLen - 1 downto 1)
    {
      SnakeX = SnakeX[i-1];
      SnakeY = SnakeY[i-1];
    }
    YemekUret;
  }
  else
  {
    for (i = SnakeLen - 1 downto 1)
    {
      SnakeX = SnakeX[i-1];
      SnakeY = SnakeY[i-1];
    }
  }
  
  SnakeX[0] = YeniX;
  SnakeY[0] = YeniY;
  
  for (i = 1 to SnakeLen - 1)
  {
    if ((SnakeX[0] == SnakeX) && (SnakeY[0] == SnakeY))
    {
      OyunBitti = True;
      break;
    }
  }
  Ciz;
}

void Baslat;
var
  i: Integer;
{
  GridW = 20;
  GridH = 12;
  SnakeLen = 3;
  for (i = 0 to SnakeLen - 1)
  {
    SnakeX = 10 - i;
    SnakeY = 6;
  }
  DirX = 1;
  DirY = 0;
  OyunBitti = False;
  Puan = 0;
  YemekUret;
  Ciz;
}

void TimerOlayi;
{
  Hareket;
}

void FormKeyDown;
{
  if (OyunBitti)
  {
    if (UpperCase(Form1.clSenderKeyChar) == 'R') Baslat;
    exit;
  }
  
  if (UpperCase(Form1.clSenderKeyChar) == 'W') 
    if (DirY <> 1) 
    DirX = 0; DirY = -1;
      
  if (UpperCase(Form1.clSenderKeyChar) == 'S') 
    if (DirY <> -1) DirX = 0; DirY = 1;
  if (UpperCase(Form1.clSenderKeyChar) == 'A') 
    if (DirX <> 1) DirX = -1; DirY = 0;
  if (UpperCase(Form1.clSenderKeyChar) == 'D') 
    if (DirX <> -1) DirX = 1; DirY = 0;
}

{
  Form1 = TclForm.Create(Self);
  
  GameMemo = Form1.AddNewMemo(Form1, 'GameMemo', '');
  GameMemo.Align = alClient;
  GameMemo.ReadOnly = True;
  
  Timer1 = Form1.AddNewTimer(Form1, 'Timer1', 200);
  Timer1.Enabled = True;
  
  Form1.AddNewEvent(Timer1, tbeOnTimer, 'TimerOlayi');
  Form1.AddNewEvent(Form1, tbeOnKeyDown, 'FormKeyDown');
  
  Baslat;
  Form1.Run;
}       sa kodum runtime error alıyor düzeltir misiniz
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">
Yukarı Dön
M-Guney Açılır Kutu İzle
Kıdemli Üye
Kıdemli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif Değil
Puanlar: 237
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı M-Guney Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 2 Saat 42 Dakika Önce Saat 16:28
Runtime ve harf algılama hatalarının çözülmüş hali bu şekildedir.


var
  Form1: TclForm;
  Timer1: TClTimer;
  GridW, GridH: Integer;
  SnakeX: array[0..100] of Integer;
  SnakeY: array[0..100] of Integer;
  SnakeLen: Integer;
  FoodX, FoodY: Integer;
  DirX, DirY: Integer;
  OyunBitti: Boolean;
  Puan: Integer;
  GameMemo: TclMemo;

void YemekUret;
var
  i: Integer;
  Gecerli: Boolean;
{
  Gecerli = False;
  while (not Gecerli)
  {
    Gecerli = True;
    FoodX = Random(GridW);
    FoodY = Random(GridH);
    for (i = 0 to SnakeLen - 1)
    {
      // DÜZELTME: SnakeX ve SnakeY yanına eklendi
      if ((SnakeX == FoodX) && (SnakeY == FoodY))
      {
        Gecerli = False;
        break;
      }
    }
  }
}

void Ciz;
var
  i, x, y: Integer;
  Satir, Ekran: String;
  YilanVar: Boolean;
{
  Ekran = '';
  for (x = 0 to GridW + 1) Ekran = Ekran + '#';
  Ekran = Ekran + #13;
  
  for (y = 0 to GridH - 1)
  {
    Satir = '#';
    for (x = 0 to GridW - 1)
    {
      if ((SnakeX[0] == x) && (SnakeY[0] == y))
      {
        Satir = Satir + 'O';
      }
      else
      {
        YilanVar = False;
        for (i = 1 to SnakeLen - 1)
        {
          // DÜZELTME: SnakeX ve SnakeY yanına eklendi
          if ((SnakeX == x) && (SnakeY == y))
          {
            YilanVar = True;
            break;
          }
        }
        
        if (YilanVar)
          Satir = Satir + 'o';
        else if ((FoodX == x) && (FoodY == y))
          Satir = Satir + 'F';
        else
          Satir = Satir + '.';
      }
    }
    Ekran = Ekran + Satir + '#' + #13;
  }
  
  for (x = 0 to GridW + 1) Ekran = Ekran + '#';
  Ekran = Ekran + #13 + 'PUAN: ' + IntToStr(Puan);
  
  if (OyunBitti) 
    Ekran = Ekran + #13 + 'OYUN BITTI! [R] Yeniden Baslat';
    
  GameMemo.Lines.Text = Ekran;
}

void Hareket;
var
  i: Integer;
  YeniX, YeniY: Integer;
  YemekYendi: Boolean;
{
  if (OyunBitti) exit;
  
  YeniX = SnakeX[0] + DirX;
  YeniY = SnakeY[0] + DirY;
  
  if ((YeniX < 0) || (YeniX >= GridW) || (YeniY < 0) || (YeniY >= GridH))
  {
    OyunBitti = True;
    Ciz;
    exit;
  }
  
  YemekYendi = (YeniX == FoodX) && (YeniY == FoodY);
  
  if (YemekYendi)
  {
    SnakeLen = SnakeLen + 1;
    Puan = Puan + 10;
    for (i = SnakeLen - 1 downto 1)
    {
      // DÜZELTME: SnakeX ve SnakeY atamalarına eklendi
      SnakeX = SnakeX[i-1];
      SnakeY = SnakeY[i-1];
    }
    YemekUret;
  }
  else
  {
    for (i = SnakeLen - 1 downto 1)
    {
      // DÜZELTME: SnakeX ve SnakeY atamalarına eklendi
      SnakeX = SnakeX[i-1];
      SnakeY = SnakeY[i-1];
    }
  }
  
  SnakeX[0] = YeniX;
  SnakeY[0] = YeniY;
  
  for (i = 1 to SnakeLen - 1)
  {
    // DÜZELTME: Kendine çarpma kontrolünde eklendi
    if ((SnakeX[0] == SnakeX) && (SnakeY[0] == SnakeY))
    {
      OyunBitti = True;
      break;
    }
  }
  Ciz;
}

void Baslat;
var
  i: Integer;
{
  GridW = 20;
  GridH = 12;
  SnakeLen = 3;
  for (i = 0 to SnakeLen - 1)
  {
    // DÜZELTME: Başlangıç atamalarına eklendi
    SnakeX = 10 - i;
    SnakeY = 6;
  }
  DirX = 1;
  DirY = 0;
  OyunBitti = False;
  Puan = 0;
  YemekUret;
  Ciz;
}

void TimerOlayi;
{
  Hareket;
}

void FormKeyDown;
{
  //ShowMessage(IntToStr(Form1.clSenderKeyChar))
  if (OyunBitti)
  {
    // R (82) veya r (114) tuşları
    if ((Form1.clSenderKeyChar == 114) || (Form1.clSenderKeyChar == 82)) Baslat; 
    exit;
  }
  
  // W (87) veya w (119)
  if ((Form1.clSenderKeyChar == 119) || (Form1.clSenderKeyChar == 87)) 
  {
    if (DirY <> 1) { DirX = 0; DirY = -1; }
  }
      
  // S (83) veya s (115)
  if ((Form1.clSenderKeyChar == 115) || (Form1.clSenderKeyChar == 83)) 
  {
    if (DirY <> -1) { DirX = 0; DirY = 1; }
  }
    
  // A (65) veya a (97)
  if ((Form1.clSenderKeyChar == 97) || (Form1.clSenderKeyChar == 65)) 
  {
    if (DirX <> 1) { DirX = -1; DirY = 0; }
  }
    
  // D (68) veya d (100)
  if ((Form1.clSenderKeyChar == 100) || (Form1.clSenderKeyChar == 68)) 
  {
    if (DirX <> -1) { DirX = 1; DirY = 0; }
  }
}

{
  Form1 = TclForm.Create(Self);
  
  GameMemo = Form1.AddNewMemo(Form1, 'GameMemo', '');
  GameMemo.Align = alClient;
  GameMemo.ReadOnly = True;
  GameMemo.SetFocus;
  //GameMemo.Enabled = False; // Klavyeyi yutmasını engeller, tuşlar Form'a gider
  
  Timer1 = Form1.AddNewTimer(Form1, 'Timer1', 200);
  Timer1.Enabled = True;
  
  Form1.AddNewEvent(Timer1, tbeOnTimer, 'TimerOlayi');
  Form1.AddNewEvent(GameMemo, tbeOnKeyUp, 'FormKeyDown');
  
  Baslat;
  Form1.Run;
}


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">
Yukarı Dön
M-Guney Açılır Kutu İzle
Kıdemli Üye
Kıdemli Üye


Kayıt Tarihi: 16 Eylül 2025
Konum: Konya, Meram, K
Durum: Aktif Değil
Puanlar: 237
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı M-Guney Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 2 Saat 41 Dakika Önce Saat 16:29
Harfler ASCII olarak algılanmaktadır. ve ek olarak klavye den basılan harfleri yakalamak açısından event i direk memo ya bağladım bütün ekranı kapladığından

  Form1.AddNewEvent(GameMemo, tbeOnKeyUp, 'FormKeyDown');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">
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,031 Saniyede Yüklendi.