Вот код иры написанно на С #include<iostream> #include<ctime> using namespace std; static const char *nom[13]={"2","3","4","5","6","7","8","9","10","Valet","Dama","Korol","Tuz"}; static const char *suit[4]={"Trefi","Bubni","Chervi","Piki"}; bool Tkoloda(int koloda[][13],int N,int M);//тасование карт, создание колоды //сдача карт int Sdat(int koloda[][13],int N,int M,int fl); //номерация карт, рубашки, масти, количество строк, столбцов,отображать ли карты bool isAll(int n,int m);//колода полная? int Ohki(int nomer);//определение веса карты int Perebor(int &user,int &comp,int &f1,int &f2);//проверка на перебор int Gold(int &user,int &comp,int &f1,int &f2);//проверка на золото void UserGame(int Scomp,int &sUser , int f2,int koloda[][13],int fl);//ваша игра void LogicComp(int &Scomp,int sUser , int f2,int koloda[][13],int fl);//логика для компьютера void EndGame(int sUser, int Scomp);//вывод очков void main() { setlocale(LC_CTYPE,"rus"); int koloda[4][13]={0}; int sUser=0,Scomp=0;//количество очков if(!Tkoloda(koloda,4,13)) { cout << " Не хватает карт в колоде \n"; exit(0); } else cout << "играем \n"; //1 сдача карт по 2 шт каждому cout<<"Карты игрока:\n"; for(int i=1; i<=2;i++) { sUser+=Sdat(koloda,4,13,1); Scomp+=Sdat(koloda,4,13,0); } cout<<"Очки игрока="<<sUser<<endl; //учитываем перебор int f1=1,f2=1; int p=Perebor(sUser,Scomp,f1,f2); if(!p) { cout<<"играем дальше!\n"; } //ищем золотую комбинацию Gold(sUser,Scomp,f1,f2); //логика для user UserGame(Scomp,sUser, f2,koloda,f1); //логика для компьютера LogicComp(Scomp,sUser, f2,koloda,f1); EndGame(sUser, Scomp); } //колода полная? bool isAll(int n,int m) { if(n<4||m<13) { return false; } return true; } //определение веса карты int Ohki(int nomer) { int summ[13]={2,3,4,5,6,7,8,9,10,2,3,4,11}; return summ[nomer]; } //проверка на перебор int Perebor(int &user,int &comp,int &f1,int &f2) { if(user>21 && comp>21) { cout<<"Переигрываем!\n"; f1=0; f2=0; user=comp=0; return 0; } if(user>21) { cout<<"Перебор user!\n"; f1=0; f2=0; user=0; return 0; } if(comp>21) { cout<<"Перебор comp\n"; f1=0; f2=0; comp=0; return 0; } return 1; } int Gold(int &user,int &comp,int &f1,int &f2)//проверка на золото { if(user==22) { f1=0; f2=0; return 1; } if(comp==22) { f1=0; f2=0; return 1; } return 0; } //тасование карт, создание колоды bool Tkoloda(int koloda[][13],int N,int M){ srand((unsigned)time(0)); if(!isAll(N,M)) { return false; } int s1,n1; for(int i=0;i<N*M { //выбор случайным образом карты s1=rand()%(N+1); n1=rand()%(M+1); //проверка не выбиралась ли карта if(!koloda[s1][n1]) { koloda[s1][n1]=i+1; i++; } } return true; } int Sdat(int koloda[][13],int N,int M,int f1){ if(!isAll(N,M)) { return 0; } static int sl=1;//номер по порядку карты в колоде for(int i=0;i<N;i++) { for(int j=0;j<M;j++) { if(koloda[j]==sl) { //отображение карты if(f1) { cout<<nom[j]<<" "<<suit<<endl; } sl++; return Ohki(j); } } } } void UserGame(int Scomp,int &sUser , int f2,int koloda[][13],int f1)//ваша игра { //предоставление возможности взять ещё игроку while(f1) { cout<<"Ещё 1/0?="; cin>>f1; if(f1) { sUser+=Sdat(koloda,4,13,1); Perebor(sUser,Scomp,f1,f2); } } } void LogicComp(int &Scomp, int sUser,int f2,int koloda[][13],int f1)//логика для компьютера { while(f2) { if(Scomp>=19) f2=0; else if(Scomp<=14) f2=1; else if(Scomp>=15 && Scomp>=17) { srand((unsigned)time(0)); int x=rand()%2; if(x) f2=1; else f2=0; } else if(Scomp==1 { int x=rand()%5; if(x) f2=1; else f2=0; } if(f2) { Scomp+=Sdat(koloda,4,13,0); Perebor(sUser,Scomp,f1,f2); } } } void EndGame(int sUser, int Scomp) { cout<<"***********************************\a\n"; cout<<"Очки игрока="<<sUser<<endl; cout<<"Очки компьютера="<<Scomp<<endl; if(sUser>Scomp) cout<<"Вы выиграли!\n"; else if(sUser<Scomp) cout<<"Вы проиграли!\n"; else cout<<"Ничья\n"; cout<<"***********************************\a\n"; }