PDA

Tam Sürümünü Görmek İçin : C++


beterman
16/01/2007, 12:09
class Kart
{
public:
Kart(string r,string s);
~Kart();
void fonksiyon1();

private:
string renk;
string sayi;
};

class SkatGame
{
public:
SkatGame();
~SkatGame();
void shuffle(); // Kartlari karistir
void print(); // Kartlari göster
void deal(); // Kartlari oyunculara dagit
Kart *getSkat() { return skat};

private:
Kart skat[2];
};

void main()
{
//Burada 2 tane "Kart" nesnesini icinde tutan "skat" Arrayini geri döndüren
// getSkat() fonksiyonunu cagirmak istiyorum...

}

Arkadaslar bir program yaziyorum.Programda kullandigim iki sinifi basitce ayrintisiz yazdim.Bu iki siniftan teki "Kart".Bu sinif belirli bir sayida karti üretiyor.(sinek 8,kupa 10 ve karo papaz gibi 3 kart mesela..)
"SkatGame" sinifi ise olusturulan kartlari sirasini karistirir,ekranda gösterir ve belirlenmis oyunculara dagitir."SkatGame" bunu istenilen kart sayisi kart "Kart" sinifindan nesne olusturarak yapar.mesela ben "skat[2]" ile iki tane Kart nesnesi yani kart üretmek istedim.Benim yapmak istedigim main() bölümünde "getskat()" fonksiyonunu cagirip "skat[2]" icindeki Kart sinifina ait nesnelerine ulasmak istiyorum...
Bunu nasil yazabilecegimi söyleyebilecek bir arkadas varmi acaba???
Tessekkürler...


ortug
16/01/2007, 18:46
Anlamaya çalıştım ama anlayamadım.
getskat()" fonksiyonunu cagirip "skat[2]" icindeki Kart sinifina ait nesnelerine ulasmak istiyorum...
Yazdığın kod zaten bunu yapıyor.

Revne
16/01/2007, 21:11
#define KART_SIZE 2

class SkatGame
{
public:
SkatGame();
~SkatGame();
void shuffle(); // Kartlari karistir
void print(); // Kartlari göster
void deal(); // Kartlari oyunculara dagit
Kart *getSkat(int index) //SkatGame icindeki Kartlara ulasılıyor..
{
if (index<0 ||index>=KART_SIZE) return NULL;
return &skat[index];
};
private:
Kart skat[KART_SIZE];
};

acehreli
16/01/2007, 21:39
beterman, C++ yazdigina gore, dizileri geride birakip onlar kadar kolay olan vector'u kullanmak isine cok yarayacak. Dizilerin islevlere gonderilememe veya islevlerden dOndUrulememe gibi sorunlarin da kalmayacak.

Bir ornek:

#include <vector>
#include <iostream>

// Burada onemli olmadigi icin bos tanimliyorum
class Kart
{};

// Icinde Kart tutulan vector'e kullanisli bir ad veriyorum: Deste
typedef std::vector<Kart> Deste;

Deste deste_yap()
{
Deste deste;

// push_back islevi vector'e eleman ekler; uc tane Kart ekliyorum
for (int i = 0; i != 3; ++i) {
deste.push_back(Kart());
}

// deste kendisi bir nesne oldugu icin, kolayca dOndUrUlebilir
return deste;
}

// Bir karti kullanan bir islev olsun
void kart_kullan(Kart & kart)
{
// Burasi onemli degil
}

int main()
{
// Iste elimde bir deste var
Deste deste = deste_yap();

std::cout << "Destede " << deste.size() << " tane kart var\n";

// Destedeki ilk karti kullanalim; elemanlara erisim ayni dizilerde oldugu gibi:
kart_kullan(deste[0]);
}
Ali

beterman
17/01/2007, 13:27
Anlamaya çalıştım ama anlayamadım.

Yazdığın kod zaten bunu yapıyor.

ama dikkat edersen main() bölümünü bos biraktim.Benim su an icin yapmam gereken bu fonksiyonu mainde cagirabilmek ama nasil cagirabilirim.ve isin asil benim icin önemli olan noktasi fonksiyonu cagirdigimda icindekileri nasil kullanabilirim.Isin gercegi bu bir sinav sorusu.Profun istedigi sekil böyle.vektor kullanmamin bir faydasi olmicak...Benden istenilen bu...

acehreli
17/01/2007, 19:21
Once bir SkatGame nesnesi olusturacaksin:

SkatGame oyun;

Sonra onu istedigin sekilde kullanacaksin:

oyun.shuffle();
oyun.deal();
oyun.print();
// vs.

En sonunda da kartlara eriseceksin:

Kart * kartlar = oyun.getSkat();

Ali

beterman
25/01/2007, 14:53
Once bir SkatGame nesnesi olusturacaksin:

SkatGame oyun;

En sonunda da kartlara eriseceksin:

Kart * kartlar = oyun.getSkat();

Ali

ise yaradi...
kartlar->funktion1();
seklinde istedigim kart fonksiyonlarina main() üzerinden erisebiliyorum
cok tessekkür ederim arkadaslar özellikle Ali kardesim...
:)