Bonjour
Si je comprend bien, tu essaies d'utiliser la variable SS comme une variable globale ? Ca me semble pas top comme approche.
remarques :
- pourquoi créer une classe "case" ? a priori, elle n'a aucune fonction (à part se dessiner ?)
- SS a priori devrait être membre de Plateau
- d'un point de vue "objets", tu as un plateau qui contient plusieurs pieces de différents types. Ca te donne les class et les relations entre les classes
- perso, j'aime pas des vector de vector, je préfère un vector de taille n*m avec un accesseur
Voila comment je ferais :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| enum Couleur {BLANC, NOIR}
class Piece
{
Piece(int x, int y, Type t, Couleur C);
virtual dessine_piece();
};
class Tour : public Piece
{
};
class Fou : public Piece
{
};
// à faire pour chaque type de piece |
Plateau.h
1 2 3 4 5 6 7 8
| #include "Piece.h"
class Plateau
{
Plateau();
dessine_plateau();
vector<Piece*> pieces;
}; |
Plateau.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include "Plateau.h"
Plateau::Plateau()
{
// initialisation des pièces au début de partie
pieces.push_back(new Tour(1, 1, BLANC));
pieces.push_back(new Fou(1, 2, BLANC));
// à faire pour chaque piece
// on dessine le plateau et les pieces
dessine_plateau();
}
Plateau::dessine_plateau()
{
// on dessine chaque case
for(int x=0; x<8; ++x)
for(int y=0; y<8; ++y)
if(est_pair(x+y)) dessine_case_blanche();
else dessine_case_noir();
for(vector<Piece*>::iterator it=pieces.begin(); it!=pieces.end(); ++it)
(*it)->dessine_piece();
} |
Reste plus qu'a gérer les déplacements et les suppressions de pièces.
Pour dessine, tu peux transmettre un pointeur vers ton "outil" de dessin (en fonction de l'environnement sur lequel tu travailles) dans les fonctions "dessine_" ou lors de la création des objets.
Partager