Translate

29 Kasım 2015 Pazar

My Second Game: Hangman in C Programming


     Uzun zaman önce yaptığım kelime oyununu paylaşmam için şimdi vakit bulabildim. Özellikle dizi(array) konusunu pekiştirmek için güzel bir çalışma. Kelimeleri İngilizce olarak belirledim fakat siz Türkçe seçebilirsiniz, aynı zamanda dizi boyutlarını arttırarak daha fazla kelime ile oynayabilirsiniz. Programa görsellik eklemedim siz isteğinize göre ekleyebilirsiniz.

     Programı yazarken dikkat etmeniz gerekenler:
  • Oyunun sürekli devam edebilmesi çıkan kelimeyi diziden çıkartmalısınız ki tekrar aynı kelime gelmesin.
  • Yanlış yapılan harf sayısını sayarken dikkatli olmalısınız, döngüden doğru zamanda çıkması gerekir.
  • Seçilen harf kelimenin tümünde aranmalı.
  • Sorulan kelime rastgele gelmesi gerekir, hep aynı sırada gelirse bir anlamı olmaz.
   
     Programı anlamanız açısından yorum satırları ekledim. Bu program bir bonus sorusuydu, önceliğiniz kendi algoritmalarınızla bir yere bakmadan yapmanız ve takıldığınız yerlerde buradan faydalanmanız olmalıdır.


/*
Name : Berkay Saydam
ID :
Purpose of Program :  Hangman game .
*/

#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#include<time.h>
#include<conio.h>

int wordpull( void ); // a function for choose random word

main(){
int i=0,word=0,a=1,j=0,lose=0,found=0,exit=5,win=0;


const char* word_database[20][20] = {"literature", "scholar",
"enormous", "influence", "publication", "pioneer", "telephone",
"orchestra", "teacher", "member", "final", "phonograph",
"executed", "oldest", "people", "requiring", "screwdriver",
"intelligent", "different", "striking"};
int l[20]={10,7,8,9,11,7,9,9,7,6,5,10,8,6,6,9,11,11,9,8};  //length of words, they can take with library command .
char unique[15];                         
char quest[15];
char c;

do{       // loop for play again
lose=0;
found=0;
exit=5;
do{  // an algorithm for pull word that don't pull before.
do{

word = wordpull( );
if(word_database[0][word]!="NULL"){
a=1;
word_database[1][word]=word_database[0][word];
}
else{
                a=0;
}
}while(a==0);
word_database[0][word]="NULL";
}while(word_database[1][word]=="NULL");

strcpy(unique,word_database[1][word]); // chosen word assigning to unique array.

for (i=0; unique[i]!='\0'; i++){

      quest[i]=unique[i];     //unique assigning to quest
      unique[i]='*';         // and unique is being '*'
       
}
do{
c='\0';
printf("\nWord : %s \nPlease enter character : ",unique);  // Taking character from user
c=getche();   // This character assigning to C variable

for(i=0;i<l[word];i++){
               
if(quest[i]==c){               // Entering character are founding in word.
                unique[i]=quest[i];
                found++;                  // If there is , found will be increased.
}
}

                if(found==0){
                               lose++;              // If there isn't , lose will be increased.
                              
                }
               
                found=0;     //found is being 0 to using again another trial.
               
                if(strchr(unique,'*')=='\0'){              //If user found all character of word, exit will be equal to 6. ( Can be another value, not important )
                exit=6;
                printf("\nYou are win, word was %s , Congrulations.\n",unique);
    }
               
               
               
                if(lose==5){                     // If lose equal to 5, user haven't any chance, game over.
                for(i=0;i<l[word];i++){          // To appear correct word.
                unique[i]=quest[i];
               
}
                printf("\nGame Over ! Word was %s",unique);
}
   

}while(lose!=5 && exit!=6);              // If user haven't any chance or guess right, while loop will be end.

if(exit==6){                            // Guess right number equal to win variable.
                win++;
}

}while(lose!=5);

printf("\nYour score : %d",win);

return 0;
}

