28 Aralık 2012 Cuma

C# ile mario (bir inat projesi =)

Çocukluk kahramanımız Mario'nun ilerde başımıza bu kadar dert olacağını bilseydim ,prensesi gösterip gösterip kurtarmazdım :)(ki ben bu projenin çeyreğine bile katkıda bulunamadım).Uğraştırdı çünkü C# bilmeden etmeden koyulduk yapmaya.Proje zamanı tükenmek üzereyken farkettik ki C#'ta, form ekranında Mario tarzı bi oyun yazmak çok mantıksızmış:)Adamlar XNA adında bir framework yapmışlar ki uuvvv :)Oyun yapmanız için ne gerekiyosa ayağınıza sunulmuş,çok da uğraştırmıyor üstelik. İNAT olma sebebi de yapan arkadaş XNA yi görmesine rağmen C# ile yaptı manyak:)Bundan ötürü oynanabilirliği biraz kötü ama o problemleri C# ı sadece 1 hafta video izleyerek ,uyumayarak aştığını düşünürsek adama saygı duymak dışında bişey kalmıyor geriye :)Yön tuşları+zıplamak için Z+çekiç atmak için X tuşunu kullanın. Buradan indirebilirsiniz oyunu, kolay gelsin :)Kodları da mantıklı sebeplerele isteyen olursa veririm ,yapana sorarım tabi önce:)

19 Ekim 2012 Cuma

Bağlı Listeler (Linked List)

C de linked list (bağlı liste )kullanarak küçükten büyüğe sıralı liste kullanıma ufakcana bi örnek :)Üstteki resmi linked list deyince gözümüz kapalı çizeriz de nedir ne yapıyoruz la burda deseler az bi zorlanırız heralde:)İlk sınıflar için bu lafım tabi. Bi kere neden ihtiyaç duyulmuş bunu bilmek gerek.Kafadan dinamik bellek kullanıyo ki bu da memory management diye üstüne düştüğümüz probleme bir çözüm.Bir şeyler eklemek ve silmek de normal arrayde yaptığımız işlemlerden çok daha kolay.Yani zamandan da kazanıyoruz.Şu bizim bayram ödevinin ilk sorusuna da temel olsun, uzatmayım kodları vereyim :) Buradan indirin kolay gelsin.İndirmek istemeyen de buyursun:


#include < stdio.h >
#include <stdlib.h >
#include < conio.h >
struct node
{
int value;
struct node *next;
};

typedef struct node node;
void initialization();//listeye ilk deðer verme islemleri
void add(int,node**);//eleman eklemek icin fonk


int main () {
    initialization();

    getch();
    return 0;
    }

    void initialization(){
     node *current ,*head;
     head=NULL;
     int added=1;
     printf("Listenizin elemanlarini girin\nbitirmek icin 0 basin :\n");
    while(added!=0){
     scanf("%d",&added); //her seferinde elemanlar alýnýyor
     add(added,&head);//her seferinde eklenmek üzere fonksiyona gönderiliyor
     printf("\n");

     }
     printf("Bagli listenizin elemanlari sirasiyla :\n");
    current=head;
    while (current) { //NULL görene kadar devam
          printf("%d\n",current->value);
          current=current->next;
          }
     }
     void add(int a,node** head){ //sýralý eklemek yapmak icin
          node *previous=NULL,*added,*current;

          added=(node*)malloc(sizeof(node));//ihtiyac oldukca belek ayýrýyor
          added->value=a;//gelen deðeri value kýsmýna atýyor
          added->next=NULL;// göstericisini sýfýrlýyor

          current=*head;

    while (current!=NULL && (added->value)>current->value){ //sýralý ekleme yapmak icin
                previous=current;
                current=current->next;
                }
                if(previous==NULL)
                  *head=added;
              else{
              previous->next=added;
             }
             added->next=current;
         }






6 Ekim 2012 Cumartesi

BCD (Binary Coded Decimal) muhabbeti nedir?



Genel olarak kodlama, görülebilen, okunabilen, yazı ve sayı işaretlerin değiştirilmesidir. Bu değiştirme şekli, metodlarla yapılır. Bu metodlara kodlama denir.
Bir çok kodlama sistemi vardır. Sayısal kodlamanın yanında normlandırılmış (mors alfabesinde olduğu gibi) kodlamada vardır. Bu sistemde harfler, rakamlar ve cümle parçaları başka başka kodlandırılır.
Decimal İçin Binary Kodlaması - (BCD) 
En basit kod sistemi "Binary Code Decimal" kısaca ifade edildiği gibi "BCD" kodudur. Bu kod 'da 0 - 9 decimal sayılarının ifadesi için, binary sayı sistemi kullanılır. BCD sayıları 0 ve 1 ile ifade edilirler.
Decimal Sayıları
 Binary Sayıları için Binary Kodu
