View difference between Paste ID: xi6CwAPy and Crb18K4i
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