int wordpull( void ){
int word;
srand ( time ( NULL ) );
word = rand( ) % 20; // random word assigning to word variable.
return word;
}

7 Temmuz 2014 Pazartesi

My First Game: Blackjack in C Programming


     C’deki ilk oyun deneyimim olması ve bu nedenle benim için manevi değeri yüksek olmasından dolayı blog’umda paylaşmak istedim. Oyun multiplayer olarak da sunulabilir ben aynı kodları tekrar yazmak zorunda kalmamak için single olarak tasarladım.

     Blackjack genelde ülkemizde 21 olarak bilinen bir kart oyunudur. Yirmibir hakkında bilgiye buradan ulaşabilirsiniz. Oyunu yazarken parça parça birçok algoritma çıkardım. Parça parça olmasının sebebi Blackjack'te birçok kuralın olması, bu kuralları konu sonunda belirteceğim. Bu nedenle benim kodlarım 200-300 satır tuttu. Az ya da çok bu görecelidir. Hiçbir yerden yardım almadan, kendi programlama tekniğimi kullanmamdan dolayı birçok döngü kullandım. Bu döngüler fonksiyon kullanılarak daha aza indirilebilir.

     Oyunu Code::Blocks ve DEV-C geliştirme ortamlarında denedim herhangi bir sorunla karşılaşmadım, uyumlulukta bir sorun yok.


     Bu oyunu yazarken dikkat edilmesi gereken başlıca Blackjack kuralları:

  • Dağıtıcı elindeki kartların sayı toplamı 16 ve daha az ise 16'yı geçinceye kadar mecburen kart çekmeye devam eder.
  • Dağıtıcı ya da  oyuncunun eline as gelirse 1 ya da 11 puan olmak üzere kişinin insiyatifine göre hareket edebilme olanağı 
  • Dağıtıcı ya da oyuncunun elindeki kartların sayı toplamı 21'i geçme durumu ve sonuçları
  • Dağıtıcının bir kartını açık dağıtması

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int cardpull( void );
int cardpull( void ){
int card;

  card = rand( ) % 52;
  return card;
}

