Bonjour,
Petite erreur classique, mais j'ai tellement le nez dans le guidon que je ne pige pas :
J'ai un jeu de 54 cartes...
namespace Jeu_54_cartes
{
using namespace Cartes;
static std::vector<Carte> Jeu;
static void Init()
{
Jeu = {
{Deux, Carreau}, {Trois, Carreau}, {Quatre, Carreau}, {Cinq, Carreau}, {Six, Carreau}, {Sept, Carreau},
{Huit, Carreau}, {Neuf, Carreau}, {Dix, Carreau}, {Valet, Carreau}, {Dame, Carreau}, {Roi, Carreau}, {As, Carreau},
{Deux, Coeur}, {Trois, Coeur}, {Quatre, Coeur}, {Cinq, Coeur}, {Six, Coeur}, {Sept, Coeur},
{Huit, Coeur}, {Neuf, Coeur}, {Dix, Coeur}, {Valet, Coeur}, {Dame, Coeur}, {Roi, Coeur}, {As, Coeur},
{Deux, Pique}, {Trois, Pique}, {Quatre, Pique}, {Cinq, Pique}, {Six, Pique}, {Sept, Pique},
{Huit, Pique}, {Neuf, Pique}, {Dix, Pique}, {Valet, Pique}, {Dame, Pique}, {Roi, Pique}, {As, Pique},
{Deux, Trefle}, {Trois, Trefle}, {Quatre, Trefle}, {Cinq, Trefle}, {Six, Trefle}, {Sept, Trefle},
{Huit, Trefle}, {Neuf, Trefle}, {Dix, Trefle}, {Valet, Trefle}, {Dame, Trefle}, {Roi, Trefle}, {As, Trefle},
{Joker, Sans}, {Joker, Sans}
};
};
}
Une grosse texture (cartes.png) que je gère dans le même namespace que la classe Carte :
#ifndef CARTE_HPP
#define CARTE_HPP
#include <iostream>
#include <SFML/Graphics.hpp>
namespace Cartes
{
enum Valeur {Deux=2, Trois, Quatre, Cinq, Six, Sept, Huit, Neuf, Dix, Valet, Dame, Roi, As, Joker};
enum Couleur {Carreau, Coeur, Pique, Trefle, Sans};
static sf::Texture Cartes;
const int taille_carte_x = 72;
const int taille_carte_y = 98;
class Carte
{
public:
Carte(Valeur v, Couleur c);
~Carte();
inline Valeur Getv() { return v; }
inline void Setv(Valeur val) { v = val; }
inline Couleur Getc() { return c; }
inline void Setc(Couleur val) { c = val; }
sf::Sprite& Gets() { return s; }
protected:
private:
Valeur v;
Couleur c;
sf::Sprite s;
};
static void InitTextureCartes()
{
if (!Cartes.loadFromFile("Cartes.png"))
std::cout << "erreur lors du chargement de la texture" << std::endl;
}
}
#endif // CARTE_HPP
le constructeur de Carte :
Carte::Carte(Valeur v, Couleur c) :
v(v),
c(c),
s(sf::Sprite())
{
//InitTextureCartes(); //si je décommente OK, sinon, carré blanc
s.setTexture(Cartes);
s.setTextureRect(sf::IntRect(v*taille_carte_x,c*taille_carte_y,taille_carte_x,taille_carte_y));
//ctor
}
et dans mon main je créé une carte et je la draw.
Ce qui me fait chier, c'est que ça n'a pas de sens de charger à chaque construction la grosse planches avec toutes les cartes, mais si je fais l'InitTexturesCartes() dans mon main c'est un coup d'épée dans l'eau...
Vous voyez ce que je ne vois pas ?