Bonjour je suis entrain de réaliser un jeu de plateau,
le plateau qui est rectangulaire est stocké dans un fichier qui contient deux entiers designant les nombre de lignes et de colonnes. puis sous forme de matrice, il y a des entiers qui une fois transformés en binaire indique la nature des pions qui s'y trouvent.
voilà un exemple de fichierJ'ai un problème pour lire le plateau à partir du fichier pour ensuite l'afficher. Je crois que le problème vient plutot de l'opérateur de lecture.6 6
21 21 21 21 21 21
21 2 2 2 2 21
5 2 0 0 2 5
5 2 0 0 2 5
29 2 2 2 2 29
29 29 29 29 29 29
la structure de données est dans une classe Plateau comme cecivoilà le codage des opérateurs "ostream" et "istream"
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113 #include <fstream> #include <vector> #include <iostream> #include "Coup.h" using namespace std; class Plateau { private: //plateau représenté par un vecteur de vecteurs vector<vector<int> > v; typedef pair<int,int> Position; //liste des positions typedef vector<Position> Listepositions; //liste des coups typedef vector<Coup> Listedescoups; // dimensions int nblignes, nbcolonnes; public: // constructeurs Plateau() {} Plateau(int a,int b, vector<vector<int> > vect) { nblignes = a; nbcolonnes = b; v = vect; } //selecteurs et accesseurs void setnblignes(int val) { nblignes = val; } void setnbcolonnes(int val) { nbcolonnes = val; } int getnblignes() const { return nblignes; } int getnbcolonnes() const { return nbcolonnes; } void setmatrice(vector<vector<int> > matrice){ v = matrice; } vector<vector<int> > getmatrice() const { return v; } //opérateurs friend ostream& operator << (ostream& o, const Plateau& p); friend istream& operator >> (istream& i, Plateau& p);J'ai essayé plusieurs fois mais je n'arrive pas à l'afficher .
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 //afficher le plateau ostream& operator << (std::ostream& o, const Plateau& p) { vector<vector<int> > v = p.getmatrice(); vector<vector<int> >::const_iterator it1; vector<int>::const_iterator it2; int m = p.getnblignes(); int n = p.getnbcolonnes(); o << m << ' ' << n << endl; it1 = p.v.begin(); while (it1!=p.v.end()) { it2 = (*it1).begin(); while (it2!=(*it1).end()) { o << *it2; ++it2; } o << endl; ++it1; } } // lire le plateau a partir d'un fichier istream& operator >> (std::istream& i, Plateau& p) { int lignes, colonnes; vector<vector<int> > mat; int valcourante; i>>lignes; p.setnblignes(lignes); i>>colonnes; p.setnbcolonnes(colonnes); int n = lignes; int m = colonnes; mat.resize(n*m); for (int i=0; i<n; ++i) { //p.v[i].resize(colonnes); for (int j=0; j<m; ++j) { i>>valcourante; mat[i][j] = valcourante; } } p.setmatrice(mat); }
voiçi l'erreur qu'il me donneest ce que vous avez une idée pour me sortir de là*** glibc detected *** free(): invalid next size (fast): 0x08062350 ***
Abort![]()
merci
Partager