int main()
{

    int dizi[52]={1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10};
int cost=5000;
    printf("Welcome to Blackjack (This game prepared by Berkay SAYDAM)\n");
    printf("\nYou have 5000$.");
    do{
            int card=0,number=0,comhit=0,number2=0,comhit2=0,user=0,computer=0,output=0,comoutput=0,casino=0,comhit3=0,menu=0,result=0,value=0,stand=1;
    do{
    printf("How much money do you put on?");
    scanf("%d",&value);
    }while(value>cost);

    do{
        srand ( time ( NULL ) );
        card = cardpull(  );
        number=dizi[card];
        dizi[card]=0;
        }while(number==0);
        printf("Your first card is %d point.\n",number);
    do{
        srand ( time ( NULL ) );
        card = cardpull(  );
        comhit=dizi[card];
        dizi[card]=0;
        }while(comhit==0);
        printf("Computer's first card is %d point.\n",comhit);
    do{
        srand ( time ( NULL ) );
        card = cardpull(  );
        number2=dizi[card];
        dizi[card]=0;
        }while(number2==0);
        printf("Your second card is %d point.\n",number2);
    do{
        srand ( time ( NULL ) );
        card = cardpull(  );
        comhit2=dizi[card];
        dizi[card]=0;
        }while(comhit2==0);
    user=number+number2;
    computer=comhit+comhit2;
    if(number==1 && number2==1){
        user=2;
        printf("Your total is 2 \n");
    }
    else if(number==1 || number2==1){
        if(number==1){
            output=11+number2;
        }
        else{
            output=11+number;
        }
        printf("Your total is %d/%d\n",user,output);
    }
    else{
        printf("Your total is %d\n",user);
    }
    if(comhit==1 && comhit2==1){
        computer=2;
    }
    else if(comhit==1 || comhit2==1){
        if(comhit==1){
            comoutput=11+comhit2;
        }
        else{
            comoutput=11+comhit;
        }
    }
    else{
        comoutput=0;
    }
if(comoutput!=0){
    if(computer>16 || comoutput>16){
        if(computer>comoutput){
            casino=computer;
        }
        else{
            casino=comoutput;
        }
    }
   else if(computer>16 && comoutput<16){
    casino=computer;
   }
   else if(computer<16 && comoutput>16){
    casino=comoutput;
   }
   else{
        do{
        do{
        srand ( time ( NULL ) );
        card = cardpull(  );
        comhit3=dizi[card];
        dizi[card]=0;
        }while(comhit3==0);
        computer=computer+comhit3;
        comoutput=comoutput+comhit3;
        if(comhit3==1){
    comoutput=10+comhit3;
        }
        else{}
if(comoutput>21){
            comoutput=0;
        }
        else{}
if(computer>21){
    computer=45;
}
else{}
        }while(computer<16 && comoutput<16);
        if(computer==45){
            computer=0;
        }
        if(computer>comoutput){
            casino=computer;
        }
        else{
            casino=comoutput;
        }
   }
}
   if(comoutput==0){
    if(computer>16){
        casino=computer;
    }
    else{
            do{
        do{
        srand ( time ( NULL ) );
        card = cardpull(  );
        comhit3=dizi[card];
        dizi[card]=0;
        }while(comhit3==0);
        computer=computer+comhit3;
        if(comhit3==1){
    comoutput=computer;
    comoutput=comoutput+11;
    ++computer;
        if(comoutput>21){
            comoutput=0;
        }
        else{}
        }
        else{}
if(comoutput>21){
            comoutput=0;
        }
        else{}
if(computer>21){
    computer=45;
}
        }while(computer<16 && comoutput<16);
        if(computer==45){
            computer=0;
        }
        if(computer>comoutput){
            casino=computer;
        }
        else{
            casino=comoutput;
        }
    }
   }
do
    {
printf("\n(1)Hit\n(2)Stand\n(3)Double");
scanf("%d",&menu);
switch(menu){
case 1:
    do{
        srand ( time ( NULL ) );
        card = cardpull(  );
        comhit3=dizi[card];
        dizi[card]=0;
        }while(comhit3==0);
        if(comhit3==1){
        ++user;
    output=10+comhit3;
        }
       else if(output!=0){
        user=user+comhit3;
        output=output+comhit3;
       }
       else{
        user=user+comhit3;
       }
        if(output>21 || output==0){
            output=45;
        }
        else{}
if(user<22 && output!=45){
printf("Your total is %d/%d",user,output);}
else if(user<22 && output==45){
printf("Your total is %d",user);
}
else{
    printf("You passed 21 , sorry GAME OVER!");
    cost=cost-value;
    stand=0;
}
break;
case 2:
    stand=0;
if(output>21 || output==0){
            output=45;
        }
        else{}
    break;
case 3:
    value=value*2;
    printf("Your value be increased to %d (Double) ",value);
    break;
default:
    printf("Please enter number of menu");
    stand=1;
    break;
}
    }while(stand!=0);
if(casino==0){
    printf("Casino passed to 21, So Casino Loser You Win.");
    cost=cost+value;
}
else if(user<22 && output!=45){
    if(user<output){
        result=output;
    }
    else{
        result=user;
    }
 printf("Casino: %d \n You: %d \n",casino,result);
 if(casino<result){
    printf("You are winner.");
    cost=cost+value;
    printf("Now,you have %d$.",cost);
 }
 else if(casino>result){
    printf("You are loser.");
    cost=cost-value;
    printf("Now,you have %d$.",cost);
 }
 else{
    printf("There isn't winner.");
       printf("Now,you have %d$.",cost);
 }
}
else if(user<22 && output==45){
    result=user;
    printf("Casino: %d \n You: %d \n",casino,result);
 if(casino<result){
    printf("You are winner.");
     cost=cost+value;
    printf("Now,you have %d$.",cost);
 }
 else if(casino>result){
    printf("You are loser.");
    cost=cost-value;
    printf("Now,you have %d$.",cost);
 }
 else{
    printf("There isn't winner.");
     printf("Now,you have %d$.",cost);
 }
}
}while(cost>0);
    return 0;
}

