IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   C ve C++ (https://www.ircforumlari.net/c-ve-c/)
-   -   Butonlu İşlemler (https://www.ircforumlari.net/c-ve-c/457039-butonlu-islemler.html)

aSi 27 Şubat 2012 18:23

Butonlu İşlemler
 
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Kod:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<windows.h>

void git(int x,int y)//istediğimiz koordinata gitmemizi sağlayan fonksiyon.
{
    COORD koord;
    koord.X = x;
    koord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), koord);
}

void normal()//butonların ilk halini çizdiren fonksiyon
{
    int i,j,k,a=4,b=1;//ilk çizimi a ve 5 (4,1) koordinatıyla başlatır.
    int tek=1;
   
    for(k=1;k<=5;k++)//5 tane buton çizmeye yarar.
    {
      tek=1;  //3 satir ucgenin her satirindaki yıldız sayısı.(asagida 2 şer artıracağız.) xxxxxxxxxxx
      b=1; 
     
    for(i=1;i<=3;i++)//ücgenin satır sayısı
    {
      for(j=1;j<=tek;j++)//üçgeni çiz
      {
          if(j==1)//j döngüne girince j=1 iken..
          git(a,b);//.. ucgenın cizimin baslangıc noktasına git
          if(tek==1)//geçenki programda üstte kalan tek yıldızı sildim daha güzel bir görüntü ortaya çıktı.
          printf(" ");
          else
          printf("*");//tek sayısı kadar yıldızı yazdır.
      }
      a--;//burada a'yı azaltıp b'yi artırdıkça ucgen cızıminin baslanngıc noktası ..
      b++;//..değişip (4,1) (3,2) (2,3)... şeklinde olacaktır.
      tek+=2;//teki artıracagımızı yukarıdaki xxxx le işaretli satırda söylemiştim.
    }
    a++;
    git(a,b);
    printf("*  *");//butonun alt kısmını çizdirdik.
    b++;
    git(a,b);
   
    for(i=1;i<=5;i++)//butonun tabanını çizdirdik.
    printf("*");
    a+=11;//programın diğer butonlara geçiş mantığı burada a sayısını kaç artırdığımıza bağlıdır..
  }      //su an degeri 2 iken en son degerine 11 ekledık..
          //sonuc olarak diğer butonları geçişte kullanacağımız sayı 11-2 sonucundan 9 olur..
          //bunu anti fonksıyonunda daha net göreceğiz.
}
void anti(int,float,float);//anti fonksiyonunu aşağıda inceleyelim.

main()
{
  int sayi,x,y,kontrol=0;
 
  while(1)//Sonsuz döngü
  {
                   
  if(kontrol==0)
  {
  git(0,20);//rastgele aşağıda bir satıra..
  printf("1.sayi : ");//..bunu yazdır.
  scanf("%d",&x);
  printf("2.sayi : ");//..bunu yazdır.
  scanf("%d",&y);
  printf("\n1 2 3 4 5 tuslariyla islemleri seciniz.");
  kontrol++;
  }
 
 
  normal();//butonların ilk halini çiz..
 
  printf("\n\n    +        -        *        /        %%");
 
 
  anti(sayi,x,y);//kaç numaralı butona basacağımızı belirler.
 
  Sleep(150);//bu komut programı bekleterek butona basıp çekme efekti sağlar.
  }
}

void anti(int deger,float c,float d)//anti fonksiyonu ekrandaki butonu siler,yerine basılmış haldeki butonu çizer.
{
    int i,j,k,a,b;
    deger=getch();//tuşa bastığımız anda o tuşun ascii kodunu alarak entera basmadan işlem yapar.
   
    if(deger==49)//1'in ascii kodu
    {
   
    a=2;             
    b=1;
    git(a,b);
    for(i=2;i<=6;i++)            //(2,1),(3,1),(4,1),(5,1),(6,1)
    {                            //(2,2),(3,2),(4,2),(5,2),(6,2)
      for(j=1;j<=5;j++)          //(2,3),(3,3),(4,3),(5,3),(6,3)
      {                          //(2,4),(3,4),(4,4),(5,4),(6,4)
        git(i,j);                //(2,5),(3,5),(4,5),(5,5),(6,5)
        printf(" ");           
      }                          //koordinatlarına bosluk degeri atıp yok ediyoruz.
    }
   
   
    for(i=3;i<=5;i++)
    {
      git(2,i);
      for(j=1;j<=5;j++)
      printf("*");
    }
  for(i=0;i<=79;i++)//tüm satirin degerlerini silmemizi saglar.yoksa tüm değerler beraber gösterilir.
  {
    git(i,9);
    printf(" ");
  }
    git(3,9);
    printf("%.f",c+d);
  }
 
  if(deger==50)  //Hatırlarsanız normal fonksiyonunun içinde 9 sayısından bahsetmiştim..
    {            //deger==49 un içindeki koordinat değerlerini artırmak diğer butonlara..
    a=11;        //geçişi sağlar.Aynı şeyler asağıdaki butonlar için de geçerlidir.
    b=1;
    git(a,b);
    for(i=11;i<=15;i++)//az önce 2 olan değer şimdi 11,tıpkı 6'nın 15 olması gibi.
    {
      for(j=1;j<=5;j++)
      {
        git(i,j);
        printf(" ");
      }
    }


    for(i=3;i<=5;i++)
    {
      git(11,i);//burada da arttığını görüyoruz.
      for(j=1;j<=5;j++)
      printf("*");
    }
    for(i=0;i<=79;i++)
  {
    git(i,9);
    printf(" ");
  }
    git(13,9);
    printf("%.f",c-d);
  }
 
  if(deger==51)
    {
    a=20;
    b=1;
    git(a,b);
    for(i=20;i<=24;i++)
    {
      for(j=1;j<=5;j++)
      {
        git(i,j);
        printf(" ");
      }
    }
   
    for(i=3;i<=5;i++)
    {
      git(20,i);
      for(j=1;j<=5;j++)
      printf("*");
    }
    for(i=0;i<=79;i++)
  {
    git(i,9);
    printf(" ");
  }
    git(21,9);
    printf("%.f",c*d);
  }
 
  if(deger==52)
    {
    a=29;
    b=1;
    git(a,b);
    for(i=29;i<=33;i++)
    {
      for(j=1;j<=5;j++)
      {
        git(i,j);
        printf(" ");
      }
    }
   
    for(i=3;i<=5;i++)
    {
      git(29,i);
      for(j=1;j<=5;j++)
      printf("*");
    }
    for(i=0;i<=79;i++)
  {
    git(i,9);
    printf(" ");
  }
    git(31,9);
    printf("%.2f",c/d);
  }
 
  if(deger==53)
    {
    a=38;
    b=1;
    git(a,b);
    for(i=38;i<=42;i++)
    {
      for(j=1;j<=5;j++)
      {
        git(i,j);
        printf(" ");
      }
    }
   
    for(i=3;i<=5;i++)
    {
      git(38,i);
      for(j=1;j<=5;j++)
      printf("*");
    }
    for(i=0;i<=79;i++)
  {
    git(i,9);
    printf(" ");
  }
  int s,r;
  s=c; //int değerine çevirip modunu alalım yoksa mod float değerinde hata verir.
  r=d;
 
    git(40,9);
    printf("%d",s%r);
  }
}




Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 02:11.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk