Добрый день
Проблема с короткими нардами. После выброса костей, старые положения фишек отображаются вместе с новыми.
Доска разбита на верхнюю и нижнюю часть.
В строках 66-92 происходит заполнение массива знаков tab[][] данными из структуры о состоянии игры stan_gry[].ile .
Посоветуйте пожалуйста как нужно изменять tab[][] в функции. Передавать через указатель?
Заранее благодарен.
C++ |
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
| #include <iostream>
#include <cstdlib>
#include <time.h>
using namespace std;
struct pionki_pl{
int ile;
bool gracz; /// true_O gr_1, false_X gr_2
};
pionki_pl stan_gry[24];
char tab[12][12];
int szerokosc = 11;
int wysokosc = 10;
int a = 1;
int b = 6;
///**********************************************************************************************
///**********************************************************************************************
void inicjalizacja_planszy(){
stan_gry[0].ile=2;
stan_gry[0].gracz=false;
stan_gry[1].ile=0;
stan_gry[2].ile=0;
stan_gry[3].ile=0;
stan_gry[4].ile=0;
stan_gry[5].ile=5;
stan_gry[5].gracz=true;
stan_gry[6].ile=0;
stan_gry[7].ile=3;
stan_gry[7].gracz=true;
stan_gry[8].ile=0;
stan_gry[9].ile=0;
stan_gry[10].ile=0;
stan_gry[11].ile=5;
stan_gry[11].gracz=false;
stan_gry[12].ile=5;
stan_gry[12].gracz=true;
stan_gry[13].ile=0;
stan_gry[14].ile=0;
stan_gry[15].ile=0;
stan_gry[16].ile=3;
stan_gry[16].gracz=false;
stan_gry[17].ile=0;
stan_gry[18].ile=5;
stan_gry[18].gracz=false;
stan_gry[19].ile=0;
stan_gry[20].ile=0;
stan_gry[21].ile=0;
stan_gry[22].ile=0;
stan_gry[23].ile=2;
stan_gry[23].gracz=true;
///tablica znakow
for (int i=0;i<10;i++){
for (int j=0;j<12;j++){
tab[i][j] = ' ';
}
}
}
///**********************************************************************************************
///**********************************************************************************************
void plansza_gorna_znaki(){
// cout << endl << endl << endl;
/// gorna plansza
for (int i=12;i<24;i++){
for ( int pocz = stan_gry[i].ile; pocz > 0; pocz--){
if (stan_gry[i].gracz == true)
tab[pocz-1][i-szerokosc-1] = 'o';
else
if (stan_gry[i].gracz == false)
tab[pocz-1][i-szerokosc-1] = 'x';
}
}
}
///**********************************************************************************************
///**********************************************************************************************
void plansza_dolna_znaki(){
/// dolna plansza
for (int i=0;i<12;i++){
for (int pocz = stan_gry[i].ile; pocz>0; pocz--)
if (stan_gry[i].gracz == true)
tab[wysokosc - pocz][szerokosc - i] = 'o' ;
else
if (stan_gry[i].gracz == false)
tab[wysokosc - pocz][szerokosc - i] = 'x';
}
}
///**********************************************************************************************
///**********************************************************************************************
void pisz_plansze(){
cout << "13 14 15 16 17 18 19 20 21 22 23 24 " << endl;
for (int i=0 ; i<10 ; i++){
if (i==5) cout << endl << endl;
for (int j=0;j<12;j++){
cout << tab[i][j]<<" ";
}
cout << endl;
}
cout << "12 11 10 9 8 7 6 5 4 3 2 1 " << endl;
}
///**********************************************************************************************
///**********************************************************************************************
void player_1 (){
cout << "gracz_1_O_true " << endl;
int kosc_1 = a+rand()%(b-a+1);
int kosc_2 = a+rand()%(b-a+1);
int suma_kosci = kosc_1+kosc_2;;
int otkuda =0;
int kuda = 0;
int chod = 0;
cout << "kosc_1 " << kosc_1 << endl;
cout << "kosc_2 " << kosc_2 << endl;
cout << "suma " << suma_kosci << endl;
// 6+6 ???
od_poczatku:
do{
cout << "otkuda " << endl;
cin >> otkuda;
cout << "kuda " << endl;
cin >> kuda;
chod = otkuda - kuda;
if ((chod != kosc_1 && chod != kosc_2 && chod != suma_kosci ) ||
(stan_gry[kuda-1].ile == 5) ||
((stan_gry[kuda-1].ile > 1) && (stan_gry[kuda-1].gracz == false)) ||
(stan_gry[otkuda-1].ile == 0))
{
cout << "NOPE";
goto od_poczatku;
} else
stan_gry[kuda-1].ile += 1;
stan_gry[kuda-1].gracz = true;
stan_gry[otkuda-1].ile = stan_gry[otkuda-1].ile - 1;
//cout << endl;
//cout << "SOSTOJANIE " << stan_gry[otkuda-1].ile << endl;
suma_kosci -= chod;
}while(suma_kosci != 0);
}
///**********************************************************************************************
///**********************************************************************************************
void player_2 (){
cout << "gracz_2_X_false "<< endl;
int kosc_1 = a+rand()%(b-a+1);
int kosc_2 = a+rand()%(b-a+1);
int suma_kosci = kosc_1+kosc_2;
int otkuda = 0;
int kuda = 0;
int chod = 0;
cout << "kosc_1 " << kosc_1 << endl;
cout << "kosc_2 " << kosc_2 << endl;
cout << "suma " << suma_kosci << endl;
// 6+6 ???
od_poczatku_2:
do{
cout << "otkuda " << endl;
cin >> otkuda;
cout << "kuda " << endl;
cin >> kuda;
chod = kuda - otkuda;
if ((chod != kosc_1 && chod != kosc_2 && chod != suma_kosci ) ||
(stan_gry[kuda-1].ile == 5) ||
((stan_gry[kuda-1].ile > 1) && (stan_gry[kuda-1].gracz == true)) ||
(stan_gry[otkuda-1].ile == 0))
{
cout << "NOPE";
goto od_poczatku_2;
} else
stan_gry[kuda-1].ile += 1;
stan_gry[kuda-1].gracz = false;
stan_gry[otkuda-1].ile -= 1;
suma_kosci -= chod;
}while(suma_kosci != 0);
}
///**********************************************************************************************
int main()
{
bool gra = true;
srand(time(NULL));
inicjalizacja_planszy();
plansza_gorna_znaki();
plansza_dolna_znaki();
pisz_plansze();
while (gra != false){
player_1();
player_2();
gra=false;
}
plansza_gorna_znaki();
plansza_dolna_znaki();
pisz_plansze();
system ("PAUSE");
return 0;
} |
|
Добавлено через 6 часов 31 минуту
Исправил
проблема была в массиве знаков доски. Тема закрыта.