okul da ödev için yapmıştım bunu belki lazım olan kişiler olabilir : )
oyunu daha çok fonksiyonlara döküp 2 boyutlu kart dizisi kullansam epey daha az koddan oluşurdu ama mühim olan bir an önce yapmamdı ödevi o sebeple kod optimizesine hiç vakit ayıramadım ...
programın çalışan halini :
www.saho.in/samples/cpp-pisti.zip adresinden indirebilirsiniz
sorularınız için r10 u ve
http://www.saho.in/c-ile-consolda-pisti-oyunu/ adresini kullanabilirsiniz
#include <cstdlib>
#include <iostream>
using namespace std;
int atilanlarCpu[5] = {0};
int atilanlarKisi[5] = {0};
int karo[14] = {0};
int maca[14] = {0};
int sinek[14] = {0};
int kupa[14] = {0};
int cpuElKart[5] = {0};
int cpuElTip[5] = {0};
int kisiElKart[5] = {0};
int kisiElTip[5] = {0};
int yerElKart[54] = {0};
int yerElTip[54] = {0};
void kartlariGoster(int);
void tipx(int);
void kartx(int);
int puanx(int,int);
int kartVer(int);
int karistir(int);
int main(int argc, char *argv[])
{
int skorBilgisayarToplam = 0,skorKisiToplam = 0;
char ad[50];
cout<<"Adinizi Giriniz : ";
gets(ad);
oyunbaslangic:
for(int i = 1; i<=13; i++) // kartlar olusturuluyor ve daha once kimseye verilmedigi 1 e kurarak ile tescilleniyor
{
karo[i] = 1;
maca[i] = 1;
sinek[i] = 1;
kupa[i] = 1;
}
int skorKisi = 0,skorBilgisayar = 0;
int eldonus = 1;
cout<<"Bir kart cekiniz ( buyuk kart ceken oyuna ilk baslar )\n";
system("PAUSE");
srand(time(NULL));
karistir:
int karisikKart = karistir(13);
int karisikTip = karistir(4);
cout<<"Bilgisisayar ";
tipx(karisikTip);
cout<<" - ";
kartx(karisikKart);
cout<<" Cekti\n";
system("PAUSE");
int karisikKartx = karistir(13);
int karisikTipx = karistir(4);
cout<<"Sizin kartiniz ";
tipx(karisikTipx);
cout<<" - ";
kartx(karisikKartx);
cout<<" ...\n";
int basla;
if(karisikKart > karisikKartx)
{
basla = 0;
cout<<"Bilgisayar basliyor";
}
else if (karisikKart < karisikKartx)
{
basla = 1;
cout<<"Siz basliyorsunuz\n";
}
else {
cout<<"Kartlariniz aynı yeniden cekiliyor\n";
goto karistir;
}
cout<<"\nKartlar karildi ve yerde 4 kart duruyor\n";
/*kartVer(1);
kartlariGoster(1);
int atilan;
while(1)
{
cin>>atilan;
tipx(kisiElTip[atilan]);
cout<<" - ";
kartx(kisiElKart[atilan]);
cout<<endl;
}
*/
kartVer(2);
int atilan = 0,tipf,kartf,yer = 4;
oyun:
int sayacf = 1,suan = 0,suanx = 0,puan = 0,kagitCpu = 0,kagitKisi = 0;
kartVer(1);
kartVer(0);
cout<<"Sizin kartlariniz : ";
kartlariGoster(1);
cout<<endl;
/*cout<<"Pc kartlari : ";
kartlariGoster(0);
cout<<endl;
cout<<"Yer kartlari : ";
kartlariGoster(2);
cout<<endl;*/
tipx(yerElTip[yer]);
cout<<" - ";
kartx(yerElKart[yer]);
cout<<endl;
while(1)
{
if(basla == 1) // kullanıcı kart atıyor
{
yenidenAt:
cout<<"Atmak istediginiz kartin rakamina basiniz : ";
cin>>atilan;
if(atilan<1 && atilan>4)
{
cout<<"\nHatalı bir secim yaptiniz!\n";
goto yenidenAt;
}
else
{
for(int b=1;b<=4;b++)
{
if(atilanlarKisi[b] == atilan)
{
cout<<"\nHata : "<<atilan<<" daha once atilmis!\n";
goto yenidenAt;
}
}
suanx++;
atilanlarKisi[suanx] = atilan;
}
cout<<"\nSen : ";
tipx(kisiElTip[atilan]);
cout<<" - ";
kartx(kisiElKart[atilan]);
cout<<" Attin.";
if( (yerElKart[yer]==kisiElKart[atilan] ) || ( kisiElKart[atilan] == 11 && yerElKart[yer]!=0) )
{
if(yer == 1)
{
if(yerElKart[yer] == 11)
{
cout<<"\n(Pisti X Pisti Yaptin)\n";
skorKisi+=20;
}
else if(kisiElKart[atilan] != 11)
{
cout<<"\n(Pisti Yaptin)\n";
skorKisi+=10;
}
else
{
cout<<"\n(ALDIN)\n";
}
}
else
{
cout<<"\n(ALDIN)\n";
}
yer++;
yerElTip[yer] = kisiElTip[atilan];
yerElKart[yer] = kisiElKart[atilan];
cout<<"\nAldiginiz kartlar : ";
for(int g = 1;g<=54;g++)
{
if(g<=yer)
{
kagitKisi++;
tipx(yerElTip[g]); cout<<" - "; kartx(yerElKart[g]); if(g!=yer) cout<<", ";
puan = puanx(yerElTip[g],yerElKart[g]);
skorKisi+=puan;
}
yerElKart[g] = 0;
yerElTip[g] = 0;
}
yer = 0;
}
else
{
yer++;
yerElTip[yer] = kisiElTip[atilan];
yerElKart[yer] = kisiElKart[atilan];
// cout<<"sen alamadin devam";
}
basla = 0;
} else { /// cpu kart atıyor
yenidenSec:
atilan = karistir(4);
for(int h=1;h<=4;h++)
{
if(atilanlarCpu[h] == atilan)
{
goto yenidenSec;
}
}
suan++;
atilanlarCpu[suan] = atilan;
cout<<"Pc : ";
tipx(cpuElTip[atilan]);
cout<<" - ";
kartx(cpuElKart[atilan]);
cout<<" Atti.";
if( (yerElKart[yer]==cpuElKart[atilan] ) || (cpuElKart[atilan] == 11 && yerElKart[yer]!=0) )
{
if(yer == 1)
{
////////
if(yerElKart[yer] == 11)
{
cout<<"\n(Pisti X Pisti Yapti)\n";
skorBilgisayar+=20;
}
else if(cpuElKart[atilan] != 11)
{
cout<<"\n(Pisti Yapti)\n";
skorBilgisayar+=10;
}
else
{
cout<<"\n(ALDI)\n";
}
///////////
}
else
{
cout<<"\n(ALDI)\n";
}
yer++;
yerElTip[yer] = cpuElTip[atilan];
yerElKart[yer] = cpuElKart[atilan];
for(int g = 1;g<=54;g++)
{
if(g<=yer)
{
kagitCpu++;
puan = puanx(yerElTip[g],yerElKart[g]);
skorBilgisayar+=puan;
}
yerElKart[g] = 0;
yerElTip[g] = 0;
}
yer = 0;
}
else
{
yer++;
yerElTip[yer] = cpuElTip[atilan];
yerElKart[yer] = cpuElKart[atilan];
// cout<<"pc alamadi devam";
}
basla = 1;
}
/* cout<<"\n yerdeki kartlar = ";
kartlariGoster(2);
*/ cout<<endl;
sayacf++;
if(sayacf==9)
{
eldonus++;
if(eldonus == 7)
{
break;
}
else
{
goto oyun;
}
}
}
cout<<"\nKartlar bitti... Sayim yapiliyor....";
if(kagitKisi > kagitCpu)
{
skorKisi+=3;
}
else if(kagitKisi < kagitCpu)
{
skorBilgisayar+=3;
}
else
{
// kagit sayisi esit bir sey yapmiyoruz.
}
cout<<"\nBilgisayar : "<<skorBilgisayar<<", "<<ad<<" : "<<skorKisi;
skorBilgisayarToplam += skorBilgisayar;
skorKisiToplam += skorKisi;
cout<<endl;
int giris;
cout<<"Devam etmek istiyor musunuz? (Devam : 1 / Bitir : 2)";
cin>>giris;
if(giris == 1)
{
goto oyunbaslangic;
}
else
{
/////
cout<<"\nToplam; Bilgisayar : "<<skorBilgisayarToplam<<", "<<ad<<" : "<<skorKisiToplam;
cout<<endl;
if( skorBilgisayarToplam > skorKisiToplam)
{
cout<<"Bilgisayar Kazandi!";
}
else if( skorBilgisayarToplam < skorKisiToplam )
{
cout<<ad<<" Tebrikler Kazandiniz!";
}
else
{
cout<<"Berabere kaldiniz";
}
}
cout<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
int puanx(int tip,int kart)
{
int puanTemp = 0;
if(kart == 1 || kart == 11)// as ve vale ise 1 puan
{
puanTemp = 1;
}
else if(tip == 1 && kart == 10)
{
puanTemp = 3; // tip =1 yani karo ve 10 luysa 3 puan
}
else if(tip == 3 && kart ==2)// sinek 2 ise 2 puan
{
puanTemp = 2;
}
return puanTemp;
}
void kartx(int id)
{
switch(id)
{
case 1: cout<<"As"; break;
case 11: cout<<"Vale"; break;
case 12: cout<<"Kiz"; break;
case 13: cout<<"Papaz"; break;
default: cout<<id; break;
}
}
void tipx(int id)
{
if(id == 1)
{
cout<<"Karo";
}
else if(id == 2)
{
cout<<"Maca";
}
else if(id ==3)
{
cout<<"Sinek";
}
else if(id == 4)
{
cout<<"Kupa";
}
}
void kartlariGoster(int kim)
{
for(int k = 1; k<=4;k++)
{
if(kim == 0)
{
cout<<" ("<<k<<") ";
tipx(cpuElTip[k]);
cout<<" - ";
kartx(cpuElKart[k]);
}
else if(kim == 1)
{
cout<<" ("<<k<<") ";
tipx(kisiElTip[k]);
cout<<" - ";
kartx(kisiElKart[k]);
}
else if(kim ==2)
{
cout<<" ("<<k<<") ";
tipx(yerElTip[k]);
cout<<" - ";
kartx(yerElKart[k]);
}
if(k<4) cout<<", ";
}
}
int karistir(int limit)
{
int sayi = (rand() % limit ) + 1;
return sayi;
}
int kartVer(int kim)
{
int el = 0,sayisi = 1,kart=0,tip=0,cikmismi=0;
for(int h=1;h<=4;h++)
{
if(kim == 0 )
{
atilanlarCpu[h] = 0;
}
else if(kim == 1)
{
atilanlarKisi[h] = 0;
}
}
while(1)
{
kart = karistir(13);
tip = karistir(4);
if(tip == 1 )
{
if(karo[kart] == 1)
{
cikmismi = 0;
if(kim == 0)
{
cpuElKart[sayisi] = kart;
cpuElTip[sayisi] = tip;
}
else if (kim == 1)
{
kisiElKart[sayisi] = kart;
kisiElTip[sayisi] = tip;
}
else if(kim == 2)
{
yerElKart[sayisi] = kart;
yerElTip[sayisi] = tip;
}
karo[kart] = 0;
sayisi++;
}
}
else if (tip == 2)
{
if(maca[kart] == 1)
{
cikmismi = 0;
if(kim == 0)
{
cpuElKart[sayisi] = kart;
cpuElTip[sayisi] = tip;
}
else if (kim == 1)
{
kisiElKart[sayisi] = kart;
kisiElTip[sayisi] = tip;
}
else if(kim == 2)
{
yerElKart[sayisi] = kart;
yerElTip[sayisi] = tip;
}
maca[kart] = 0;
sayisi++;
}
}
else if(tip == 3)
{
if(sinek[kart] == 1)
{
cikmismi = 0;
if(kim == 0)
{
cpuElKart[sayisi] = kart;
cpuElTip[sayisi] = tip;
}
else if (kim == 1)
{
kisiElKart[sayisi] = kart;
kisiElTip[sayisi] = tip;
}
else if(kim == 2)
{
yerElKart[sayisi] = kart;
yerElTip[sayisi] = tip;
}
sinek[kart] = 0;
sayisi++;
}
}
else if(tip == 4)
{
if(kupa[kart] == 1)
{
cikmismi = 0;
if(kim == 0)
{
cpuElKart[sayisi] = kart;
cpuElTip[sayisi] = tip;
}
else if (kim == 1)
{
kisiElKart[sayisi] = kart;
kisiElTip[sayisi] = tip;
}
else if(kim == 2)
{
yerElKart[sayisi] = kart;
yerElTip[sayisi] = tip;
}
kupa[kart] = 0;
sayisi++;
}
}
if(sayisi == 5)
{
break;
}
}
}