SHOW:
|
|
- or go back to the newest paste.
1 | #include <iostream> | |
2 | #include<stdio.h> | |
3 | using namespace std; | |
4 | ||
5 | int pionkiBiale = 12; | |
6 | int pionkiCzarne = 12; | |
7 | ||
8 | void rysuj(int plansza[8][8], bool ruchBialy) | |
9 | { | |
10 | cout << "Pozostale biale pionki:" << pionkiBiale << endl <<"Pozostale czarne pionki:" << pionkiCzarne << endl; | |
11 | if (ruchBialy) | |
12 | { | |
13 | cout << "Ruch wykonuja biale" << endl; | |
14 | } | |
15 | else | |
16 | { | |
17 | cout << "Ruch wykonuja czarne" << endl; | |
18 | } | |
19 | ||
20 | cout << " ABCDEFGH" << endl; | |
21 | for (int i = 0; i < 8; i++) | |
22 | { | |
23 | printf("\033[37m"); | |
24 | cout << i+1; | |
25 | for (int j = 0; j < 8; j++) | |
26 | { | |
27 | if (plansza[i][j]==0) | |
28 | { | |
29 | //rysowanie białego pola | |
30 | printf("\033[37m"); | |
31 | cout << '\xFE'; | |
32 | } | |
33 | else if (plansza[i][j]==1) | |
34 | { | |
35 | //rysowanie czarnego pola | |
36 | printf("\033[30m"); | |
37 | cout << ' '; | |
38 | } | |
39 | else if (plansza[i][j] == 2) | |
40 | { | |
41 | //rysowanie czerwonego(czarnego) pionka | |
42 | printf("\033[31m"); | |
43 | cout << "X"; | |
44 | } | |
45 | else if (plansza[i][j] == 3) | |
46 | { | |
47 | //rysowanie bialego pionka | |
48 | printf("\033[37m"); | |
49 | cout << "X"; | |
50 | } | |
51 | } | |
52 | cout << endl; | |
53 | } | |
54 | } | |
55 | ||
56 | //funkcja wykonujaca ruch, zwraca false jezeli ruch sie nie odbyl i true jezeli ruch | |
57 | //zostal wykonany | |
58 | bool sprawdz_ruch(int plansza[8][8],bool czyBiale, int kolumnaSkad, int wierszSkad, int kolumnaDokad, int wierszDokad) | |
59 | { | |
60 | //sprawdzamy czy ruch mieści się w planszy | |
61 | if (kolumnaSkad > 8 || kolumnaSkad < 0 || kolumnaDokad >8 || kolumnaDokad < 0 || wierszSkad >8 || wierszSkad < 0 || wierszDokad >8 || wierszDokad < 0) | |
62 | { | |
63 | return false; | |
64 | } | |
65 | //sprawdzamy czy nie ruszamy się z/na białego pola | |
66 | else if (plansza[wierszSkad][kolumnaSkad] == 0 || plansza[wierszDokad][kolumnaDokad] != 1 || plansza[wierszSkad][kolumnaSkad] == 1) | |
67 | { | |
68 | return false; | |
69 | } | |
70 | //sprawdzamy czy nie podalismy dwa razy tego samego pola | |
71 | else if (kolumnaSkad == kolumnaDokad || wierszDokad == wierszSkad) | |
72 | { | |
73 | return false; | |
74 | } | |
75 | //ruch bialych | |
76 | if (czyBiale) | |
77 | { | |
78 | //sprawdzamy czy pionek ktory ma sie ruszyc nalezy do bialego gracza | |
79 | if (plansza[wierszSkad][kolumnaSkad] == 3) | |
80 | { | |
81 | //sprawdzamy czy przesuwamy sie o jeden wiersz | |
82 | if (wierszSkad - wierszDokad == 1 || wierszSkad - wierszDokad == -1) | |
83 | { | |
84 | //sprawdzamy czy przesuwamy sie o jedna kolumne | |
85 | if (kolumnaSkad - kolumnaDokad == 1 || kolumnaSkad - kolumnaDokad == -1) | |
86 | { | |
87 | //zamieniamy zawartosc pol skad i dokada (pionek idzie na puste pole, a pole na | |
88 | //ktorym byl pionek staje sie puste) | |
89 | int tmp; | |
90 | tmp = plansza[wierszSkad][kolumnaSkad]; | |
91 | plansza[wierszSkad][kolumnaSkad] = plansza[wierszDokad][kolumnaDokad]; | |
92 | plansza[wierszDokad][kolumnaDokad] = tmp; | |
93 | return true; | |
94 | } | |
95 | // przesuwamy sie na niedozwolona kolumne | |
96 | else | |
97 | { | |
98 | return false; | |
99 | } | |
100 | } | |
101 | //sprawdzamy czy przesuwamy sie o 2 wiersze (w trakcie bicia) | |
102 | else if (wierszSkad - wierszDokad == 2 || wierszSkad - wierszDokad == -2) | |
103 | { | |
104 | //sprawdzamy czy przesuwamy sie o dwie kolumny | |
105 | if (kolumnaSkad - kolumnaDokad == 2 || kolumnaSkad - kolumnaDokad == -2) | |
106 | { | |
107 | //sprawdzamy czy przeskakujemy nad pionkiem przeciwnika | |
108 | if (plansza[(wierszSkad+wierszDokad)/2][(kolumnaSkad + kolumnaDokad) / 2] == 2) | |
109 | { | |
110 | int tmp; | |
111 | tmp = plansza[wierszSkad][kolumnaSkad]; | |
112 | plansza[wierszSkad][kolumnaSkad] = plansza[wierszDokad][kolumnaDokad]; | |
113 | plansza[wierszDokad][kolumnaDokad] = tmp; | |
114 | plansza[(wierszSkad + wierszDokad) / 2][(kolumnaSkad + kolumnaDokad) / 2] = 1; | |
115 | pionkiCzarne -= 1; | |
116 | return true; | |
117 | } | |
118 | //dany ruch nie jest biciem, wiec jest niedozwolony | |
119 | else | |
120 | { | |
121 | return false; | |
122 | } | |
123 | } | |
124 | // przesuwamy sie na niedozwolona kolumne | |
125 | else | |
126 | { | |
127 | return false; | |
128 | } | |
129 | ||
130 | } | |
131 | //przesuwamy sie na niedozwolony wiersz | |
132 | else | |
133 | { | |
134 | return false; | |
135 | } | |
136 | } | |
137 | //wybrany pionek nie nalezy do gracza | |
138 | else | |
139 | { | |
140 | return false; | |
141 | } | |
142 | } | |
143 | //ruch czarnych | |
144 | else | |
145 | { | |
146 | if (plansza[wierszSkad][kolumnaSkad] == 2) | |
147 | { | |
148 | if (wierszSkad - wierszDokad == -1 || wierszSkad - wierszDokad == 1) | |
149 | { | |
150 | if (kolumnaSkad - kolumnaDokad == 1 || kolumnaSkad - kolumnaDokad == -1) | |
151 | { | |
152 | cout << "Ruch mozliwy" << endl; | |
153 | int tmp; | |
154 | tmp = plansza[wierszSkad][kolumnaSkad]; | |
155 | plansza[wierszSkad][kolumnaSkad] = plansza[wierszDokad][kolumnaDokad]; | |
156 | plansza[wierszDokad][kolumnaDokad] = tmp; | |
157 | return true; | |
158 | } | |
159 | //Pola nie sa w przyleglych rzedach | |
160 | else | |
161 | { | |
162 | return false; | |
163 | } | |
164 | } | |
165 | ||
166 | else if (wierszSkad - wierszDokad == 2 || wierszSkad - wierszDokad == -2) | |
167 | { | |
168 | //sprawdzamy czy przesuwamy sie o dwie kolumny | |
169 | if (kolumnaSkad - kolumnaDokad == 2 || kolumnaSkad - kolumnaDokad == -2) | |
170 | { | |
171 | //sprawdzamy czy przeskakujemy nad pionkiem przeciwnika | |
172 | if (plansza[(wierszSkad + wierszDokad) / 2][(kolumnaSkad + kolumnaDokad) / 2] == 3) | |
173 | { | |
174 | int tmp; | |
175 | tmp = plansza[wierszSkad][kolumnaSkad]; | |
176 | plansza[wierszSkad][kolumnaSkad] = plansza[wierszDokad][kolumnaDokad]; | |
177 | plansza[wierszDokad][kolumnaDokad] = tmp; | |
178 | plansza[(wierszSkad + wierszDokad) / 2][(kolumnaSkad + kolumnaDokad) / 2] = 1; | |
179 | pionkiBiale -= 1; | |
180 | return true; | |
181 | } | |
182 | //dany ruch nie jest biciem, wiec jest niedozwolony | |
183 | else | |
184 | { | |
185 | return false; | |
186 | } | |
187 | } | |
188 | // przesuwamy sie na niedozwolona kolumne | |
189 | else | |
190 | { | |
191 | return false; | |
192 | } | |
193 | ||
194 | } | |
195 | ||
196 | // Pola nie są w kolejnych wierszach | |
197 | else | |
198 | { | |
199 | return false; | |
200 | } | |
201 | } | |
202 | //to nie jest pionek gracza | |
203 | else | |
204 | { | |
205 | return false; | |
206 | } | |
207 | } | |
208 | } | |
209 | ||
210 | int main() | |
211 | { | |
212 | bool ruchBialy = true; | |
213 | ||
214 | int plansza[8][8]; | |
215 | int kolumnaSkad; | |
216 | int wierszSkad; | |
217 | int kolumnaDokad; | |
218 | int wierszDokad; | |
219 | for (int i = 0; i < 8; i++) | |
220 | { | |
221 | for (int j = 0; j < 8; j++) | |
222 | { | |
223 | if ((i + j) % 2 == 0) | |
224 | { | |
225 | //pola biale | |
226 | plansza[i][j] = 0; | |
227 | } | |
228 | else | |
229 | { | |
230 | if (i < 3) | |
231 | { | |
232 | //pionki czarne | |
233 | plansza[i][j] = 2; | |
234 | } | |
235 | else if (i >= 5) | |
236 | { | |
237 | //pionki biale | |
238 | plansza[i][j] = 3; | |
239 | } | |
240 | else | |
241 | { | |
242 | //pola czarne | |
243 | plansza[i][j] = 1; | |
244 | } | |
245 | } | |
246 | } | |
247 | } | |
248 | ||
249 | ||
250 | while (pionkiBiale > 0 and pionkiCzarne > 0) | |
251 | { | |
252 | printf("\033[H\033[J"); | |
253 | rysuj(plansza, ruchBialy); | |
254 | cout << "Podaj litere z ktorej kolumny pionek chcesz poruszyc" << endl; | |
255 | char tmp; | |
256 | cin >> tmp; | |
257 | kolumnaSkad = int(tmp) - 65; | |
258 | cout << "Podaj cyfre z ktorego wiersza pionek chcesz poruszyc" << endl; | |
259 | cin >> wierszSkad; | |
260 | wierszSkad = wierszSkad - 1; | |
261 | ||
262 | cout << "Podaj litere do ktorej kolumny pionek chcesz poruszyc" << endl; | |
263 | cin >> tmp; | |
264 | kolumnaDokad = int(tmp) - 65; | |
265 | cout << "Podaj cyfre do ktorego wiersza pionek chcesz poruszyc" << endl; | |
266 | cin >> wierszDokad; | |
267 | wierszDokad = wierszDokad - 1; | |
268 | ||
269 | // wykonujemy ruch, jezeli udalo sie go wykonac rusza sie przeciwnik, natomiast | |
270 | //jezeli ruch byl niemozliwy do wykonania gracz ponawia ruch | |
271 | bool test = sprawdz_ruch(plansza, ruchBialy, kolumnaSkad, wierszSkad, kolumnaDokad, wierszDokad); | |
272 | if (test) | |
273 | { | |
274 | ruchBialy = !ruchBialy; | |
275 | } | |
276 | } | |
277 | if (pionkiBiale > 0) | |
278 | { | |
279 | cout << "Wygraly biale" << endl; | |
280 | } | |
281 | else | |
282 | { | |
283 | cout << "Wygraly czarne" << endl; | |
284 | } | |
285 | ||
286 | } | |
287 | ||
288 |