Poker Game
Poker Game
Poker Game
cpp` :
**Card.h**
```cpp
#ifndef CARD_H
#define CARD_H
#include <string>
class Card {
private:
std::string suit;
int rank;
public:
Card(std::string suit, int rank);
std::string getSuit() const;
int getRank() const;
void print() const;
};
#endif // CARD_H
```
**Card.cpp**
```cpp
#include "Card.h"
#include <iostream>
**Player.h**
```cpp
#ifndef PLAYER_H
#define PLAYER_H
#include <string>
#include <vector>
#include "Card.h"
class Player {
private:
std::string name;
std::vector<Card> hand;
public:
Player(std::string name);
void addCard(const Card& card);
void printHand() const;
std::vector<Card>& getHand();
};
#endif // PLAYER_H
```
**Player.cpp**
```cpp
#include "Player.h"
#include <iostream>
std::vector<Card>& Player::getHand() {
return hand;
}
```
**Game.h**
```cpp
#ifndef GAME_H
#define GAME_H
#include <vector>
#include "Card.h"
#include "Player.h"
class Game {
private:
std::vector<Card> deck;
std::vector<Player> players;
int numPlayers;
public:
Game(int numPlayers);
void play();
};
#endif // GAME_H
```
**Game.cpp**
```cpp
#include "Game.h"
#include <algorithm>
#include <random>
#include <chrono>
void Game::play() {
while (true) {
for (auto& player : players) {
player.printHand();
std::cout << "Voulez-vous jouer une carte ? (o/n) ";
char choice;
std::cin >> choice;
if (choice == 'o') {
// Jouer une carte
std::cout << "Quelle carte voulez-vous jouer ? ";
int index;
std::cin >> index;
if (index >= 0 && index < player.getHand().size()) {
Card card = player.getHand()[index];
player.getHand().erase(player.getHand().begin() + index);
std::cout << "Vous avez joué la carte : ";
card.print();
} else {
std::cout << "Index invalide." << std::endl;
}
}
}
}
}
```
**main.cpp**
```cpp
#include "Game.h"
int main() {
Game game(4);
game.play();
return 0;
}
```
Dans ce projet, chaque classe (`Card`, `Player` et `Game`) a été séparée dans des fichiers `.h` et `.cpp`
distincts. Le fichier `main.cpp` contient la fonction `main()` qui crée une instance de la classe `Game` et
lance la partie.
Cette structure de projet facilite la maintenance et la réutilisation du code, car chaque classe est encapsulée
dans ses propres fichiers et peut être modifiée ou remplacée indépendamment des autres.