0
1
2
3
4
5
6
7
8
9
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
Bu kod sisteminde her decimal sayı karakteri için, dört bitli binary karakteri kullanılır.
Decimal
              BCD
      25(Erzurum:)
32
679
2571


0010
0101


0011
0010

0110
0111
1001
0010
0101
0111
0001
Burada görüldüğü gibi, her decimal sayısı, dört bitli bir binary kod 'u ile ifade edilmiştir. 
Binary için 10 decimal sayısı 1010 dır. BCD kodu ile, 10 sayısı 0001 0000 olarak yazılır. yani her basamak kendi içinde binary 'e çevrilir.
Decimal
Binary
BCD
141
2179
10001101
100010000011

0001
0100
0001
0010
0001
0111
1001
Herhangi bir aritmetik işlem varsa önce çözüm bulunur sonra BCD kodlamasına geçilirmiş bu da bi bilgi :)

6 Ağustos 2012 Pazartesi

Bildiğimiz bi ateri oyunun C hali (alıntıdır)



Alıntı çünkü hep yazmak taraftarı değilim oturup incelemek,anlamak da lazım birilerinin kodlarını.Ben mesela sabit görüntüyü nasıl yakalarım diye çok soruyordum kendime buradan öğrendim, renklendirme de aynı şekilde umarım işinize yarar incelemeye değer bence.Kodları buradan indirebilirsiniz kolay gelsin :)

19 Mayıs 2012 Cumartesi

C++ Yılan Oyunu(snake)

C++ ile yazılmış yılan oyunu(Snake) eski günlerinize bir an için dönebilirsiniz:)Yine exe sini koyuyorum
proje olarak alıcaklar kesinlkile olucaktır uğraşın yine de yapamazsanız bana ulaşın:) buradan indirebilirsiniz.
İyi eğlenceler ,kolay gelsin:)

15 Mayıs 2012 Salı

C++ Projeleri(sudoku,pişti,black jack,futbol ligi simulasyonu...)




Devamını getiriceğim bu yazıyı farklı projelerle renklendiricem daha inş. Arkadaşlarımdan aldıkca burda exe dosyalarna ulaşmanızı saglıycam, size verilecek projelerde yardımcı olması için. Kesinlikle uğraşın kendiniz yapmaya çalışın projelerinizi ama olur da yapamazsanız çabanıza , emeğinize rağmen bana cuneyt.carikci@gmail.com adresinden ulaşabilirseniz yardımcı olmaya çalışırım.C++ ile sudoku,pişti,black jack,futbol ligi simulasyonu,mayın tarlası... gibi projelerin exelerine kısa bi zaman da buraya koycam exeleri çünkü kodları koysam kimse uğraşmayacaktır :).Sudokuya buradan ulaşablirsiniz. Kolay gelsin..
Piştiye buradan ulaşabilirsiniz az ingilizce lazım halledersiniz bence:)Kartların dikine dikine olması biraz gıcık ediyor evet ama biz daha iyisini yapana kadar en iyisi bu :P

26 Nisan 2012 Perşembe

C++ Virtual(sanal) Fonksiyonlar Örneği

          Kod kısmına geçmeden önce ufak bir açıklama yapmak istedim virtual fonksiyon hakkında.
Üstteki resimden yola çıkacak olursak Animal sınıfı Base class , Wolf, OtherAnimal ve Fish sınıfları da
bu Base class tan türetilmiş sınıflar GoldFish de Fish den türetilmiş.Tüm türetilmiş sınıfların ortak özelliği
  "yemek" üzerine düşünün.Animal sınıfı eat() fonksiyon içeriyor,diğer sınıflar da öyle, yalnız türetilmiş sınıfları
pointer arrayına attığımızda   Animal *Ptr[3];  ve bu arrayın elemanlarının eat() fonksiyonunu  Ptr[0]->eat(); komutuyla her cagırısımızda  beklediğimiz şey her nesnenin kendi özelliğini ekrana yazması ama bu çağırım
Base class daki eat() fonksiyonunu çağırmaktan başka bişey değildir.Amacımıza uygun çıktı için Base class'da
eat() fonksiyonunun başına  virtual  anahtar kelimesini getirmeliyiz.Kodları  buradan indirip üstünde oynamalar yapabilirsiniz,öğrenmeniz için daha iyi olacaktır.Aynı zaman da aşşağıda da inceleyebilirsiniz. Kolay gelsin..


/*
Cüneyt Çarıkçi  27-04-2012
cuno_carikci@windowslive.com
*/

#include
using namespace std;

class Animal {
public:
virtual void eat() {
cout<<"??!!..!!??\n";
}


/* Saf sanal sınıf icin
 bir alt satır aktiflestirilmeli
virtual void eat()=0;*/

   ~Animal() {}//unutulmamalı
};

class Wolf : public Animal {
public:
    void eat() {
        cout << "Kurt: Ceylan yer!\n";
    }
};

