Sayfayı Yazdır | Pencereyi Kapat

hata düzeltme

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1501
Tarih: 10 Mayıs 2026 Saat 18:40
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: hata düzeltme
Mesajı Yazan: Mali Demirok
Konu: hata düzeltme
Mesaj Tarihi: 10 Mayıs 2026 Saat 15:38
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;
  SonHareket: TDateTime;

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

procedure Ciz;
var
  i, x, y: Integer;
  Satir: String;
{
  Satir = "";
  for (x = 0 to GridW+1) Satir = Satir + "#";
  ShowMessage(Satir);
  
  for (y = 0 to GridH-1)
  {
    Satir = "#";
    for (x = 0 to GridW-1)
    {
      if ((SnakeX[0] == x) && (SnakeY[0] == y))
      {
        Satir = Satir + "O";
      }
      else
      {
        var YilanVar = False;
        for (i = 1 to SnakeLen-1)
        {
          if ((SnakeX == x) && (SnakeY == y))
          {
            Satir = Satir + "o";
            YilanVar = True;
            break;
          }
        }
        if ((FoodX == x) && (FoodY == y))
          Satir = Satir + "F";
        else if (!YilanVar)
          Satir = Satir + ".";
      }
    }
    Satir = Satir + "#";
    ShowMessage(Satir);
  }
  
  Satir = "";
  for (x = 0 to GridW+1) Satir = Satir + "#";
  ShowMessage(Satir);
  ShowMessage("PUAN: " + IntToStr(Puan));
  if (OyunBitti) ShowMessage("OYUN BITTI! R ile yeniden baslat");
}

procedure 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)
  {
    for (i = SnakeLen downto 1)
    {
      SnakeX = SnakeX[i-1];
      SnakeY = SnakeY[i-1];
    }
    SnakeLen = SnakeLen + 1;
    Puan = Puan + 10;
    YemekUret();
  }
  else
  {
    for (i = SnakeLen-1 downto 1)
    {
      SnakeX = SnakeX[i-1];
      SnakeY = SnakeY[i-1];
    }
  }
  
  SnakeX[0] = YeniX;
  SnakeY[0] = YeniY;
  
  if (!YemekYendi)
  {
    for (i = 1 to SnakeLen-1)
    {
      if ((SnakeX[0] == SnakeX) && (SnakeY[0] == SnakeY))
      {
        OyunBitti = True;
        break;
      }
    }
  }
  Ciz();
}

procedure YonDegistir(yDx, yDy: Integer);
{
  if (!((DirX == -yDx) && (DirY == -yDy)))
  {
    DirX = yDx;
    DirY = yDy;
  }
}

procedure Baslat;
var
  i: Integer;
{
  GridW = 20;
  GridH = 15;
  SnakeLen = 3;
  for (i = 0 to SnakeLen-1)
  {
    SnakeX = 10 - i;
    SnakeY = 7;
  }
  DirX = 1;
  DirY = 0;
  OyunBitti = False;
  Puan = 0;
  YemekUret();
  SonHareket = Now;
  Ciz();
}

void TimerOlayi;
{
  if (MillisecondsBetween(Now, SonHareket) >= 200)
  {
    Hareket();
    SonHareket = Now;
  }
}

void FormKeyDown;
var
  tus: String;
{
  tus = Form1.clSenderKeyChar;
  
  if (OyunBitti)
  {
    if ((tus == "R") || (tus == "r")) Baslat();
    exit;
  }
  
  if ((tus == "W") || (tus == "w")) YonDegistir(0, -1);
  if ((tus == "S") || (tus == "s")) YonDegistir(0, 1);
  if ((tus == "A") || (tus == "a")) YonDegistir(-1, 0);
  if ((tus == "D") || (tus == "d")) YonDegistir(1, 0);
}

{
  Form1 = TclForm.Create(Self);
  Timer1 = Form1.AddNewTimer(Form1, "Timer1", 50);
  Timer1.Enabled = True;
  Form1.AddNewEvent(Timer1, tbeOnTimer, "TimerOlayi");
  Form1.AddNewEvent(Form1, tbeOnKeyDown, "FormKeyDown");
  Baslat();
  Form1.Run();
}  sa kodum birkaç yerde hata veriyor hataları düzeltip kodu tekrardan yazabilir misiniz
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