1 Ağustos 2013 Perşembe

Windows 8 Shutdown Sorunsalı


    
     Windows 8 her işletim sisteminde olduğu gibi sorunlarıyla birlikte bilgisayarlarımıza yerleşti. Tabiki bu sorunlar olacak ve bu sorunlar güncelleştirmelerle birlikte giderilmeye çalışılacaktır. Bazı sorunlara ise deneme yanılma yöntemiyle çözüm bulacağız.
      Forumlarda sık rastladığım bilgisayarın kapanmama sorununa değineceğim. Bu sorun çoğu windows 8 işletim sistemli bilgisayarlarda ortaya çıkıyor ve Microsoft tarafından herhangi bir açıklama yapılmadı. Sorunu detaylı olarak anlatmak gerekirse bilgisayarınızı normal bir biçimde kapatırken ekran kapanıyor fakat bilgisayarınızın ışıkları yanmaya devam ediyor. Yani ekran kapanırken sistem çalışmaya devam ediyor bunu fan sesinden de anlayabilirsiniz. Sonrasında elinizde iki seçenek kalıyor ya ellemeyip bilgisayarın şarjı biteseye kadar bekleyeceksiniz ya da bilgisayarın güç düğmesine basılı tutup kapatacaksınız. Bu iki seçenekte bilgisayara aynı zararı vermektedir. Sonuçta cihazınız ani elektrik kesiminde kapandığı şekilde kapanıyor. Bu şekilde gücü birden kesme şeklinde kapatırsanız harddiskinize büyük zarar vermiş olursunuz.
      Bu sorun donanım sorunu değil yazılım sorunudur , yani bilgisayarınızda herhangi bir problem bulunmamaktadır. Çözümden bahsetmek gerekirse zor değil ama ben yine de resimli anlatacağım. Çözümü sadece dizüstü bilgisayarda denedim bu yüzden masaüstü bilgisayarlarda sekmeler hakkında bilgim yok.
 
  Adım 1
Adım 2
Adım 3
Adım 4
Adım 5
 
Fotoğraflarla ilgili sorun yaşarsanız , 1366x768 boyutunda fotoğraflara ulaşmak için aşağıdaki linkten indirebilirsiniz.

 
 
 
 
 
 
 
 
 
 

28 Temmuz 2013 Pazar

Biyografi Sevenlere Film Tavsiyeleri

    
     Biyografi tarzı film az izlenmesinden dolayı olsa gerek çok fazla rastlanılmıyor ve ilgi az olmasından dolayı güzel bir yapıma denk gelinmiyor. Genel olarak tarayıcılarda bu tarz film arayanlardan biri de bendim ve birçok film izledim. Arayan arkadaşlara yararlı olmak adına bu yazıyı yazarak filmler hakkında kısa bilgi vereceğim.
    
     The Social Network : Mark Zuckerburg hayatı ve Facebook'un gelişimine dikkat çekiyor. 2004 yılında Harvard'da aniden kurulmasını, nasıl aniden başarı sağladığını ve sınıf arkadaşı olan kurucularının aniden zenginleşen hayatlarının nasıl değiştiğini ele alıyor.
    
     Into The Wild : Christopher McCandless üniversiteden mezun olduktan sonra hemen sonra iş, aile ve sorumluluk gibi ağırlılıkları geride bırakıyor. Bütün parasını yakıyor ve Alaska'da doğa ile birebir yaşamak için yola koyuluyor. McCandless, iki yıllık yolculuğu boyunca bir kez bile ebeveynleri ve kız kardeşi ile haberleşmiyor. McCandless, uzun yolculuğu boyunca bin bir tür macerayla karşılaşıyor.     
 
     The Pursuit of Happyness : Chris Gardner maddi olarak ayakta kalmakta zorlanan ama buna rağmen son derece iyi niyetli ve çalışkan bir aile babasıdır. Karısı, artık içinde bulundukları duruma dayanamayıp evi terkedince oğlu Christopher ile yalnız kalırlar. Bu durumun yarattığı hayalkırıklığını ve zorlukları henüz atlatmamışken oturdukları evden de ev sahibi tarafından çıkartılırlar. Oğlu ile birlikte sokakta kalmasına ve tuvaletlerden düşkünler evine kadar çeşitli mekanlarda barınmaya çalışmasına rağmen Chris, oğlunun sevgisi ile ayakta kalmaya ve var gücü ile çalışmaya devam eder. Büyük bir sevgi ve mücadele öyküsünün anlatıldığı filmde Will Smith ve gerçek hayatta da oğlu olan Jaden Smith'in etkileyici oyunculuklarına sahne oluyor.
 
     127 hours: Film, dağcı Aron Ralston’ın büyük bir kaya parçasının arasında 5 gün boyunca kaldığı süreci ve yaşam mücadelesini anlatıyor.
    
     İyi Seyirler...

