Jeu de blackjack

Soyez le premier à donner votre avis sur cette source.

Vue 6 776 fois - Téléchargée 458 fois

Description

voici un petit jeu de BlackJack inspiré de http://www.cppfrance.com/codes/JEU-BLACKJACK_10714.aspx
il peut rester des modifications a faire comme le random des cartes qui n'est qu'efficace qu'à 99.99%

Source / Exemple :


#include <cstdlib>    //pour rand()
#include <ctime>      //pour la fonction "srand((unsigned) time(NULL))"
#include <iostream>  //pour les cin et les cout
#include <cmath>	//utile pour NAN
#include <string>
#include <sstream>
#include <fstream>
#include <iomanip>

#define &#9829; << char(3)<<
#define &#9830; << char(4)<<
#define &#9827; << char(5)<<
#define &#9824; << char(6)<<

using namespace std;

struct Player
{
	double jeton;
	string name;
};

void debut(float valeur);
void replay(float valeur);
void header();
void Initialize();
string pickCard();
int valeurCarte(string carte);
void draw_line();
void leadBoard();
void addClassement(double valeur);

string carte [52];

void main()
{
	Initialize();
	//Déclaration des variables				
	float valeur;
	valeur = 10000;
	debut(valeur);
	header();
	cout << "A la prochaine!" << endl;
	system("pause");
}

void header()
{
	system("cls");
	cout<<"-------------------------------------------------------"<<endl;
	cout<<"               "&#9824;" "&#9827;" "&#9830;" "&#9829;" BLACKJACK "&#9829;" "&#9830;" "&#9827;" "&#9824;"                "<<endl;
	cout<<"-------------------------------------------------------"<<endl;
}

void debut(float valeur)
{
	float mise;
	string carte1, carte2;
	int total=0, choix, banquetot, plus = 3;

	do
	{
		header();
		cout<<"Vous avez : "<<valeur<<" $."<<endl;
		cout<<"Votre mise : "<<endl;
		cin>>mise;

		if (mise<0 || mise>valeur)
		{
			cout<<"Vous ne pouvez pas miser cette somme."<<endl;
			system("pause");
		}
		cin.clear();
		cin.ignore(10000, '\n');

	}	while (mise>valeur || mise<0);

	carte1= pickCard();
	carte2= pickCard();

	cout<<"Carte #1:"<<carte1<<endl;
	cout<<"Carte #2:"<<carte2<<endl;

	total += valeurCarte(carte1);
	total += valeurCarte(carte2);

	cout<<"Total:"<<total<<endl;
	do	
	{
		cout<<"Une autre carte. 1-oui 2-non"<<endl;
		cin>>choix;
		if (choix==1)
		{
			string cartePlus = pickCard();
			cout<<"Carte #"<<plus<<": "<<cartePlus<<endl;
			total += valeurCarte(cartePlus);
			cout<<"total:"<<total<<endl;
			plus++;
		}

	}while (choix==1&&total<21);         //faire la boucle tant que le joueur veut une autre carte 
										//ou que le total<21
	if (total>21)
	{	cout<<"Desole vous avez perdu. Votre totale est superieur à 21."<<endl;
		valeur = valeur - mise;
	}
	else
	{
		if (total==21)
		{	cout<<"BLACKJACK. Vous empochez 2 fois votre mise."<<endl;
			valeur = valeur + 2*mise;
		}
		else
		{
			banquetot=0;
			int numcarte = 1;
			do
			{
				string carteBank = pickCard();
				cout<<"Carte #"<<numcarte<<": "<<carteBank<<endl;
				banquetot += valeurCarte(carteBank);
				numcarte++;
			}while (banquetot<total);	

			cout<<"Score de la banque:"<<banquetot<<endl;

			if (banquetot>21)
			{	cout<<"Bravo vouz avez gagne. La banque a depasse 21."<<endl;
				valeur = valeur + mise;
			}
			else
			{
				if (banquetot==total)
				{
					cout<<"Egalité. La banque gagne"<<endl;
					valeur = valeur - mise;
				}
				else
				{
					cout<<"Desole vous avez perdu. La banque empoche votre mise"<<endl;
					valeur = valeur - mise;
				}
			}
		}
	}
	system("pause");
	replay(valeur);
}

string pickCard()
{
	srand((unsigned) time(NULL));
	int pos = -1;
	string cartePicked;
	do
	{
		pos = (rand() % 52);
		cartePicked = carte[pos];
	}while(cartePicked=="");
	carte[pos] = "";
	return cartePicked;
}

int valeurCarte(string carte)
{
	carte = carte.substr(0,carte.length()-1);
	if(carte == "J" || carte == "Q" || carte == "K")
		return 10;
	if(carte == "A")
		return 11;
	return atoi(carte.c_str());
}

void Initialize()
{
	stringstream ss;
	string *ptr = carte;
	string number [13] = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
	
	for(int i=0;i<4;i++)
	{
		for(int j=0;j<13;j++)
		{
			ss << number[j] << char(i+3);

  • ptr++ = ss.str();
ss.str(""); } } } void replay( float valeur) { Initialize(); int autrepartie; if (valeur==0) { header(); cout<<"Vous n'avez plus de credit, la banque vous a ruinee."<<endl; cout<<"Voulez vous recommencer une autre partie 1-oui 2-non"<<endl; cin>>autrepartie; if (autrepartie==1) { debut(10000); } } else { header(); cout<<"Vous avez : "<<valeur<<" $."<<endl; cout<<"Voulez vous recommencer une autre partie 1-oui 2-non"<<endl; cin>>autrepartie; if (autrepartie==1) { debut(valeur); } else { addClassement(valeur); leadBoard(); } } } void addClassement(double valeur) { ifstream myfile("classement.txt"); Player * rankPlayer = new Player[11]; int i=0; while(i<10) { myfile >> rankPlayer[i].name >> rankPlayer[i].jeton; i++; } if(rankPlayer[9].jeton<valeur) { header(); cout << "Bravo vous etes dans le top 10 des joueurs, quel est votre nom ?" << endl; cin >> rankPlayer[10].name; rankPlayer[10].jeton = valeur; for(int j = 0; j<11; j++) { for(int k = 0; k<j;k++) { if(rankPlayer[j].jeton > rankPlayer[k].jeton) { Player temp; temp.name = rankPlayer[j].name; temp.jeton = rankPlayer[j].jeton; rankPlayer[j].name = rankPlayer[k].name; rankPlayer[j].jeton = rankPlayer[k].jeton; rankPlayer[k].name = temp.name; rankPlayer[k].jeton = temp.jeton; } } } } myfile.close(); ofstream myfile2("classement.txt"); for(int j = 0;j<10;j++) myfile2 << rankPlayer[j].name << "\t" << rankPlayer[j].jeton << "\n"; myfile2.close(); } void leadBoard() { ifstream myfile3("classement.txt"); Player * rankPlayer = new Player[10]; int i=0; header(); cout << setw(10) << "Nom du Joueur" << " "<< setw(20) << "Nombre de Jeton" << endl; while(i<10) { myfile3 >> rankPlayer[i].name >> rankPlayer[i].jeton; cout << i+1 << "." << setw(10) << rankPlayer[i].name << setw(18) << rankPlayer[i].jeton << endl; i++; } myfile3.close(); cout<<"\n"; draw_line(); cout<<"\n"; system("pause"); } void draw_line() { cout<<"-------------------------------------------------------"<<endl; }

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.