Bonjour à tous.
Je m'excuse de vous importuner avec mon soucis mais je n'ai malheureusement pas réussi à le résoudre par moi même et je n'arrive pas à trouver de documentation sur ce que je souhaiterais faire.
Je suspecte donc que ce que j'ai en tête est infaisable mais bon, j'aimerais malgré tout en avoir confirmation
Donc voila, en gros, je souhaiterais réaliser un jeu d'échec (en utilisant la librairie SDL, ce qui explique la présence des types SDL_Rect).
Pour se faire, je suis donc parti du principe qu'il me fallait une classe "piece" qui contiendrait les informations que toutes les pièces ont en commun ( notamment leur position et leur couleur).
Cette classe "piece" servira par la suite de base pour les classes dérivé "fou, roi, pion.. ".
Ces classes dérivés quant à elles, détiennent une méthode "deplacement" qui leur est spécifique et qui permet de savoir ou le roi ou le pion peut se déplacer en fonction de sa position.
Mon idée était ensuite de créer une classe joueur qui contiendrait une collection (vector) d'objet de la classe pièce, qui contiendrait donc l'ensemble des pièces dont dispose le joueur (le roi, les 2 fous etc).
Cependant, lorsque je tente de compiler le code présent ci dessous, j'obtiens le message d'erreur suivant :"error:'piece' is an inaccessible base of 'roi'".
Donc j'en viens à ma question, est il tout simplement possible de créer une collection d'objets de type "base" qui contiendrait des objets de classes dérivées.
Sinon, est il possible de créer une collection qui pourrait contenir des objets différents?
Merci d'avance et désolé pour le pavé .
PS: le code n'est pas parfait, je l'ai juste mis pour clarifier ma question .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 class piece { private : int positionX; int positionY; char couleur_piece; }; class roi : private piece { private: SDL_Rect position_piece; SDL_Surface maSurface; public: void deplacement() { //insérer les endroits ou le personnage peut se déplacer en fonction de sa position sur l'échiquier } roi(char couleur) { if(couleur='n') { position_piece.x=5; position_piece.y=0; } else { position_piece.x=5; position_piece.y=7; } } }; class fou { private: SDL_Surface maSurface; public: void deplacement() { //insérer les endroits ou le personnage peut se déplacer en fonction de sa position sur l'échiquier } }; class joueur { private: char couleur; std::vector<piece> ma_Collection_De_Piece; public: void init(char color) { couleur=color; roi a(color) ; ma_Collection_De_Piece[0]=a; } }; };
Partager