20 Temmuz 2013 Cumartesi

Windows 8 : A New Beginning


     Son zamanların sorunlarından birine değineceğim. İnternette sık sık görüyorum, öncelikle sorunu anlatayım. Windows 8 işletim sistemi bulunan bilgisayarlarda donma ve tuşların kilitlenmesi sonucu işlem yapamama gibi bir sorun oluyor, bilgisayarı kapatma düğmesinden kapatmak zorunda kalıyorsunuz.
      Bunun sebebini bir süre araştırdım fakat internette çözüm bulamadım ve kendim çözmeye karar verdim. Şunu söylemek gerekirki windows 8’de arkaplanda çalışan birçok program bulunmaktadır. Bu işletim sistemi bizim işlerimiz kolaylaştırıyor fakat bilgisayara binen yük artıyor. Bilgisayar arkaplanda çalıştırdığı programlar dolayısı ile fazla güç sarf ediyor ve özellikle notebooklarda aşırı ısınmaya sebep oluyor. Bu CPU ısınmasından dolayı bir müddet sonra bilgisayar kendini kitliyor ve hiçbir tuş, imleç çalışmıyor.
      Bunun iki çözümü var: birincisi kolay erişim için çalışan programlardan vazgeçmek, ikincisi notebook soğutucusu kullanmaktır. Görev yöneticisi > Başlangıç kısmından bazı kullanmadığınız programları devre dışı bırakabilirsiniz böylelikle gereksiz yere bilgisayarınızı zorlamamış olacaksınız.
      Ben her ihtimale karşı notebook soğutucusu kullanıyorum. Her zaman çalıştırmıyorum, genelde fazla kullanımda ya da grafik gerektiren işlerde notebook soğutucusunu çalıştırıyorum ve açıkçası çok faydasınıda gördüm.

19 Temmuz 2013 Cuma

