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/)
-   -   Hafıza ve İşlem Oyunu (https://www.ircforumlari.net/c-ve-c/455608-hafiza-ve-islem-oyunu.html)

aSi 22 Şubat 2012 15:06

Hafıza ve İşlem Oyunu
 
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

İçerik
1. İşlem Oyunu (8 farklı işlemi süre kısıtlaması ile yapmaya çalışıyoruz.)
2. Hafıza Oyunu (6 farklı rakamı süre kısıtlaması ile hafızamızda tutmaya çalışıyoruz.)
Not: Oyunda 4 farklı zorluk seçeneği bulunuyor.

Ekran Çıktıları

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Kod:

//İbrahim Erkaplan

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

#include<time.h>

#include<windows.h>

#include<stdlib.h>


void
  temel_i(void);
void
orta_i(void);
void
usta_i(void);
void
insanotesi_i(void);
void
temel_h(void);
void
orta_h(void);
void
usta_h(void);
void
insanotesi_h(void);
int
fkt(int);
void
istatistik(int,int);
void
beklet(int);

main
()
{

      int secim,zorluk;
      srand(time(0));
      system("color F0");//Çıktı rengini değiştirdik.
      sec:
      system("cls");
      //Programın tümünde türkçe karakterleri kullanırken asci kodlarını kullanık.
      printf("1. %c%clem Oyunu\n",-104,-97);
      printf("2. Haf%cza Oyunu\n",-115);
      printf("3. %c%ck%c%c\n",-128,-115,-115,-97);
      printf("Devam etmek i%cin l%ctfen oyunu se%ciniz: ",-121,-127,-121);
      scanf("%d",&secim);
      switch(secim)
      {
        case 1:
              secim1:
              system("cls");
              printf("1. Temel...\n");
              printf("2. Orta...\n");
              printf("3. Usta...\n");
              printf("4. %cnsan %ctesi...\n",-104,-103);
              printf("5. Ana Men%c...\n",-127);
              printf("6. %c%ck%c%c...\n",-128,-115,-115,-97);
              printf("Devam etmek i%cin l%ctfen seviye se%ciniz: ",-121,-127,-121);
              scanf("%d",&zorluk);
              switch(zorluk)
              {
                case 1: temel_i();break;
                case 2: orta_i();break;
                case 3: usta_i();break;
                case 4: insanotesi_i();break;
                case 5: goto sec;
                case 6: exit(0);
                default: goto secim1;
              }
        case 2:
              secim2:
              system("cls");
              printf("1. Temel...\n");
              printf("2. Orta...\n");
              printf("3. Usta...\n");
              printf("4. %cnsan %ctesi...\n",-104,-103);
              printf("5. Ana Men%c...\n",-127);
              printf("6. %c%ck%c%c...\n",-128,-115,-115,-97);
              printf("Devam etmek i%cin l%ctfen seviye se%ciniz: ",-121,-127,-121);
              scanf("%d",&zorluk);
              switch(zorluk)
              {
                case 1: temel_h();break;
                case 2: orta_h();break;
                case 3: usta_h();break;
                case 4: insanotesi_h();break;
                case 5: goto sec;
                case 6: exit(0);
                default: goto secim2;
              }
        case 3:
                printf("ibrahim Erkaplan Yap%cm%cd%cr.",-115,-115,-115);
                getch();
                exit(0);
        default: goto sec;
      }
     
      getch();
}


void
  temel_i(void)
{

    int x,y,islem,giris,sonuc,i,dogru=0,yanlis=0;
      time_t basla,bitir;//Sitemin saatini saklamak için değişkenler...
     
      system("cls");
      printf("Temel seviyeye ho%c geldiniz...\n",-97);
      printf("Toplama,%1c%ckartma,%carpma ve B%clme i%clemlerine haz%cr olun...\n",-128,-115,-128,-108,-97,-115);
      printf("Do%cru cevab%c bulmak i%cin 7 saniyeniz var kolay gelsin...",-89,-115,-121);
      getch();
      system("cls");
      printf("Temel seviye:\n");
      for(i=0;i<21;i++)//Oyunu 20 işlemle sınırlandırdık.
      {
        islem=rand()%4+1;//Rasgele işlem seçtik
       
        if(islem==1)
        {
        x=rand()%100;
        y=rand()%100;
        printf("%d + %d = ",x,y);
        sonuc=x+y;
        }
        if(islem==2)
        {
        x=rand()%100;
        y=rand()%100;
        printf("%d - %d = ",x,y);
        sonuc=x-y;
        }
        if(islem==3)
        {
        x=rand()%10+5;
        y=rand()%5+5;
        printf("%d x %d = ",x,y);
        sonuc=x*y;
        }
        if(islem==4)
        {
        do{
          x=rand()%15+5;
          y=rand()%15+5;
          }while(x%y!=0);
          //Bölme işlemi tam sayı çıksın diye do while kullandık.
        printf("%d / %d = ",x,y);
        sonuc=x/y;
        }
       
        time(&basla);
        //Bu komut o andaki saati baslaya atar.
        //basla yerine değişik şeyler kullanabilirsiniz.
       
        scanf("%d",&giris);
       
        time(&bitir);
        //Bu komut o andaki saati bitire atar.
        //bitir yerine değişik şeyler kullanabilirsiniz.
       
        //difftime fonksiyonu bize iki süre arasındaki farkı saniye olarak
        //veriyor. Çıktı ise double.
        if(difftime(bitir,basla)<=7)
        {
        if(sonuc==giris)
        {
          printf("Cevap Do%cru\n",-89);
          dogru+=1;
        }
        if(sonuc!=giris)
        {
          printf("Cevap Yanl%c%c\n",-115,-97);
          yanlis+=1;
        }
        }
        if(difftime(bitir,basla)>7 && difftime(bitir,basla)<=11)
          printf("Biraz daha h%czl%c...\n",-115,-115);
        if(difftime(bitir,basla)>11 && difftime(bitir,basla)<=17)
          printf("Birizc%ck yava%cs%cn%cz...\n",-115,-97,-115,-115);
        if(difftime(bitir,basla)>17)
          printf("Baya yava%cs%cn%cz...\n",-97,-115,-115);
      }
      istatistik(dogru,yanlis);
}


void
  orta_i(void)
{

    int x,y,islem,giris,sonuc,i,dogru=0,yanlis=0;
      time_t basla,bitir;//Sitemin saatini saklamak için değişkenler...
     
      system("cls");
      printf("Orta seviyeye ho%c geldiniz...\n",-97);
      printf("Toplama,%1c%ckartma,%carpma,B%clme,Fakt%criyel ve Mod Alma i%clemlerine haz%cr olun...\n",-128,-115,-128,-108,-108,-97,-115);
      printf("Do%cru cevab%c bulmak i%cin 7 saniyeniz var kolay gelsin...",-89,-115,-121);
      getch();
      system("cls");
      printf("Orta seviye:\n");
     
      for(i=0;i<21;i++)//Oyunu 20 işlemle sınırlandırdık.
      {
        islem=rand()%6+1;//Rasgele işlem seçtik
       
        if(islem==1)
        {
        x=rand()%1000-100;
        y=rand()%1000+100;
        printf("%d + %d = ",x,y);
        sonuc=x+y;
        }
        if(islem==2)
        {
        x=rand()%1000-100;
        y=rand()%1000+100;
        printf("%d - %d = ",x,y);
        sonuc=x-y;
        }
        if(islem==3)
        {
        x=rand()%10+5;
        y=rand()%5+5;
        printf("%d x %d = ",x,y);
        sonuc=x*y;
        }
        if(islem==4)
        {
        do{
          x=rand()%100+10;
          y=rand()%20+5;
          }while(x%y!=0);
          //Bölme işlemi tam sayı çıksın diye do while kullandık.
        printf("%d / %d = ",x,y);
        sonuc=x/y;
        }
        if(islem==5)
        {
        x=rand()%150;
        y=rand()%100+1;
        printf("%d (mod %d) = ",x,y);
        sonuc=x%y;
        }
        if(islem==6)
        {
        x=rand()%6;
        printf("%d! = ",x);
        sonuc=fkt(x);
        }
       
        time(&basla);
        //Bu komut o andaki saati baslaya atar.
        //Basla yerine değişik şeyler kullanabilirsiniz.
       
        scanf("%d",&giris);
       
        time(&bitir);
        //Bu komut o andaki saati bitire atar.
        //Bitir yerine değişik şeyler kullanabilirsiniz.
       
        //difftime fonksiyonu bize iki süre arasındaki farkı saniye olarak
        //veriyor. Çıktı ise double.
        if(difftime(bitir,basla)<=7)
        {
        if(sonuc==giris)
        {
          printf("Cevap Do%cru\n",-89);
          dogru+=1;
        }
        if(sonuc!=giris)
        {
          printf("Cevap Yanl%c%c\n",-115,-97);
          yanlis+=1;
        }
        }
        if(difftime(bitir,basla)>7 && difftime(bitir,basla)<=11)
          printf("Biraz daha h%czl%c...\n",-115,-115);
        if(difftime(bitir,basla)>11 && difftime(bitir,basla)<=17)
          printf("Birizc%ck yava%cs%cn%cz...\n",-115,-97,-115,-115);
        if(difftime(bitir,basla)>17)
          printf("Baya yava%cs%cn%cz...\n",-97,-115,-115);
      }
      istatistik(dogru,yanlis);
}


void
  usta_i(void)
{

    int x,y,islem,giris,sonuc,i,dogru=0,yanlis=0;
      time_t basla,bitir;//Sitemin saatini saklamak için değişkenler...
     
      system("cls");
      printf("Usta seviyeye ho%c geldiniz...\n",-97);
      printf("Toplama,%1c%ckartma,%carpma,B%clme,Fakt%criyel",-128,-115,-128,-108,-108);
      printf(",Mod Alma,\nPerm%ctasyon ve Kombinasyon i%clemlerine haz%cr olun...\n",-127,-97,-115);
      printf("Do%cru cevab%c bulmak i%cin 7 saniyeniz var kolay gelsin...",-89,-115,-121);
      getch();
      system("cls");
      printf("Usta seviye:\n");
     
      for(i=0;i<21;i++)//Oyunu 20 işlemle sınırlandırdık.
      {
        islem=rand()%8+1;//Rasgele işlem seçtik
       
        if(islem==1)
        {
        x=rand()%1000+500;
        y=rand()%1000+500;
        printf("%d + %d = ",x,y);
        sonuc=x+y;
        }
        if(islem==2)
        {
        x=rand()%1000+500;
        y=rand()%1000+500;
        printf("%d - %d = ",x,y);
        sonuc=x-y;
        }
        if(islem==3)
        {
        x=rand()%10+20;
        y=rand()%100+10;
        printf("%d x %d = ",x,y);
        sonuc=x*y;
        }
        if(islem==4)
        {
        do{
          x=rand()%1000;
          y=rand()%100+1;
          }while(x%y!=0);
          //Bölme işlemi tam sayı çıksın diye do while kullandık.
        printf("%d / %d = ",x,y);
        sonuc=x/y;
        }
        if(islem==5)
        {
        x=rand()%1000+50;
        y=rand()%100+5;
        printf("%d (mod %d) = ",x,y);
        sonuc=x%y;
        }
        if(islem==6)
        {
        do{
          x=rand()%5+3;
          y=rand()%5;
          }while(x<y);
          //x y den büyük olmaz diye do while kullandık.
        printf("c(%d,%d) = ",x,y);
        sonuc=fkt(x)/(fkt(y)*fkt(x-y));
        }
        if(islem==7)
        {
        do{
          x=rand()%5+3;
          y=rand()%5;
          }while(x<y);
          //x y den büyük olmaz diye do while kullandık.
        printf("p(%d,%d) = ",x,y);
        sonuc=fkt(x)/fkt(x-y);
        }
        if(islem==8)
        {
        x=rand()%5+5;
        printf("%d! = ",x);
        sonuc=fkt(x);
        }
       
        time(&basla);
        //Bu komut o andaki saati baslaya atar.
        //Basla yerine değişik şeyler kullanabilirsiniz.
       
        scanf("%d",&giris);
       
        time(&bitir);
        //Bu komut o andaki saati bitire atar.
        //Bitir yerine değişik şeyler kullanabilirsiniz.
       
        //difftime fonksiyonu bize iki süre arasındaki farkı saniye olarak
        //veriyor. Çıktı ise double.
        if(difftime(bitir,basla)<=7)
        {
        if(sonuc==giris)
        {
          printf("Cevap Do%cru\n",-89);
          dogru+=1;
        }
        if(sonuc!=giris)
        {
          printf("Cevap Yanl%c%c\n",-115,-97);
          yanlis+=1;
        }
        }
        if(difftime(bitir,basla)>7 && difftime(bitir,basla)<=11)
          printf("Biraz daha h%czl%c...\n",-115,-115);
        if(difftime(bitir,basla)>11 && difftime(bitir,basla)<=17)
          printf("Birizc%ck yava%cs%cn%cz...\n",-115,-97,-115,-115);
        if(difftime(bitir,basla)>17)
          printf("Baya yava%cs%cn%cz...\n",-97,-115,-115);
      }
      istatistik(dogru,yanlis);
}


void
  insanotesi_i(void)
{

    int x,y,islem,giris,sonuc,i,dogru=0,yanlis=0;
      time_t basla,bitir;//Sitemin saatini saklamak için değişkenler...
     
      system("cls");
      printf("%cnsan %ctesi seviyeye ho%c geldiniz...\n",-104,-103,-97);
      printf("Toplama,%1c%ckartma,%carpma,B%clme,Fakt%criyel",-128,-115,-128,-108,-108);
      printf(",Mod Alma,\nPerm%ctasyon ve Kombinasyon i%clemlerine haz%cr olun...\n",-127,-97,-115);
      printf("Do%cru cevab%c bulmak i%cin 13 saniyeniz var kolay gelsin...",-89,-115,-121);
      getch();
      system("cls");
      printf("%cnsan %ctesi seviye:\n",-104,-103);
     
      for(i=0;i<21;i++)//Oyunu 20 işlemle sınırlandırdık.
      {
        islem=rand()%8+1;//Rasgele işlem seçtik
       
        if(islem==1)
        {
        x=rand()%100000-1500;
        y=rand()%10000+500;
        printf("%d + %d = ",x,y);
        sonuc=x+y;
        }
        if(islem==2)
        {
        x=rand()%100000-1500;
        y=rand()%10000+500;
        printf("%d - %d = ",x,y);
        sonuc=x-y;
        }
        if(islem==3)
        {
        x=rand()%100+15;
        y=rand()%1000-50;
        printf("%d x %d = ",x,y);
        sonuc=x*y;
        }
        if(islem==4)
        {
        do{
          x=rand()%1000+5;
          y=rand()%1000-5;
          }while(x%y!=0);
          //Bölme işlemi tam sayı çıksın diye do while kullandık.
        printf("%d / %d = ",x,y);
        sonuc=x/y;
        }
        if(islem==5)
        {
        x=rand()%10000+50;
        y=rand()%1000+5;
        printf("%d (mod %d) = ",x,y);
        sonuc=x%y;
        }
        if(islem==6)
        {
        do{
          x=rand()%10+5;
          y=rand()%10;
          }while(x<y);
          //x y den büyük olmaz diye do while kullandık.
        printf("c(%d,%d) = ",x,y);
        sonuc=fkt(x)/(fkt(y)*fkt(x-y));
        }
        if(islem==7)
        {
        do{
          x=rand()%10+5;
          y=rand()%10;
          }while(x<y);
          //x y den büyük olmaz diye do while kullandık.
        printf("p(%d,%d) = ",x,y);
        sonuc=fkt(x)/fkt(x-y);
        }
        if(islem==8)
        {
        x=rand()%10+5;
        printf("%d! = ",x);
        sonuc=fkt(x);
        }
       
        time(&basla);
        //Bu komut o andaki saati baslaya atar.
        //Basla yerine değişik şeyler kullanabilirsiniz.
       
        scanf("%d",&giris);
       
        time(&bitir);
        //Bu komut o andaki saati bitire atar.
        //Bitir yerine değişik şeyler kullanabilirsiniz.
       
        //difftime fonksiyonu bize iki süre arasındaki farkı saniye olarak
        //veriyor. Çıktı ise double.
        if(difftime(bitir,basla)<=13)
        {
        if(sonuc==giris)
        {
          printf("Cevap Do%cru\n",-89);
          dogru+=1;
        }
        if(sonuc!=giris)
        {
          printf("Cevap Yanl%c%c\n",-115,-97);
          yanlis+=1;
        }
        }
        if(difftime(bitir,basla)>13 && difftime(bitir,basla)<=17)
          printf("Biraz daha h%czl%c...\n",-115,-115);
        if(difftime(bitir,basla)>17 && difftime(bitir,basla)<=25)
          printf("Birizc%ck yava%cs%cn%cz...\n",-115,-97,-115,-115);
        if(difftime(bitir,basla)>25)
          printf("Baya yava%cs%cn%cz...\n",-97,-115,-115);
      }
      istatistik(dogru,yanlis);
}


void
  temel_h(void)
{
[I]
    int x,i,s[3],c[3],dogru=0,yanlis=0,say=0;
   
    system("cls");
      printf("Temel seviyeye ho%c geldiniz...\n",-97);
      printf("5 Tane say%cy%c akl%cn%czda tutmaya haz%cr olun...\n",-115,-115,-115,-115,-115);
      printf("Ekranda say%clar%c g%crmek i%cin 3 saniyeniz var kolay gelsin...",-115,-115,-108,-121);
      getch();
      system("cls");
      printf("Temel seviye:\n");
   
    for(x=1;x<11;x++)//Oyunu 10 işlemle sınırlandırdık.
    {
    for(i=0;i<3;i++)
    {
    s[i]=rand()%10+10;
    printf("%8d ",s[i]);
    }
    beklet(5);//5 saniye çıktı ekranda gözükecek.
    system("cls");
    for(i=0;i<3;i++)
    scanf("%d",&c[i]);
   
    for(i=0;i<3;i++)
    if(s[i]==c)
    say++;
   
    if(say==3)
    {
      printf("Cevap Do%cru\n\n",-89);
      dogru+=1;         
    }
    else
    {
      printf("Cevap Yanl%c%c\n\n",-115,-97);
      yanlis+=1;
    }
    say=0;
    //Her bir soru için sayacı 0 ladık.
    }
    istatistik(dogru,yanlis);
}

void
orta_h(void)
{
[I]
    int x,i,s[4],c[4],dogru=0,yanlis=0,say=0;
   
    system("cls");
      printf("Orta seviyeye ho%c geldiniz...\n",-97);
      printf("4 Tane say%cy%c akl%cn%czda tutmaya haz%cr olun...\n",-115,-115,-115,-115,-115);
      printf("Ekranda say%clar%c g%crmek i%cin 4 saniyeniz var kolay gelsin...",-115,-115,-108,-121);
      getch();
      system("cls");
      printf("Orta seviye:\n");
   
    for(x=1;x<11;x++)//Oyunu 10 işlemle sınırlandırdık.
    {
    for(i=0;i<4;i++)
    {
    s[i]=rand()%100+10;
    printf("%8d ",s[i]);
    }
    beklet(4);//4 saniye çıktı ekranda gözükecek.
    system("cls");
    for(i=0;i<4;i++)
    scanf("%d",&c[i]);
   
    for(i=0;i<4;i++)
    if(s[i]==c)
    say++;
   
    if(say==4)
    {
      printf("Cevap Do%cru\n\n",-89);
      dogru+=1;         
    }
    else
    {
      printf("Cevap Yanl%c%c\n\n",-115,-97);
      yanlis+=1;
    }
    say=0;
    //Her bir soru için sayacı 0 ladık.
    }
    istatistik(dogru,yanlis);
}

void
usta_h(void)
{
[I]
    int x,i,s[5],c[5],dogru=0,yanlis=0,say=0;
   
    system("cls");
      printf("Usta seviyeye ho%c geldiniz...\n",-97);
      printf("5 Tane say%cy%c akl%cn%czda tutmaya haz%cr olun...\n",-115,-115,-115,-115,-115);
      printf("Ekranda say%clar%c g%crmek i%cin 3 saniyeniz var kolay gelsin...",-115,-115,-108,-121);
      getch();
      system("cls");
      printf("Usta seviye:\n");
   
    for(x=1;x<11;x++)//Oyunu 10 işlemle sınırlandırdık.
    {
    for(i=0;i<5;i++)
    {
    s[i]=rand()%100-50;
    printf("%8d ",s[i]);
    }
    beklet(3);//3 saniye çıktı ekranda gözükecek.
    system("cls");
    for(i=0;i<5;i++)
    scanf("%d",&c[i]);
   
    for(i=0;i<5;i++)
    if(s[i]==c)
    say++;
   
    if(say==5)
    {
      printf("Cevap Do%cru\n\n",-89);
      dogru+=1;         
    }
    else
    {
      printf("Cevap Yanl%c%c\n\n",-115,-97);
      yanlis+=1;
    }
    say=0;
    //Her bir soru için sayacı 0 ladık.
    }
    istatistik(dogru,yanlis);
}

void
insanotesi_h(void)
{
[I]
    int x,i,s[6],c[6],dogru=0,yanlis=0,say=0;
   
      system("cls");
      printf("%cnsan %ctesi seviyeye ho%c geldiniz...\n",-104,-103,-97);
      printf("6 Tane say%cy%c akl%cn%czda tutmaya haz%cr olun...\n",-115,-115,-115,-115,-115);
      printf("Ekranda say%clar%c g%crmek i%cin 2 saniyeniz var kolay gelsin...",-115,-115,-108,-121);
      getch();
      system("cls");
      printf("%cnsan %ctesi seviye:\n",-104,-103);
   
    for(x=1;x<11;x++)//Oyunu 10 işlemle sınırlandırdık.
    {
    for(i=0;i<6;i++)
    {
    s[i]=rand()%1000-500;
    printf("%8d ",s[i]);
    }
    beklet(2);//2 saniye çıktı ekranda gözükecek.
    system("cls");
    for(i=0;i<6;i++)
    scanf("%d",&c[i]);
   
    for(i=0;i<6;i++)
    if(s[i]==c)
    say++;
   
    if(say==6)
    {
      printf("Cevap Do%cru\n\n",-89);
      dogru+=1;         
    }
    else
    {
      printf("Cevap Yanl%c%c\n\n",-115,-97);
      yanlis+=1;
    }
    say=0;
    //Her bir soru için sayacı 0 ladık.
    }
    istatistik(dogru,yanlis);
}


int
  fkt(int sayi)
{

    if(sayi==0 || sayi==1)
      return 1;
    else
      return sayi*fkt(sayi-1);
}


void
  istatistik(int dogru,int yanlis)
{

    int i;
   
    system("cls");
    printf("%3d Do%cru:  ",dogru,-89);
    for(i=0;i<=dogru;i++)
    printf("%c",1);
   
    printf("\n%3d Yanl%c%c: ",yanlis,-115,-97);
    for(i=0;i<=yanlis;i++)
    printf("0");
   
    printf("\n%3d Net:    ",dogru-yanlis);
    for(i=0;i<=dogru-yanlis;i++)
    printf("%c",2);
    for(i=0;i<=yanlis-dogru;i++)
    printf("0");
    getch();
}


void
  beklet(int zaman)
{

  clock_t istenen;

  istenen =  clock() + zaman * CLK_TCK;
  //zamanı suanki saate ekliyor ve istnen süreye atıyor

  while( clock() < istenen) {}
  //istenen süreye gelinceye kadar döngünün içinde kalınıyor.
}


//İbrahim Erkaplan




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

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2024 IRCForumlari.Net