Andrey_ZoZ

Untitled

May 22nd, 2020
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 76.63 KB | None | 0 0
  1. #include <ctime>
  2. #include<iostream>
  3. #include"windows.h"
  4. #include <chrono>
  5. #include <thread>
  6. #include <conio.h>
  7. using namespace std;
  8. const int minX{ 1 };
  9. const int minY{ 1 };
  10. int maxX{ 30 };
  11. int maxY{ 24 };
  12. const char* CSI{ "\033[" };
  13. const char* hideCursor{ "?25l" };
  14. const char* clearScreen{ "2J" };
  15. const int kbDeltaY{ 1 };
  16. void gotoxy(int xpos, int ypos)
  17. {
  18. COORD scrn;
  19. HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
  20. scrn.X = xpos; scrn.Y = ypos;
  21. SetConsoleCursorPosition(hOuput, scrn);
  22. }
  23. void menu()
  24. {
  25. cout << CSI << clearScreen;
  26. gotoxy(50, 0);
  27. cout << "MENU" << "\n";
  28. cout << "1) Start game \n2) Start game for 2 players\n3) Change maxX\n4) Change maxY\n5) Exit\nChoose:";
  29. }
  30. void printPole(int minX,int minY,int minX2=0,int minY2=0,bool check=false)
  31. {
  32. for (int i = minX-1; i <= maxX; i++)
  33. {
  34. gotoxy(i, minY-1);
  35. cout << "=";
  36. gotoxy(i, maxY);
  37. cout << "=";
  38. }
  39. for (int i = minY-1; i <= maxY; i++)
  40. {
  41. gotoxy(minX-1, i);
  42. cout << "|";
  43. gotoxy(maxX, i);
  44. cout << "|";
  45.  
  46. }
  47. if (check == true)
  48. {
  49. for (int i = minX2-1; i <= maxX+minX2; i++)
  50. {
  51. gotoxy(i, minY2-1);
  52. cout << "=";
  53. gotoxy(i, maxY);
  54. cout << "=";
  55. }
  56. for (int i = minY2-1; i <= maxY; i++)
  57. {
  58. gotoxy(minX2-1, i);
  59. cout << "|";
  60. gotoxy(maxX+minX2, i);
  61. cout << "|";
  62. }
  63. }
  64. }
  65. void clearPole()
  66. {
  67. for (int i = 0; i < 1000; i++)
  68. {
  69. for (int j = 0; j < 100; j++)
  70. {
  71. gotoxy(j, i);
  72. cout << " ";
  73. }
  74. }
  75. }
  76. struct Prints
  77. {
  78. void Block1(int lenghtBlock, int startPositionX, int startPositionY)
  79. {
  80. for (int i = 0; i < lenghtBlock; i++)
  81. {
  82. gotoxy(startPositionX, startPositionY + i);
  83. cout << "|";
  84. }
  85. }
  86. void Block3(int lenghtBlock, int startPositionX, int startPositionY, int startPositionX2, int startPositionY2)
  87. {
  88. for (int i = 0; i < lenghtBlock; i++)
  89. {
  90. gotoxy(startPositionX + i, startPositionY);
  91. cout << "-";
  92. }
  93. for (int i = 0; i < lenghtBlock; i++)
  94. {
  95. gotoxy(startPositionX2 + i, startPositionY2);
  96. cout << "-";
  97. }
  98. }
  99. void Block4(int lenghtBlock, int startPositionX, int startPositionY, int startPositionX2, int startPositionY2)
  100. {
  101. for (int i = 0; i < lenghtBlock; i++)
  102. {
  103. gotoxy(startPositionX, startPositionY + i);
  104. cout << "|";
  105. gotoxy(startPositionX2, startPositionY2 + i);
  106. cout << "|";
  107. }
  108. }
  109. };
  110. struct Clears
  111. {
  112.  
  113. void Block1(int lenghtBlock,int startPositionX,int startPositionY)
  114. {
  115. for (int i = 0; i < lenghtBlock; i++)
  116. {
  117. gotoxy(startPositionX, startPositionY + i);
  118. cout << " ";
  119. }
  120. }
  121.  
  122. void Block3(int lenghtBlock,int startPositionX,int startPositionY,int startPositionX2,int startPositionY2)
  123. {
  124. for (int i = 0; i < lenghtBlock; i++)
  125. {
  126. gotoxy(startPositionX + i, startPositionY);
  127. cout << " ";
  128. }
  129. for (int i = 0; i < lenghtBlock; i++)
  130. {
  131. gotoxy(startPositionX2 + i, startPositionY2);
  132. cout << " ";
  133. }
  134. }
  135.  
  136. void Block4(int lenghtBlock,int startPositionX,int startPositionY,int startPositionX2,int startPositionY2)
  137. {
  138. for (int i = 0; i < lenghtBlock; i++)
  139. {
  140. gotoxy(startPositionX, startPositionY + i);
  141. cout << " ";
  142. gotoxy(startPositionX2, startPositionY2 + i);
  143. cout << " ";
  144. }
  145. }
  146. };
  147. void tetris()
  148. {
  149. Prints print;
  150. Clears clear;
  151. cout << CSI << hideCursor;
  152. clearPole();
  153. srand(time(NULL));
  154. int startPositionX = minX+5;
  155. int startPositionY = 1;
  156. printPole(minX,minY);
  157. int scorePlayer = 0;
  158. int positionScoreX = maxX + 5;
  159. int positionScoreY = 1;
  160. int** Pole = new int* [maxY];
  161. int* bigArr = new int[maxY * maxX];
  162. for (int i = 0; i < maxY; i++)
  163. {
  164. Pole[i] = bigArr + i * maxX;
  165. }
  166. int lenghtBlock = 3;
  167. gotoxy(positionScoreX, positionScoreY);
  168. cout << "Score = " << scorePlayer;
  169. //Block 1 |
  170. // |
  171. // |
  172.  
  173. //Block 2 ---
  174.  
  175. //Block 3 ---
  176. // ---
  177.  
  178. //Block 4 |
  179. // | |
  180. // | |
  181. // |
  182. while (true)
  183. {
  184. int randBlock = rand()%4+1;
  185. startPositionX = maxX/2;
  186. startPositionY = 1;
  187. while (true)
  188. {
  189. if (randBlock == 1)
  190. {
  191. print.Block1(lenghtBlock, startPositionX, startPositionY);
  192. if (_kbhit())
  193. {
  194. auto key{ _getch() };
  195. if (key == 'a' or key == 'A') {
  196. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1) {
  197. clear.Block1(lenghtBlock,startPositionX,startPositionY);
  198. startPositionX--;
  199. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1) {
  200. clear.Block1(lenghtBlock, startPositionX, startPositionY);
  201. startPositionX--;
  202. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1) {
  203. clear.Block1(lenghtBlock, startPositionX, startPositionY);
  204. startPositionX--;
  205. }
  206. } print.Block1(lenghtBlock, startPositionX, startPositionY);
  207. };
  208. };
  209. if (key == 'd' or key == 'D') {
  210. if (startPositionX < maxX - 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY + 1][startPositionX + 1] != 1 and Pole[startPositionY + 2][startPositionX + 1] != 1) {
  211. clear.Block1(lenghtBlock, startPositionX, startPositionY);
  212. startPositionX++;
  213. if (startPositionX < maxX - 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY + 1][startPositionX + 1] != 1 and Pole[startPositionY + 2][startPositionX + 1] != 1) {
  214. clear.Block1(lenghtBlock, startPositionX, startPositionY);
  215. startPositionX++;
  216. if (startPositionX < maxX - 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY + 1][startPositionX + 1] != 1 and Pole[startPositionY + 2][startPositionX + 1] != 1) {
  217. clear.Block1(lenghtBlock, startPositionX, startPositionY);
  218. startPositionX++;
  219. }
  220. } print.Block1(lenghtBlock, startPositionX, startPositionY);
  221. };
  222. };
  223. } //Control game
  224. Sleep(300);
  225.  
  226. int previousX = startPositionX;
  227. int previousY = startPositionY;
  228. if (startPositionY + lenghtBlock == maxY)
  229. {
  230.  
  231. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  232. {
  233. Pole[i][startPositionX] = 1;
  234. }
  235. print.Block1(lenghtBlock, startPositionX, startPositionY);
  236. goto end;
  237. }
  238. else if (Pole[startPositionY + lenghtBlock][startPositionX] == 1)
  239. {
  240. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  241. {
  242. Pole[i][startPositionX] = 1;
  243. }
  244. print.Block1(lenghtBlock, startPositionX, startPositionY);
  245. goto end;
  246. }
  247. startPositionY++;
  248.  
  249. clear.Block1(lenghtBlock, previousX, previousY);
  250. if (startPositionY + lenghtBlock == maxY)
  251. {
  252.  
  253. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  254. {
  255. Pole[i][startPositionX] = 1;
  256. }
  257. print.Block1(lenghtBlock, startPositionX, startPositionY);
  258. goto end;
  259. }
  260. else if (Pole[startPositionY + lenghtBlock][startPositionX] == 1)
  261. {
  262. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  263. {
  264. Pole[i][startPositionX] = 1;
  265. }
  266. print.Block1(lenghtBlock, startPositionX, startPositionY);
  267. goto end;
  268. }
  269.  
  270. }
  271. else if (randBlock == 2)
  272. {
  273. char* board = new char[lenghtBlock];
  274. for (int i = 0; i < lenghtBlock; i++)
  275. {
  276. board[i] = '-';
  277. }
  278. board[lenghtBlock] = '\0';
  279. gotoxy(startPositionX, startPositionY += 1);
  280. cout << board;
  281. if (_kbhit())
  282. {
  283. auto key{ _getch() };
  284. if (key == 'a' or key == 'A') {
  285. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1) {
  286. gotoxy(startPositionX + lenghtBlock - 1, startPositionY); cout << " "; startPositionX--;
  287. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1) {
  288. gotoxy(startPositionX + lenghtBlock - 1, startPositionY); cout << " "; startPositionX--;
  289. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1) { gotoxy(startPositionX + lenghtBlock - 1, startPositionY); cout << " "; startPositionX--; }
  290. } gotoxy(startPositionX, startPositionY); cout << board;
  291. };
  292. };
  293. if (key == 'd' or key == 'D') {
  294. if (startPositionX + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1) {
  295. gotoxy(startPositionX, startPositionY); cout << " "; startPositionX++;
  296. if (startPositionX + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1) {
  297. gotoxy(startPositionX, startPositionY); cout << " "; startPositionX++;
  298. if (startPositionX + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1) { gotoxy(startPositionX, startPositionY); cout << " "; startPositionX++; }
  299. } gotoxy(startPositionX, startPositionY); cout << board;
  300. };
  301. };
  302. } //Control game
  303. Sleep(300);
  304.  
  305. int previousX = startPositionX;
  306. int previousY = startPositionY;
  307. gotoxy(previousX, previousY);
  308. for (int i = 0; i < lenghtBlock; i++)
  309. {
  310. cout << " ";
  311. }
  312. if (startPositionY == maxY - 1)
  313. {
  314.  
  315. for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
  316. {
  317. Pole[startPositionY][i] = 1;
  318. }
  319. gotoxy(startPositionX, startPositionY);
  320. cout << "---";
  321. goto end;
  322. }
  323. else if (((Pole[startPositionY + 1][startPositionX] == 1) or (Pole[startPositionY + 1][startPositionX + 1] == 1) or (Pole[startPositionY + 1][startPositionX + 2] == 1)))
  324. {
  325. for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
  326. {
  327. Pole[startPositionY][i] = 1;
  328. }
  329. gotoxy(startPositionX, startPositionY);
  330. cout << "---";
  331. goto end;
  332. }
  333.  
  334. }
  335. else if (randBlock == 3)
  336. {
  337. int startPositionX2 = startPositionX + 1;
  338. int startPositionY2 = startPositionY + 1;
  339. print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  340. if (_kbhit())
  341. {
  342. auto key{ _getch() };
  343. if (key == 'a' or key == 'A') {
  344. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY2][startPositionX2 - 1] != 1 ) {
  345. clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  346. startPositionX--; startPositionX2--;
  347. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY2][startPositionX2 - 1] != 1 ){
  348. clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  349. startPositionX--; startPositionX2--;
  350. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY2][startPositionX2 - 1] != 1 ) {
  351. clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  352. startPositionX--; startPositionX2--;
  353. }
  354. } print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  355. };
  356. };
  357. if (key == 'd' or key == 'D') {
  358. if (startPositionX2+lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1 and Pole[startPositionY2][startPositionX2 + lenghtBlock ] != 1 ){
  359. clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  360. startPositionX++; startPositionX2++;
  361. if (startPositionX2+lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1 and Pole[startPositionY2][startPositionX2 + lenghtBlock ] != 1 ) {
  362. clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  363. startPositionX++; startPositionX2++;
  364. if (startPositionX2+lenghtBlock < maxX and Pole[startPositionY][startPositionX+lenghtBlock]!=1 and Pole[startPositionY2][startPositionX2+lenghtBlock]!=1 ) {
  365. clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  366. startPositionX++; startPositionX2++;
  367. }
  368. } print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  369. };
  370. };
  371. } //Control game
  372. Sleep(300);
  373. int previousX = startPositionX;
  374. int previousY = startPositionY;
  375. int previousX2 = startPositionX2;
  376. int previousY2 = startPositionY2;
  377. if (startPositionY2 == maxY - 1)
  378. {
  379. for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
  380. {
  381. Pole[startPositionY][i] = 1;
  382. }
  383. for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
  384. {
  385. Pole[startPositionY2][i] = 1;
  386. }
  387. print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  388. goto end;
  389. }
  390. else if (Pole[startPositionY + 1][startPositionX] == 1 or Pole[startPositionY2 + 1][startPositionX2] == 1 or Pole[startPositionY2 + 1][startPositionX2 + 1] == 1 or Pole[startPositionY2 + 1][startPositionX2 + 2] == 1)
  391. {
  392. for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
  393. {
  394. Pole[startPositionY][i] = 1;
  395. }
  396. for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
  397. {
  398. Pole[startPositionY2][i] = 1;
  399. }
  400. print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  401. goto end;
  402. }
  403. startPositionY++;
  404. startPositionY2++;
  405.  
  406. clear.Block3(lenghtBlock, previousX, previousY, previousX2, previousY2);
  407. if (startPositionY2 == maxY-1)
  408. {
  409. for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
  410. {
  411. Pole[startPositionY][i] = 1;
  412. }
  413. for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
  414. {
  415. Pole[startPositionY2][i] = 1;
  416. }
  417. print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  418. goto end;
  419. }
  420. else if (Pole[startPositionY+1][startPositionX]==1 or Pole[startPositionY2+1][startPositionX2]==1 or Pole[startPositionY2+1][startPositionX2+1]==1 or Pole[startPositionY2+1][startPositionX2+2]==1)
  421. {
  422. for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
  423. {
  424. Pole[startPositionY][i] = 1;
  425. }
  426. for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
  427. {
  428. Pole[startPositionY2][i] = 1;
  429. }
  430. print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  431. goto end;
  432. }
  433.  
  434. }
  435. else if (randBlock == 4)
  436. {
  437. int startPositionX2 = startPositionX + 1;
  438. int startPositionY2 = startPositionY + 1;
  439. print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  440. if (_kbhit())
  441. {
  442. auto key{ _getch() };
  443. if (key == 'a' or key == 'A') {
  444. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1 and Pole[startPositionY + lenghtBlock][startPositionX] != 1 ) {
  445. clear.Block4(lenghtBlock,startPositionX,startPositionY,startPositionX2,startPositionY2);
  446. startPositionX--; startPositionX2--;
  447. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1 and Pole[startPositionY + lenghtBlock][startPositionX] != 1 ) {
  448. clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  449. startPositionX--; startPositionX2--;
  450. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1 and Pole[startPositionY + lenghtBlock][startPositionX] != 1 ) {
  451. clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  452. startPositionX--; startPositionX2--;
  453. }
  454. } print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  455. };
  456. };
  457. if (key == 'd' or key == 'D') {
  458. if (startPositionX2 < maxX-1 and Pole[startPositionY2][startPositionX2 + 1] != 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 + 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 + 1] != 1 and Pole[startPositionY + lenghtBlock][startPositionX] != 1 ) {
  459. clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  460. startPositionX++; startPositionX2++;
  461. if (startPositionX2 < maxX -1 and Pole[startPositionY2][startPositionX2 + 1] != 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 + 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 + 1] != 1 and Pole[startPositionY + lenghtBlock][startPositionX] != 1) {
  462. clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  463. startPositionX++; startPositionX2++;
  464. if (startPositionX2 < maxX -1 and Pole[startPositionY2][startPositionX2 + 1] != 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 + 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 + 1] != 1 and Pole[startPositionY + lenghtBlock][startPositionX] != 1 ) {
  465. clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  466. startPositionX++; startPositionX2++;
  467. }
  468. } print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  469. };
  470. };
  471. } //Control game
  472. Sleep(300);
  473. int previousX = startPositionX;
  474. int previousY = startPositionY;
  475. int previousX2 = startPositionX2;
  476. int previousY2 = startPositionY2;
  477. if (startPositionY + lenghtBlock == maxY or startPositionY2 + lenghtBlock == maxY)
  478. {
  479. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  480. {
  481. Pole[i][startPositionX] = 1;
  482. }
  483. for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
  484. {
  485. Pole[i][startPositionX2] = 1;
  486. }
  487. print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  488. goto end;
  489. }
  490. else if (((Pole[startPositionY + lenghtBlock][startPositionX] == 1) or (Pole[startPositionY2 + lenghtBlock][startPositionX2] == 1)))
  491. {
  492. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  493. {
  494. Pole[i][startPositionX] = 1;
  495. }
  496. for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
  497. {
  498. Pole[i][startPositionX2] = 1;
  499. }
  500. print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  501. goto end;
  502.  
  503.  
  504. }
  505. startPositionY++;
  506. startPositionY2++;
  507.  
  508. clear.Block4(lenghtBlock, previousX, previousY, previousX2, previousY2);
  509.  
  510. if (startPositionY + lenghtBlock == maxY or startPositionY2 + lenghtBlock == maxY)
  511. {
  512. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  513. {
  514. Pole[i][startPositionX] = 1;
  515. }
  516. for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
  517. {
  518. Pole[i][startPositionX2] = 1;
  519. }
  520. print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  521. goto end;
  522. }
  523. else if (((Pole[startPositionY + lenghtBlock][startPositionX] == 1) or (Pole[startPositionY2 + lenghtBlock][startPositionX2] == 1)))
  524. {
  525. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  526. {
  527. Pole[i][startPositionX] = 1;
  528. }
  529. for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
  530. {
  531. Pole[i][startPositionX2] = 1;
  532. }
  533. print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
  534. goto end;
  535.  
  536.  
  537. }
  538.  
  539. }
  540.  
  541. }
  542. end:;
  543.  
  544. for (int x = 0; x < maxX; x++)
  545. {
  546. if (Pole[minY][x] == 1)
  547. {
  548. goto endProg;
  549. }
  550. }
  551.  
  552. for (int y = 1; y < maxY; y++)
  553. {
  554. bool check = true;
  555. for (int x = 1; x < maxX; x++)
  556. {
  557. if (Pole[y][x] == 1)
  558. {
  559.  
  560.  
  561. continue;
  562.  
  563. }
  564. else
  565. {
  566. check = false;
  567. goto endCycle;
  568. }
  569. }
  570. endCycle:;
  571. if (check == true)
  572. {
  573. for (int x = 1; x < maxX; x++)
  574. {
  575. Pole[y][x] = 0;
  576. gotoxy(x, y);
  577. cout << "-";
  578. }
  579. Sleep(600);
  580. for (int x = 1; x < maxX; x++)
  581. {
  582.  
  583. gotoxy(x, y);
  584. cout << " ";
  585. }
  586. scorePlayer += 50;
  587. gotoxy(positionScoreX, positionScoreY);
  588. cout << "Score = " << scorePlayer;
  589. }
  590.  
  591. }
  592. }
  593. endProg:;
  594. gotoxy(maxX / 2, maxY / 2);
  595. clearPole();
  596. cout << "Game over. Score = "<<scorePlayer;
  597. Sleep(2000);
  598.  
  599. }
  600. void tetrisFor2Users(int minX2,int minY2)
  601. {
  602. Prints print;
  603. Clears clear;
  604. cout << CSI << hideCursor;
  605. clearPole();
  606. srand(time(NULL));
  607. printPole(minX,minY,minX2,minY2,true);
  608. int scorePlayer = 0;
  609. int scorePlayer2 = 0;
  610. int positionScoreX = maxX + 5;
  611. int positionScoreY = 1;
  612. int positionScoreX2 = maxX+minX2 + 5;
  613. int positionScoreY2 = 1;
  614. int** Pole = new int* [maxY];
  615. int* bigArr = new int[maxY * (maxX+minX2)];
  616. for (int i = 0; i < maxY; i++)
  617. {
  618. Pole[i] = bigArr + i * (maxX+minX2);
  619. }
  620. int lenghtBlock = 3;
  621. gotoxy(positionScoreX, positionScoreY);
  622. cout << "Score = " << scorePlayer;
  623. gotoxy(positionScoreX2, positionScoreY2);
  624. cout << "Score = " << scorePlayer2;
  625. /*
  626. //Block 1 |
  627. // |
  628. // |
  629.  
  630. //Block 2 ---
  631.  
  632. //Block 3 ---
  633. // ---
  634.  
  635. //Block 4 |
  636. // | |
  637. // | |
  638. // |
  639. */
  640. int check = 1;
  641. while (true)
  642. {
  643. int randBlock = rand() % 4 + 1;
  644. int startPositionX = maxX / 2;
  645. int startPositionY = 1;
  646. int startPositionX2 = minX2+5;
  647. int startPositionY2 = 1;
  648. check *= (-1);
  649. while (true)
  650. {
  651. if (randBlock == 1)
  652. {
  653. if (check == 1)
  654. {
  655. print.Block1(lenghtBlock, startPositionX, startPositionY);
  656. if (_kbhit())
  657. {
  658. auto key{ _getch() };
  659. if (key == 'a' or key == 'A') {
  660. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1) {
  661. clear.Block1(lenghtBlock, startPositionX, startPositionY);
  662. startPositionX--;
  663. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1) {
  664. clear.Block1(lenghtBlock, startPositionX, startPositionY);
  665. startPositionX--;
  666. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1) {
  667. clear.Block1(lenghtBlock, startPositionX, startPositionY);
  668. startPositionX--;
  669. }
  670. } print.Block1(lenghtBlock, startPositionX, startPositionY);
  671. };
  672. };
  673. if (key == 'd' or key == 'D') {
  674. if (startPositionX < maxX - 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY + 1][startPositionX + 1] != 1 and Pole[startPositionY + 2][startPositionX + 1] != 1) {
  675. clear.Block1(lenghtBlock, startPositionX, startPositionY);
  676. startPositionX++;
  677. if (startPositionX < maxX - 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY + 1][startPositionX + 1] != 1 and Pole[startPositionY + 2][startPositionX + 1] != 1) {
  678. clear.Block1(lenghtBlock, startPositionX, startPositionY);
  679. startPositionX++;
  680. if (startPositionX < maxX - 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY + 1][startPositionX + 1] != 1 and Pole[startPositionY + 2][startPositionX + 1] != 1) {
  681. clear.Block1(lenghtBlock, startPositionX, startPositionY);
  682. startPositionX++;
  683. }
  684. } print.Block1(lenghtBlock, startPositionX, startPositionY);
  685. };
  686. };
  687. } //Control game
  688. Sleep(300);
  689.  
  690. int previousX = startPositionX;
  691. int previousY = startPositionY;
  692. if (startPositionY + lenghtBlock == maxY)
  693. {
  694.  
  695. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  696. {
  697. Pole[i][startPositionX] = 1;
  698. }
  699. print.Block1(lenghtBlock, startPositionX, startPositionY);
  700. goto end;
  701. }
  702. else if (Pole[startPositionY + lenghtBlock][startPositionX] == 1)
  703. {
  704. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  705. {
  706. Pole[i][startPositionX] = 1;
  707. }
  708. print.Block1(lenghtBlock, startPositionX, startPositionY);
  709. goto end;
  710. }
  711. startPositionY++;
  712.  
  713. clear.Block1(lenghtBlock, previousX, previousY);
  714. if (startPositionY + lenghtBlock == maxY)
  715. {
  716.  
  717. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  718. {
  719. Pole[i][startPositionX] = 1;
  720. }
  721. print.Block1(lenghtBlock, startPositionX, startPositionY);
  722. goto end;
  723. }
  724. else if (Pole[startPositionY + lenghtBlock][startPositionX] == 1)
  725. {
  726. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  727. {
  728. Pole[i][startPositionX] = 1;
  729. }
  730. print.Block1(lenghtBlock, startPositionX, startPositionY);
  731. goto end;
  732. }
  733. }
  734. else
  735. {
  736. print.Block1(lenghtBlock, startPositionX2, startPositionY2);
  737. if (_kbhit())
  738. {
  739. auto key{ _getch() };
  740. if (key == 'j' or key == 'J') {
  741. if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 - 1] != 1) {
  742. clear.Block1(lenghtBlock, startPositionX2, startPositionY2);
  743. startPositionX2--;
  744. if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 - 1] != 1) {
  745. clear.Block1(lenghtBlock, startPositionX2, startPositionY2);
  746. startPositionX2--;
  747. if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionY2+ 1][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 - 1] != 1) {
  748. clear.Block1(lenghtBlock, startPositionX2, startPositionY2);
  749. startPositionX2--;
  750. }
  751. } print.Block1(lenghtBlock, startPositionX2, startPositionY2);
  752. };
  753. };
  754. if (key == 'l' or key == 'L') {
  755. if (startPositionX2 < maxX+minX2 - 1 and Pole[startPositionY2][startPositionX2 + 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 + 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 + 1] != 1) {
  756. clear.Block1(lenghtBlock, startPositionX2, startPositionY2);
  757. startPositionX2++;
  758. if (startPositionX2 < maxX+minX2 - 1 and Pole[startPositionY2][startPositionX2 + 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 + 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 + 1] != 1) {
  759. clear.Block1(lenghtBlock, startPositionX2, startPositionY2);
  760. startPositionX2++;
  761. if (startPositionX2 < maxX+minX2 - 1 and Pole[startPositionY2][startPositionX2 + 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 + 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 + 1] != 1) {
  762. clear.Block1(lenghtBlock, startPositionX2, startPositionY2);
  763. startPositionX2++;
  764. }
  765. } print.Block1(lenghtBlock, startPositionX2, startPositionY2);
  766. };
  767. };
  768. } //Control game
  769. Sleep(300);
  770.  
  771. int previousX = startPositionX2;
  772. int previousY = startPositionY2;
  773. if (startPositionY2 + lenghtBlock == maxY)
  774. {
  775.  
  776. for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
  777. {
  778. Pole[i][startPositionX2] = 1;
  779. }
  780. print.Block1(lenghtBlock, startPositionX2, startPositionY2);
  781. goto end;
  782. }
  783. else if (Pole[startPositionY2 + lenghtBlock][startPositionX2] == 1)
  784. {
  785. for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
  786. {
  787. Pole[i][startPositionX2] = 1;
  788. }
  789. print.Block1(lenghtBlock, startPositionX2, startPositionY2);
  790. goto end;
  791. }
  792. startPositionY2++;
  793.  
  794. clear.Block1(lenghtBlock, previousX, previousY);
  795. if (startPositionY2 + lenghtBlock == maxY)
  796. {
  797.  
  798. for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
  799. {
  800. Pole[i][startPositionX2] = 1;
  801. }
  802. print.Block1(lenghtBlock, startPositionX2, startPositionY2);
  803. goto end;
  804. }
  805. else if (Pole[startPositionY2 + lenghtBlock][startPositionX2] == 1)
  806. {
  807. for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
  808. {
  809. Pole[i][startPositionX2] = 1;
  810. }
  811. print.Block1(lenghtBlock, startPositionX2, startPositionY2);
  812. goto end;
  813. }
  814. }
  815. }
  816. else if (randBlock == 2 )
  817. {
  818. if (check == 1)
  819. {
  820. char* board = new char[lenghtBlock];
  821. for (int i = 0; i < lenghtBlock; i++)
  822. {
  823. board[i] = '-';
  824. }
  825. board[lenghtBlock] = '\0';
  826. gotoxy(startPositionX, startPositionY += 1);
  827. cout << board;
  828. if (_kbhit())
  829. {
  830. auto key{ _getch() };
  831. if (key == 'a' or key == 'A') {
  832. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1) {
  833. gotoxy(startPositionX + lenghtBlock - 1, startPositionY); cout << " "; startPositionX--;
  834. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1) {
  835. gotoxy(startPositionX + lenghtBlock - 1, startPositionY); cout << " "; startPositionX--;
  836. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1) { gotoxy(startPositionX + lenghtBlock - 1, startPositionY); cout << " "; startPositionX--; }
  837. } gotoxy(startPositionX, startPositionY); cout << board;
  838. };
  839. };
  840. if (key == 'd' or key == 'D') {
  841. if (startPositionX + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1) {
  842. gotoxy(startPositionX, startPositionY); cout << " "; startPositionX++;
  843. if (startPositionX + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1) {
  844. gotoxy(startPositionX, startPositionY); cout << " "; startPositionX++;
  845. if (startPositionX + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1) { gotoxy(startPositionX, startPositionY); cout << " "; startPositionX++; }
  846. } gotoxy(startPositionX, startPositionY); cout << board;
  847. };
  848. };
  849. } //Control game
  850. Sleep(300);
  851.  
  852. int previousX = startPositionX;
  853. int previousY = startPositionY;
  854. gotoxy(previousX, previousY);
  855. for (int i = 0; i < lenghtBlock; i++)
  856. {
  857. cout << " ";
  858. }
  859. if (startPositionY == maxY - 1)
  860. {
  861.  
  862. for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
  863. {
  864. Pole[startPositionY][i] = 1;
  865. }
  866. gotoxy(startPositionX, startPositionY);
  867. cout << "---";
  868. goto end;
  869. }
  870. else if (((Pole[startPositionY + 1][startPositionX] == 1) or (Pole[startPositionY + 1][startPositionX + 1] == 1) or (Pole[startPositionY + 1][startPositionX + 2] == 1)))
  871. {
  872. for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
  873. {
  874. Pole[startPositionY][i] = 1;
  875. }
  876. gotoxy(startPositionX, startPositionY);
  877. cout << "---";
  878. goto end;
  879. }
  880. }
  881. else
  882. {
  883. char* board = new char[lenghtBlock];
  884. for (int i = 0; i < lenghtBlock; i++)
  885. {
  886. board[i] = '-';
  887. }
  888. board[lenghtBlock] = '\0';
  889. gotoxy(startPositionX2, startPositionY2 += 1);
  890. cout << board;
  891. if (_kbhit())
  892. {
  893. auto key{ _getch() };
  894. if (key == 'j' or key == 'J') {
  895. if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1) {
  896. gotoxy(startPositionX2 + lenghtBlock - 1, startPositionY2); cout << " "; startPositionX2--;
  897. if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1) {
  898. gotoxy(startPositionX2 + lenghtBlock - 1, startPositionY2); cout << " "; startPositionX2--;
  899. if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1) { gotoxy(startPositionX2 + lenghtBlock - 1, startPositionY2); cout << " "; startPositionX2--; }
  900. } gotoxy(startPositionX2, startPositionY2); cout << board;
  901. };
  902. };
  903. if (key == 'l' or key == 'L') {
  904. if (startPositionX2 + lenghtBlock < maxX+minX2 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1) {
  905. gotoxy(startPositionX2, startPositionY2); cout << " "; startPositionX2++;
  906. if (startPositionX2 + lenghtBlock < maxX +minX2 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1) {
  907. gotoxy(startPositionX2, startPositionY2); cout << " "; startPositionX2++;
  908. if (startPositionX2 + lenghtBlock < maxX+minX2 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1) { gotoxy(startPositionX2, startPositionY2); cout << " "; startPositionX2++; }
  909. } gotoxy(startPositionX2, startPositionY2); cout << board;
  910. };
  911. };
  912. } //Control game
  913. Sleep(300);
  914.  
  915. int previousX = startPositionX2;
  916. int previousY = startPositionY2;
  917. gotoxy(previousX, previousY);
  918. for (int i = 0; i < lenghtBlock; i++)
  919. {
  920. cout << " ";
  921. }
  922. if (startPositionY2 == maxY - 1)
  923. {
  924.  
  925. for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
  926. {
  927. Pole[startPositionY2][i] = 1;
  928. }
  929. gotoxy(startPositionX2, startPositionY2);
  930. cout << "---";
  931. goto end;
  932. }
  933. else if (((Pole[startPositionY2 + 1][startPositionX2] == 1) or (Pole[startPositionY2 + 1][startPositionX2 + 1] == 1) or (Pole[startPositionY2 + 1][startPositionX2 + 2] == 1)))
  934. {
  935. for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
  936. {
  937. Pole[startPositionY2][i] = 1;
  938. }
  939. gotoxy(startPositionX2, startPositionY2);
  940. cout << "---";
  941. goto end;
  942. }
  943. }
  944. }
  945. else if (randBlock == 3 )
  946. { if(check==1)
  947. {
  948. int startPositionXPl2 = startPositionX + 1;
  949. int startPositionYPl2 = startPositionY + 1;
  950. print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  951. if (_kbhit())
  952. {
  953. auto key{ _getch() };
  954. if (key == 'a' or key == 'A') {
  955. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionYPl2][startPositionXPl2 - 1] != 1) {
  956. clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  957. startPositionX--; startPositionXPl2--;
  958. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionYPl2][startPositionXPl2 - 1] != 1) {
  959. clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  960. startPositionX--; startPositionXPl2--;
  961. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionYPl2][startPositionXPl2 - 1] != 1) {
  962. clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  963. startPositionX--; startPositionXPl2--;
  964. }
  965. } print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  966. };
  967. };
  968. if (key == 'd' or key == 'D') {
  969. if (startPositionXPl2 + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1 and Pole[startPositionYPl2][startPositionXPl2 + lenghtBlock] != 1) {
  970. clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  971. startPositionX++; startPositionXPl2++;
  972. if (startPositionXPl2 + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1 and Pole[startPositionYPl2][startPositionXPl2 + lenghtBlock] != 1) {
  973. clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  974. startPositionX++; startPositionXPl2++;
  975. if (startPositionXPl2 + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1 and Pole[startPositionYPl2][startPositionXPl2 + lenghtBlock] != 1) {
  976. clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  977. startPositionX++; startPositionXPl2++;
  978. }
  979. } print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  980. };
  981. };
  982. } //Control game
  983. Sleep(300);
  984. int previousX = startPositionX;
  985. int previousY = startPositionY;
  986. int previousX2 = startPositionXPl2;
  987. int previousY2 = startPositionYPl2;
  988. if (startPositionYPl2 == maxY - 1)
  989. {
  990. for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
  991. {
  992. Pole[startPositionY][i] = 1;
  993. }
  994. for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
  995. {
  996. Pole[startPositionYPl2][i] = 1;
  997. }
  998. print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  999. goto end;
  1000. }
  1001. else if (Pole[startPositionY + 1][startPositionX] == 1 or Pole[startPositionYPl2 + 1][startPositionXPl2] == 1 or Pole[startPositionYPl2 + 1][startPositionXPl2 + 1] == 1 or Pole[startPositionYPl2 + 1][startPositionXPl2 + 2] == 1)
  1002. {
  1003. for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
  1004. {
  1005. Pole[startPositionY][i] = 1;
  1006. }
  1007. for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
  1008. {
  1009. Pole[startPositionYPl2][i] = 1;
  1010. }
  1011. print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1012. goto end;
  1013. }
  1014. startPositionY++;
  1015. startPositionYPl2++;
  1016.  
  1017. clear.Block3(lenghtBlock, previousX, previousY, previousX2, previousY2);
  1018. if (startPositionYPl2 == maxY - 1)
  1019. {
  1020. for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
  1021. {
  1022. Pole[startPositionY][i] = 1;
  1023. }
  1024. for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
  1025. {
  1026. Pole[startPositionYPl2][i] = 1;
  1027. }
  1028. print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1029. goto end;
  1030. }
  1031. else if (Pole[startPositionY + 1][startPositionX] == 1 or Pole[startPositionYPl2 + 1][startPositionXPl2] == 1 or Pole[startPositionYPl2 + 1][startPositionXPl2 + 1] == 1 or Pole[startPositionYPl2 + 1][startPositionXPl2 + 2] == 1)
  1032. {
  1033. for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
  1034. {
  1035. Pole[startPositionY][i] = 1;
  1036. }
  1037. for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
  1038. {
  1039. Pole[startPositionYPl2][i] = 1;
  1040. }
  1041. print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1042. goto end;
  1043. }
  1044.  
  1045. }
  1046. else
  1047. {
  1048. int startPositionXPl2 = startPositionX2 + 1;
  1049. int startPositionYPl2 = startPositionY2 + 1;
  1050. print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1051. if (_kbhit())
  1052. {
  1053. auto key{ _getch() };
  1054. if (key == 'j' or key == 'J') {
  1055. if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionYPl2][startPositionXPl2 - 1] != 1) {
  1056. clear.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1057. startPositionX2--; startPositionXPl2--;
  1058. if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionYPl2][startPositionXPl2 - 1] != 1) {
  1059. clear.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1060. startPositionX2--; startPositionXPl2--;
  1061. if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionYPl2][startPositionXPl2 - 1] != 1) {
  1062. clear.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1063. startPositionX2--; startPositionXPl2--;
  1064. }
  1065. } print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1066. };
  1067. };
  1068. if (key == 'l' or key == 'L') {
  1069. if (startPositionXPl2 + lenghtBlock < maxX+minX2 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1 and Pole[startPositionYPl2][startPositionXPl2 + lenghtBlock] != 1) {
  1070. clear.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1071. startPositionX2++; startPositionXPl2++;
  1072. if (startPositionXPl2 + lenghtBlock < maxX + minX2 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1 and Pole[startPositionYPl2][startPositionXPl2 + lenghtBlock] != 1) {
  1073. clear.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1074. startPositionX2++; startPositionXPl2++;
  1075. if (startPositionXPl2 + lenghtBlock < maxX + minX2 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1 and Pole[startPositionYPl2][startPositionXPl2 + lenghtBlock] != 1) {
  1076. clear.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1077. startPositionX2++; startPositionXPl2++;
  1078. }
  1079. } print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1080. };
  1081. };
  1082. } //Control game
  1083. Sleep(300);
  1084. int previousX = startPositionX2;
  1085. int previousY = startPositionY2;
  1086. int previousX2 = startPositionXPl2;
  1087. int previousY2 = startPositionYPl2;
  1088. if (startPositionYPl2 == maxY - 1)
  1089. {
  1090. for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
  1091. {
  1092. Pole[startPositionY2][i] = 1;
  1093. }
  1094. for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
  1095. {
  1096. Pole[startPositionYPl2][i] = 1;
  1097. }
  1098. print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1099. goto end;
  1100. }
  1101. else if (Pole[startPositionY2 + 1][startPositionX2] == 1 or Pole[startPositionYPl2 + 1][startPositionXPl2] == 1 or Pole[startPositionYPl2 + 1][startPositionXPl2 + 1] == 1 or Pole[startPositionYPl2 + 1][startPositionXPl2 + 2] == 1)
  1102. {
  1103. for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
  1104. {
  1105. Pole[startPositionY2][i] = 1;
  1106. }
  1107. for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
  1108. {
  1109. Pole[startPositionYPl2][i] = 1;
  1110. }
  1111. print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1112. goto end;
  1113. }
  1114. startPositionY2++;
  1115. startPositionYPl2++;
  1116.  
  1117. clear.Block3(lenghtBlock, previousX, previousY, previousX2, previousY2);
  1118. if (startPositionYPl2 == maxY - 1)
  1119. {
  1120. for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
  1121. {
  1122. Pole[startPositionY2][i] = 1;
  1123. }
  1124. for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
  1125. {
  1126. Pole[startPositionYPl2][i] = 1;
  1127. }
  1128. print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1129. goto end;
  1130. }
  1131. else if (Pole[startPositionY2 + 1][startPositionX2] == 1 or Pole[startPositionYPl2 + 1][startPositionXPl2] == 1 or Pole[startPositionYPl2 + 1][startPositionXPl2 + 1] == 1 or Pole[startPositionYPl2 + 1][startPositionXPl2 + 2] == 1)
  1132. {
  1133. for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
  1134. {
  1135. Pole[startPositionY2][i] = 1;
  1136. }
  1137. for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
  1138. {
  1139. Pole[startPositionYPl2][i] = 1;
  1140. }
  1141. print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1142. goto end;
  1143. }
  1144.  
  1145. }
  1146. }
  1147. else if (randBlock == 4 )
  1148. {
  1149. if(check==1)
  1150. {
  1151. int startPositionXPl2 = startPositionX + 1;
  1152. int startPositionYPl2 = startPositionY + 1;
  1153. print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1154. if (_kbhit())
  1155. {
  1156. auto key{ _getch() };
  1157. if (key == 'a' or key == 'A') {
  1158. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1 and Pole[startPositionY + lenghtBlock][startPositionX] != 1) {
  1159. clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1160. startPositionX--; startPositionXPl2--;
  1161. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1 and Pole[startPositionY + lenghtBlock][startPositionX] != 1) {
  1162. clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1163. startPositionX--; startPositionXPl2--;
  1164. if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1 and Pole[startPositionY + lenghtBlock][startPositionX] != 1) {
  1165. clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1166. startPositionX--; startPositionXPl2--;
  1167. }
  1168. } print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1169. };
  1170. };
  1171. if (key == 'd' or key == 'D') {
  1172. if (startPositionXPl2 < maxX - 1 and Pole[startPositionYPl2][startPositionXPl2 + 1] != 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionYPl2 + 1][startPositionXPl2 + 1] != 1 and Pole[startPositionYPl2 + 2][startPositionXPl2 + 1] != 1 and Pole[startPositionY + lenghtBlock][startPositionX] != 1) {
  1173. clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1174. startPositionX++; startPositionXPl2++;
  1175. if (startPositionXPl2 < maxX - 1 and Pole[startPositionYPl2][startPositionXPl2 + 1] != 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionYPl2 + 1][startPositionXPl2 + 1] != 1 and Pole[startPositionYPl2 + 2][startPositionXPl2 + 1] != 1 and Pole[startPositionY + lenghtBlock][startPositionX] != 1) {
  1176. clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1177. startPositionX++; startPositionXPl2++;
  1178. if (startPositionXPl2 < maxX - 1 and Pole[startPositionYPl2][startPositionXPl2 + 1] != 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionYPl2 + 1][startPositionXPl2 + 1] != 1 and Pole[startPositionYPl2 + 2][startPositionXPl2 + 1] != 1 and Pole[startPositionY + lenghtBlock][startPositionX] != 1) {
  1179. clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1180. startPositionX++; startPositionXPl2++;
  1181. }
  1182. } print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1183. };
  1184. };
  1185. } //Control game
  1186. Sleep(300);
  1187. int previousX = startPositionX;
  1188. int previousY = startPositionY;
  1189. int previousX2 = startPositionXPl2;
  1190. int previousY2 = startPositionYPl2;
  1191. if (startPositionY + lenghtBlock == maxY or startPositionYPl2 + lenghtBlock == maxY)
  1192. {
  1193. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  1194. {
  1195. Pole[i][startPositionX] = 1;
  1196. }
  1197. for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
  1198. {
  1199. Pole[i][startPositionXPl2] = 1;
  1200. }
  1201. print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1202. goto end;
  1203. }
  1204. else if (((Pole[startPositionY + lenghtBlock][startPositionX] == 1) or (Pole[startPositionYPl2 + lenghtBlock][startPositionXPl2] == 1)))
  1205. {
  1206. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  1207. {
  1208. Pole[i][startPositionX] = 1;
  1209. }
  1210. for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
  1211. {
  1212. Pole[i][startPositionXPl2] = 1;
  1213. }
  1214. print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1215. goto end;
  1216.  
  1217.  
  1218. }
  1219. startPositionY++;
  1220. startPositionYPl2++;
  1221.  
  1222. clear.Block4(lenghtBlock, previousX, previousY, previousX2, previousY2);
  1223.  
  1224. if (startPositionY + lenghtBlock == maxY or startPositionYPl2 + lenghtBlock == maxY)
  1225. {
  1226. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  1227. {
  1228. Pole[i][startPositionX] = 1;
  1229. }
  1230. for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
  1231. {
  1232. Pole[i][startPositionXPl2] = 1;
  1233. }
  1234. print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1235. goto end;
  1236. }
  1237. else if (((Pole[startPositionY + lenghtBlock][startPositionX] == 1) or (Pole[startPositionYPl2 + lenghtBlock][startPositionXPl2] == 1)))
  1238. {
  1239. for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
  1240. {
  1241. Pole[i][startPositionX] = 1;
  1242. }
  1243. for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
  1244. {
  1245. Pole[i][startPositionXPl2] = 1;
  1246. }
  1247. print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
  1248. goto end;
  1249.  
  1250.  
  1251. }
  1252.  
  1253. }
  1254. else
  1255. {
  1256. int startPositionXPl2 = startPositionX2 + 1;
  1257. int startPositionYPl2 = startPositionY2 + 1;
  1258. print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1259. if (_kbhit())
  1260. {
  1261. auto key{ _getch() };
  1262. if (key == 'j' or key == 'J') {
  1263. if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 - 1] != 1 and Pole[startPositionY2 + lenghtBlock][startPositionX2] != 1) {
  1264. clear.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1265. startPositionX2--; startPositionXPl2--;
  1266. if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 - 1] != 1 and Pole[startPositionY2 + lenghtBlock][startPositionX2] != 1) {
  1267. clear.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1268. startPositionX2--; startPositionXPl2--;
  1269. if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 - 1] != 1 and Pole[startPositionY2 + lenghtBlock][startPositionX2] != 1) {
  1270. clear.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1271. startPositionX2--; startPositionXPl2--;
  1272. }
  1273. } print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1274. };
  1275. };
  1276. //Here
  1277. if (key == 'l' or key == 'L') {
  1278. if (startPositionXPl2 < maxX+minX2 - 1 and Pole[startPositionYPl2][startPositionXPl2 + 1] != 1 and Pole[startPositionY2][startPositionX2 + 1] != 1 and Pole[startPositionYPl2 + 1][startPositionXPl2 + 1] != 1 and Pole[startPositionYPl2 + 2][startPositionXPl2 + 1] != 1 and Pole[startPositionY2 + lenghtBlock][startPositionX2] != 1) {
  1279. clear.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1280. startPositionX2++; startPositionXPl2++;
  1281. if (startPositionXPl2 < maxX+minX2 - 1 and Pole[startPositionYPl2][startPositionXPl2 + 1] != 1 and Pole[startPositionY2][startPositionX2 + 1] != 1 and Pole[startPositionYPl2 + 1][startPositionXPl2 + 1] != 1 and Pole[startPositionYPl2 + 2][startPositionXPl2 + 1] != 1 and Pole[startPositionY2 + lenghtBlock][startPositionX2] != 1) {
  1282. clear.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1283. startPositionX2++; startPositionXPl2++;
  1284. if (startPositionXPl2 < maxX+minX2 - 1 and Pole[startPositionYPl2][startPositionXPl2 + 1] != 1 and Pole[startPositionY2][startPositionX2 + 1] != 1 and Pole[startPositionYPl2 + 1][startPositionXPl2 + 1] != 1 and Pole[startPositionYPl2 + 2][startPositionXPl2 + 1] != 1 and Pole[startPositionY2 + lenghtBlock][startPositionX2] != 1) {
  1285. clear.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1286. startPositionX2++; startPositionXPl2++;
  1287. }
  1288. } print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1289. };
  1290. };
  1291. } //Control game
  1292. Sleep(300);
  1293. int previousX = startPositionX2;
  1294. int previousY = startPositionY2;
  1295. int previousX2 = startPositionXPl2;
  1296. int previousY2 = startPositionYPl2;
  1297. if (startPositionY2 + lenghtBlock == maxY or startPositionYPl2 + lenghtBlock == maxY)
  1298. {
  1299. for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
  1300. {
  1301. Pole[i][startPositionX2] = 1;
  1302. }
  1303. for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
  1304. {
  1305. Pole[i][startPositionXPl2] = 1;
  1306. }
  1307. print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1308. goto end;
  1309. }
  1310. else if (((Pole[startPositionY2 + lenghtBlock][startPositionX2] == 1) or (Pole[startPositionYPl2 + lenghtBlock][startPositionXPl2] == 1)))
  1311. {
  1312. for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
  1313. {
  1314. Pole[i][startPositionX2] = 1;
  1315. }
  1316. for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
  1317. {
  1318. Pole[i][startPositionXPl2] = 1;
  1319. }
  1320. print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1321. goto end;
  1322.  
  1323.  
  1324. }
  1325. startPositionY2++;
  1326. startPositionYPl2++;
  1327.  
  1328. clear.Block4(lenghtBlock, previousX, previousY, previousX2, previousY2);
  1329.  
  1330. if (startPositionY2 + lenghtBlock == maxY or startPositionYPl2 + lenghtBlock == maxY)
  1331. {
  1332. for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
  1333. {
  1334. Pole[i][startPositionX2] = 1;
  1335. }
  1336. for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
  1337. {
  1338. Pole[i][startPositionXPl2] = 1;
  1339. }
  1340. print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1341. goto end;
  1342. }
  1343. else if (((Pole[startPositionY2 + lenghtBlock][startPositionX2] == 1) or (Pole[startPositionYPl2 + lenghtBlock][startPositionXPl2] == 1)))
  1344. {
  1345. for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
  1346. {
  1347. Pole[i][startPositionX2] = 1;
  1348. }
  1349. for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
  1350. {
  1351. Pole[i][startPositionXPl2] = 1;
  1352. }
  1353. print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
  1354. goto end;
  1355. }
  1356.  
  1357. }
  1358. }
  1359. }
  1360. end:;
  1361.  
  1362. for (int x = minX-1; x < maxX; x++)
  1363. {
  1364. if (Pole[minY][x] == 1)
  1365. {
  1366. goto endProg;
  1367. }
  1368. }
  1369. for (int x = minX2 - 1; x < maxX+minX2; x++)
  1370. {
  1371. if (Pole[minY2][x] == 1)
  1372. {
  1373. goto endProg;
  1374. }
  1375. }
  1376. for (int y = 1; y < maxY; y++)
  1377. {
  1378. bool check1 = true;
  1379. bool check2 = true;
  1380. for (int x = minX; x < maxX; x++)
  1381. {
  1382. if (Pole[y][x] == 1)
  1383. {
  1384.  
  1385.  
  1386. continue;
  1387.  
  1388. }
  1389. else
  1390. {
  1391. check1 = false;
  1392. //goto endCycle;
  1393. }
  1394. }
  1395. for (int x = minX2; x < maxX+minX2; x++)
  1396. {
  1397. if (Pole[y][x] == 1)
  1398. {
  1399.  
  1400.  
  1401. continue;
  1402.  
  1403. }
  1404. else
  1405. {
  1406. check2 = false;
  1407. //goto endCycle;
  1408. }
  1409. }
  1410. //endCycle:;
  1411. if (check1 == true)
  1412. {
  1413. for (int x = 1; x < maxX; x++)
  1414. {
  1415. Pole[y][x] = 0;
  1416. gotoxy(x, y);
  1417. cout << "-";
  1418. }
  1419. Sleep(600);
  1420. for (int x = 1; x < maxX; x++)
  1421. {
  1422.  
  1423. gotoxy(x, y);
  1424. cout << " ";
  1425. }
  1426. scorePlayer += 50;
  1427. gotoxy(positionScoreX, positionScoreY);
  1428. cout << "Score = " << scorePlayer;
  1429. }
  1430. if (check2 == true)
  1431. {
  1432. for (int x = minX2; x < maxX+minX2; x++)
  1433. {
  1434. Pole[y][x] = 0;
  1435. gotoxy(x, y);
  1436. cout << "-";
  1437. }
  1438. Sleep(600);
  1439. for (int x = minX2; x < maxX+minX2; x++)
  1440. {
  1441.  
  1442. gotoxy(x, y);
  1443. cout << " ";
  1444. }
  1445. scorePlayer2 += 50;
  1446. gotoxy(positionScoreX2, positionScoreY2);
  1447. cout << "Score = " << scorePlayer2;
  1448. }
  1449.  
  1450. }
  1451. }
  1452. endProg:;
  1453. gotoxy((maxX+minX2) / 2, maxY / 2);
  1454. clearPole;
  1455. if (scorePlayer == scorePlayer2)
  1456. {
  1457. cout << "Nobody win";
  1458. }
  1459. else if (scorePlayer > scorePlayer2)
  1460. {
  1461. cout << "Player 1 win. Score = " << scorePlayer;
  1462. }
  1463. else {
  1464.  
  1465. cout << "Player 2 win. Score = " << scorePlayer2;
  1466. }
  1467. Sleep(2000);
  1468.  
  1469. }
  1470. void main()
  1471. {
  1472. int choice;
  1473. int minX2{maxX+20}, minY2{1};
  1474. do {
  1475. menu();
  1476. cin >> choice;
  1477. if (choice == 1)
  1478. {
  1479. tetris();
  1480. clearPole();
  1481. }
  1482. else if (choice == 2)
  1483. {
  1484. tetrisFor2Users(minX2,minY2);
  1485. clearPole();
  1486. }
  1487. else if (choice == 3)
  1488. {
  1489. cout << "Enter maxX = ";
  1490. cin >> maxX;
  1491. cout << "Complete!";
  1492. Sleep(800);
  1493. clearPole();
  1494. }
  1495. else if (choice == 4)
  1496. {
  1497. cout << "Enter maxY = ";
  1498. cin >> maxY;
  1499. cout << "Complete!";
  1500. Sleep(800);
  1501. clearPole();
  1502. }
  1503. else if (choice == 5)
  1504. {
  1505. cout << "Bye";
  1506. break;
  1507. }
  1508. } while (choice != 5);
  1509. }
Add Comment
Please, Sign In to add comment