Neden Facebook'tayız ?


     Çoğu insanın daha la nasıl girdiğini fark edemediği bir Facebook olgusu var. Ne ara bu kadar insan katılmıştı bu sosyal ağ sitesine anlaşılmaz ve hatta ne amaçla olduğumuzda net değildir. Ama tek bir bilinen var bundan kopamadığımız. Belki kendi isteğimizle belki de arkadaşlarımızın kim bilir…
      İlk başlarda sadece tanışma sitesi olarak kurulan Facebook artık başka amaçlara hizmet eder olmuştu. Bu sitede arkadaşlarınla mesajlaşabiliyor, videolar paylaşıyor ve hatta oyun bile oynayabiliyordun. Öyle planlı düşünülmüş ki arkadaşlarınla oynarken aynı zamanda puan olarak yarışıyorsun. Sen oynarken arkadaşlarına istek yolluyor böylelikle oyun kendi reklamını kendi yapmış oluyor. Hatta arkadaşlarınla muhabbet ederken konusu geçiyor ve bilmeyenleri oyunu oynamaya teşvik ediyor. Sadece belli bir yaş grubuna hitap etmedi , farmville oyunuyla ev hanımlarını da Facebook ağına kattı.
      Bir zamanlar kolay mesajlaşmayı ve görüntülü konuşmayı sağlayabilen nadir programlardan olan Windows Live Messenger’ında sonunu getirdi. Çünkü Facebook kullanım olarak daha rahattı. Bir program indirmek zorunda değildiniz ve bu sayede her bilgisayardan erişebiliyordunuz . Bununla kalmayıp video izleyebiliyor, oyun oynayabiliyor ve haberleri takip edebiliyordunuz. Bu farklı özellikleri kapsayan Facebook sadece Windows Live Messenger’ı etkilemedi tabiki. O zamanların popüler okey oynama sitesi Mynet de nasibini aldı. Facebook’a okey oyununun gelmesiyle ziyaretçi sayısı epey azaldı. Facebook herkesin zayıf noktası olan “kolaylık”tan vurmuştu.
      Akıllı telefonların çıkmasıyla insanlar bilgisayar kullanımından çok telefon kullanımına yöneldiler. Bu da gösteriyordu ki Facebook telefonlara taşınmalıydı. İnsanları telefona yönlendirmenin tek yolu ücretsiz kullanım hakkı vermekti. Facebook bunu da düşünerek 0.facebook’u halka açtı. Böylelikle insanlar interneti değil Facebook’u kullanıyorlardı. Düşünsenize telefonunuzda internet olmasa bile Facebook’tan arkadaşlarınıza ulaşabilirdiniz, kontöre bile ihtiyacınız yoktu. Ama her güzel şeyin bir sonu olduğu gibi bunun da vardı. 0.facebook kapandı fakat insanlara öyle bir bağımlılık yapmıştı ki insanlar internet paketi yaptırmaya para vermekten kaçınmadı. Yer bildirimi özelliği buna fazlasıyla katkı sağlamıştı.
      Facebook’a ne ara, ne amaçla katıldığımız bilinmez ama bu gelişimiyle yıllarca bu sitede bulunacağımız kesin. Facebook’un kuruluşunu daha detaylı bilmek isterseniz “The Social Network” filmini izlemenizi öneririm.

18 Temmuz 2013 Perşembe

Diziler Her Zaman Var Oldu Ve Olacakta


     Son zamanlarda türeyen bir belgeselci akım var. Dışardan bakılınca onlar dizi seyretmiyorlar sadece belgesel ya da eğitici videolar izliyorlar. Ama nasıl oluyorsa her diziden de haberleri var. Sorun onlara size bütün bölümlerin özetini geçsinler. Diziler hakkında ne düşündüklerini sorduğumda onlar yoğun insanlar dizilere vakit ayıramıyorlar ya da dizilerin mantıksız olduğunu düşünüyorlar. Dizi de sen mantık arıyorsan saten kendinde olup olmadığına bir bak derim.
      Diziler bir şeyler öğretmek için değil daha çok insanlar kafalarını dağıtsınlar , hayatın stresinden uzaklaşsınlar diye vardır. Hatta bu yüzden genelde saat 20:00 ya da 22:00 da başlar çoğu dizi , yani kısacası iş çıkışıdır. Amaçlarına ulaşıyorlar mı diye sorarsanız bence fazlasıyla ulaşıyorlar. Tabi her dizi değil , dizi seçimi de önemlidir. Bana sorarsanız “Yalan Dünya , Zengin Kız Fakir Olan , Leyla ile Mecnun” on numara dizilerdir. Türkiyedeki diziler arasında bu nadir diziler insanları güldürüp aynı zamanda hayatın stresinden kurtarıp kafa dağıtıyorlar.
      Sadece dizi seçmekle bitmiyor tabi kaç tane seçiceksiniz o da önemlidir. Haftada 3 dizi yeterli bana göre daha fazlası gereksizdir ki saten 3 den fazla da iyi dizi bulamazsınız diye düşünüyorum. Hergüne dizi koymanıza gerek yok bazı günleride kendinize ayırabilirsiniz.
      Dizilerin gereksiz olduğunu düşünenler de artık bu zihniyetten kurtulmalılar , diziler her zaman var oldu ve her zamanda var olacaktır. Önemli olan bilinçli bir şekilde izlemektir. Programınızı kurar ve uygularsanız hiçbir sorunla karşılaşmıyorsunuz.