class Fish : public Animal
{
public:
    void eat() {
        cout << "Balik: Balik yer!\n";
    }
};

class GoldFish : public Fish {
public:
    void eat() {
       cout << "Akvaryum Baligi: Balik yemi yer!\n";
    }
};

class OtherAnimal : public Animal {
};

int main() {
Wolf w;
Fish f;
GoldFish g;


Animal *Ptr[3];

Ptr[0]=&w;
Ptr[1]=&f;
Ptr[2]=&g;

cout<<"             ------HAYVANLARIN BESLENME SEKILLARI------\n";

for ( int i = 0; i < 3; i++ ){
Ptr[i]->eat();
/*
Base class da eat() fonksiyonunu
virtual (sanal) yapmasaydık
her cagirilista Base class'taki
eat() cagirilacaktı ki bu da istedigimiz
bir şey degil.Ortak bir payda altında
Her nesne kendine ozgu
özellikler barındırabilir ve bizim
bunlara ulaşmamız gerekebilir.
*/
}


system("PAUSE");
}


10 Nisan 2012 Salı

C++ Inheritane(kalıtım) Örneği 2















#include
#define pi 3.14
using namespace std;
class point {
friend ostream& operator<<(ostream& yaz,point p){ //<< operatorunu asırı yukledik
yaz<<"("<
return yaz;
}

private:
int x,y;
public:

point(int a=0,int b=0)
{
setPoint(a,b);
}
void setPoint(int a,int b)
{
x=a;
y=b;
}
~point(){}//test amaclı bi seyler yazılabilir
};
class cember:public point{ //point'ten cember turettık //:public  eristigimiz icin
int yaricap;                                      //public fonksiyonlara ulasabilirz
float alan;
float cevre;
public:
cember(int x=0,int y=0,int r=0){
setPoint(x,y);
setYaricap(r);
setAlan();
setCevre();
}
void setYaricap(int a) {yaricap=a;}
int getYaricap() {  return yaricap;}
void setAlan(){

alan=pi*getYaricap()*getYaricap();
}
float getAlan() {return alan;}

void setCevre(){

cevre=2*pi*yaricap;
}
float getCevre() {return cevre;}

void printInfo(cember t){ // tüm bilgileri goster

cout<<"Cemberin merkezi: "<
cout<<"Cemberin yaricapi: "<
cout<<"Cemberin alani: "<
cout<<"Cemberin cevresi: "<
}

};
class kure:public cember {

public:
kure(int a=0,int b=0,int c=0){
setYaricap(c);
setPoint(a,b);
hacim=(4/3)*pi*getYaricap()*getYaricap()*getYaricap(); //sayisal degerler
                                                                                             //dogru cıkmayabilir
}                                                          //int-float donusumunu ihmal ettigim icin
void setHacim(kure c){                                     //ugrasmak istemedim :)
hacim=(4/3)*pi*getYaricap()*getYaricap()*getYaricap();
}
float getHacim() {return hacim;}

void printKure(kure t) {

cout<<"Kurenin merkezi: "<
cout<<"Kurenin yaricapi: "<
cout<<"Kurenin hacmi: "<
}
private:
float hacim;

};

int main () {
point p;
cout<Pointe ait bilgiler"<

cout<<"\n";

cember test(3,4,5);
test.printInfo(test);
cout<<"\n";


kure deneme(0,0,10);      
deneme.printKure(deneme);

//deneme.printInfo(deneme);

/*cember sınıfına ozelmis gibi dusunulse de kure sınıfı
cemberden turedigi icin problem olmayacaktır
gerekli ortak bilgilere erisip bilgileri yazabilir*/

system("PAUSE");
return 0;
}

9 Nisan 2012 Pazartesi

C++ Inheritance(kalıtım) örneği



/* Cüneyt Çarıkçi 09/04/12*/ //  Basit kalıtım örneği
#include
using namespace std;
class Calisan{
char isim[30];
int yas;

public:
 Calisan(char ad[]="isim_yok",int y=0){
 strcpy(isim,ad);
 yas=y;
 }
 ~Calisan(){}
 void setIsim (char b[]){
 strcpy(isim,b);
 }
 char* getIsim(){return isim;}
 int getYas(){return yas;}
 void setYas(int a) {
 yas=a;
 }

};
class memur:public Calisan{// Calisan snıfndan memur türet
public:
memur(char ad[]="isim_yok",int y=0,char yer[]="gorev_yeri_girilmemis"){

    setIsim(ad);
 setYas(y);
 strcpy(gorevYeri,yer);
 }
 ~memur(){}
 char* getGorevYeri(){return gorevYeri;}

private:
 char gorevYeri[30];

};
int main () {
 memur cuno("Cuneyt Carikci",20,"Erzurum");  
 cout<<"Calisanin adi: "<return 0;
}