Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ctime>
- #include<iostream>
- #include"windows.h"
- #include <chrono>
- #include <thread>
- #include <conio.h>
- using namespace std;
- const int minX{ 1 };
- const int minY{ 1 };
- int maxX{ 30 };
- int maxY{ 24 };
- const char* CSI{ "\033[" };
- const char* hideCursor{ "?25l" };
- const char* clearScreen{ "2J" };
- const int kbDeltaY{ 1 };
- void gotoxy(int xpos, int ypos)
- {
- COORD scrn;
- HANDLE hOuput = GetStdHandle(STD_OUTPUT_HANDLE);
- scrn.X = xpos; scrn.Y = ypos;
- SetConsoleCursorPosition(hOuput, scrn);
- }
- void menu()
- {
- cout << CSI << clearScreen;
- gotoxy(50, 0);
- cout << "MENU" << "\n";
- cout << "1) Start game \n2) Start game for 2 players\n3) Change maxX\n4) Change maxY\n5) Exit\nChoose:";
- }
- void printPole(int minX, int minY, int minX2 = 0, int minY2 = 0, bool check = false)
- {
- for (int i = minX - 1; i <= maxX; i++)
- {
- gotoxy(i, minY - 1);
- cout << "=";
- gotoxy(i, maxY);
- cout << "=";
- }
- for (int i = minY - 1; i <= maxY; i++)
- {
- gotoxy(minX - 1, i);
- cout << "|";
- gotoxy(maxX, i);
- cout << "|";
- }
- if (check == true)
- {
- for (int i = minX2 - 1; i <= maxX + minX2; i++)
- {
- gotoxy(i, minY2 - 1);
- cout << "=";
- gotoxy(i, maxY);
- cout << "=";
- }
- for (int i = minY2 - 1; i <= maxY; i++)
- {
- gotoxy(minX2 - 1, i);
- cout << "|";
- gotoxy(maxX + minX2, i);
- cout << "|";
- }
- }
- }
- void clearPole()
- {
- for (int i = 0; i < 1000; i++)
- {
- for (int j = 0; j < 100; j++)
- {
- gotoxy(j, i);
- cout << " ";
- }
- }
- }
- struct Prints
- {
- void Block1(int lenghtBlock, int startPositionX, int startPositionY)
- {
- for (int i = 0; i < lenghtBlock; i++)
- {
- gotoxy(startPositionX, startPositionY + i);
- cout << "|";
- }
- }
- void Block3(int lenghtBlock, int startPositionX, int startPositionY, int startPositionX2, int startPositionY2)
- {
- for (int i = 0; i < lenghtBlock; i++)
- {
- gotoxy(startPositionX + i, startPositionY);
- cout << "-";
- }
- for (int i = 0; i < lenghtBlock; i++)
- {
- gotoxy(startPositionX2 + i, startPositionY2);
- cout << "-";
- }
- }
- void Block4(int lenghtBlock, int startPositionX, int startPositionY, int startPositionX2, int startPositionY2)
- {
- for (int i = 0; i < lenghtBlock; i++)
- {
- gotoxy(startPositionX, startPositionY + i);
- cout << "|";
- gotoxy(startPositionX2, startPositionY2 + i);
- cout << "|";
- }
- }
- };
- struct Clears
- {
- void Block1(int lenghtBlock, int startPositionX, int startPositionY)
- {
- for (int i = 0; i < lenghtBlock; i++)
- {
- gotoxy(startPositionX, startPositionY + i);
- cout << " ";
- }
- }
- void Block3(int lenghtBlock, int startPositionX, int startPositionY, int startPositionX2, int startPositionY2)
- {
- for (int i = 0; i < lenghtBlock; i++)
- {
- gotoxy(startPositionX + i, startPositionY);
- cout << " ";
- }
- for (int i = 0; i < lenghtBlock; i++)
- {
- gotoxy(startPositionX2 + i, startPositionY2);
- cout << " ";
- }
- }
- void Block4(int lenghtBlock, int startPositionX, int startPositionY, int startPositionX2, int startPositionY2)
- {
- for (int i = 0; i < lenghtBlock; i++)
- {
- gotoxy(startPositionX, startPositionY + i);
- cout << " ";
- gotoxy(startPositionX2, startPositionY2 + i);
- cout << " ";
- }
- }
- };
- void tetris()
- {
- Prints print;
- Clears clear;
- cout << CSI << hideCursor;
- clearPole();
- srand(time(NULL));
- int startPositionX = minX + 5;
- int startPositionY = 1;
- printPole(minX, minY);
- int scorePlayer = 0;
- int positionScoreX = maxX + 5;
- int positionScoreY = 1;
- int** Pole = new int* [maxY];
- int* bigArr = new int[maxY * maxX];
- for (int i = 0; i < maxY; i++)
- {
- Pole[i] = bigArr + i * maxX;
- }
- int lenghtBlock = 3;
- gotoxy(positionScoreX, positionScoreY);
- cout << "Score = " << scorePlayer;
- //Block 1 |
- // |
- // |
- //Block 2 ---
- //Block 3 ---
- // ---
- //Block 4 |
- // | |
- // | |
- // |
- while (true)
- {
- int randBlock = rand() % 4 + 1;
- startPositionX = maxX / 2;
- startPositionY = 1;
- while (true)
- {
- if (randBlock == 1)
- {
- print.Block1(lenghtBlock, startPositionX, startPositionY);
- if (_kbhit())
- {
- auto key{ _getch() };
- if (key == 'a' or key == 'A') {
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX, startPositionY);
- startPositionX--;
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX, startPositionY);
- startPositionX--;
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX, startPositionY);
- startPositionX--;
- }
- } print.Block1(lenghtBlock, startPositionX, startPositionY);
- };
- };
- if (key == 'd' or key == 'D') {
- if (startPositionX < maxX - 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY + 1][startPositionX + 1] != 1 and Pole[startPositionY + 2][startPositionX + 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX, startPositionY);
- startPositionX++;
- if (startPositionX < maxX - 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY + 1][startPositionX + 1] != 1 and Pole[startPositionY + 2][startPositionX + 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX, startPositionY);
- startPositionX++;
- if (startPositionX < maxX - 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY + 1][startPositionX + 1] != 1 and Pole[startPositionY + 2][startPositionX + 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX, startPositionY);
- startPositionX++;
- }
- } print.Block1(lenghtBlock, startPositionX, startPositionY);
- };
- };
- } //Control game
- Sleep(300);
- int previousX = startPositionX;
- int previousY = startPositionY;
- if (startPositionY + lenghtBlock == maxY)
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- print.Block1(lenghtBlock, startPositionX, startPositionY);
- goto end;
- }
- else if (Pole[startPositionY + lenghtBlock][startPositionX] == 1)
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- print.Block1(lenghtBlock, startPositionX, startPositionY);
- goto end;
- }
- startPositionY++;
- clear.Block1(lenghtBlock, previousX, previousY);
- if (startPositionY + lenghtBlock == maxY)
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- print.Block1(lenghtBlock, startPositionX, startPositionY);
- goto end;
- }
- else if (Pole[startPositionY + lenghtBlock][startPositionX] == 1)
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- print.Block1(lenghtBlock, startPositionX, startPositionY);
- goto end;
- }
- }
- else if (randBlock == 2)
- {
- char* board = new char[lenghtBlock];
- for (int i = 0; i < lenghtBlock; i++)
- {
- board[i] = '-';
- }
- board[lenghtBlock] = '\0';
- gotoxy(startPositionX, startPositionY += 1);
- cout << board;
- if (_kbhit())
- {
- auto key{ _getch() };
- if (key == 'a' or key == 'A') {
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1) {
- gotoxy(startPositionX + lenghtBlock - 1, startPositionY); cout << " "; startPositionX--;
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1) {
- gotoxy(startPositionX + lenghtBlock - 1, startPositionY); cout << " "; startPositionX--;
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1) { gotoxy(startPositionX + lenghtBlock - 1, startPositionY); cout << " "; startPositionX--; }
- } gotoxy(startPositionX, startPositionY); cout << board;
- };
- };
- if (key == 'd' or key == 'D') {
- if (startPositionX + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1) {
- gotoxy(startPositionX, startPositionY); cout << " "; startPositionX++;
- if (startPositionX + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1) {
- gotoxy(startPositionX, startPositionY); cout << " "; startPositionX++;
- if (startPositionX + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1) { gotoxy(startPositionX, startPositionY); cout << " "; startPositionX++; }
- } gotoxy(startPositionX, startPositionY); cout << board;
- };
- };
- } //Control game
- Sleep(300);
- int previousX = startPositionX;
- int previousY = startPositionY;
- gotoxy(previousX, previousY);
- for (int i = 0; i < lenghtBlock; i++)
- {
- cout << " ";
- }
- if (startPositionY == maxY - 1)
- {
- for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
- {
- Pole[startPositionY][i] = 1;
- }
- gotoxy(startPositionX, startPositionY);
- cout << "---";
- goto end;
- }
- else if (((Pole[startPositionY + 1][startPositionX] == 1) or (Pole[startPositionY + 1][startPositionX + 1] == 1) or (Pole[startPositionY + 1][startPositionX + 2] == 1)))
- {
- for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
- {
- Pole[startPositionY][i] = 1;
- }
- gotoxy(startPositionX, startPositionY);
- cout << "---";
- goto end;
- }
- }
- else if (randBlock == 3)
- {
- int startPositionX2 = startPositionX + 1;
- int startPositionY2 = startPositionY + 1;
- print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- if (_kbhit())
- {
- auto key{ _getch() };
- if (key == 'a' or key == 'A') {
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY2][startPositionX2 - 1] != 1) {
- clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- startPositionX--; startPositionX2--;
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY2][startPositionX2 - 1] != 1) {
- clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- startPositionX--; startPositionX2--;
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY2][startPositionX2 - 1] != 1) {
- clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- startPositionX--; startPositionX2--;
- }
- } print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- };
- };
- if (key == 'd' or key == 'D') {
- if (startPositionX2 + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1) {
- clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- startPositionX++; startPositionX2++;
- if (startPositionX2 + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1) {
- clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- startPositionX++; startPositionX2++;
- if (startPositionX2 + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1) {
- clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- startPositionX++; startPositionX2++;
- }
- } print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- };
- };
- } //Control game
- Sleep(300);
- int previousX = startPositionX;
- int previousY = startPositionY;
- int previousX2 = startPositionX2;
- int previousY2 = startPositionY2;
- if (startPositionY2 == maxY - 1)
- {
- for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
- {
- Pole[startPositionY][i] = 1;
- }
- for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
- {
- Pole[startPositionY2][i] = 1;
- }
- print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- goto end;
- }
- 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)
- {
- for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
- {
- Pole[startPositionY][i] = 1;
- }
- for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
- {
- Pole[startPositionY2][i] = 1;
- }
- print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- goto end;
- }
- startPositionY++;
- startPositionY2++;
- clear.Block3(lenghtBlock, previousX, previousY, previousX2, previousY2);
- if (startPositionY2 == maxY - 1)
- {
- for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
- {
- Pole[startPositionY][i] = 1;
- }
- for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
- {
- Pole[startPositionY2][i] = 1;
- }
- print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- goto end;
- }
- 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)
- {
- for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
- {
- Pole[startPositionY][i] = 1;
- }
- for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
- {
- Pole[startPositionY2][i] = 1;
- }
- print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- goto end;
- }
- }
- else if (randBlock == 4)
- {
- int startPositionX2 = startPositionX + 1;
- int startPositionY2 = startPositionY + 1;
- print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- if (_kbhit())
- {
- auto key{ _getch() };
- if (key == 'a' or key == 'A') {
- 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) {
- clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- startPositionX--; startPositionX2--;
- 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) {
- clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- startPositionX--; startPositionX2--;
- 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) {
- clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- startPositionX--; startPositionX2--;
- }
- } print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- };
- };
- if (key == 'd' or key == 'D') {
- 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) {
- clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- startPositionX++; startPositionX2++;
- 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) {
- clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- startPositionX++; startPositionX2++;
- 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) {
- clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- startPositionX++; startPositionX2++;
- }
- } print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- };
- };
- } //Control game
- Sleep(300);
- int previousX = startPositionX;
- int previousY = startPositionY;
- int previousX2 = startPositionX2;
- int previousY2 = startPositionY2;
- if (startPositionY + lenghtBlock == maxY or startPositionY2 + lenghtBlock == maxY)
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
- {
- Pole[i][startPositionX2] = 1;
- }
- print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- goto end;
- }
- else if (((Pole[startPositionY + lenghtBlock][startPositionX] == 1) or (Pole[startPositionY2 + lenghtBlock][startPositionX2] == 1)))
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
- {
- Pole[i][startPositionX2] = 1;
- }
- print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- goto end;
- }
- startPositionY++;
- startPositionY2++;
- clear.Block4(lenghtBlock, previousX, previousY, previousX2, previousY2);
- if (startPositionY + lenghtBlock == maxY or startPositionY2 + lenghtBlock == maxY)
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
- {
- Pole[i][startPositionX2] = 1;
- }
- print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- goto end;
- }
- else if (((Pole[startPositionY + lenghtBlock][startPositionX] == 1) or (Pole[startPositionY2 + lenghtBlock][startPositionX2] == 1)))
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
- {
- Pole[i][startPositionX2] = 1;
- }
- print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionX2, startPositionY2);
- goto end;
- }
- }
- }
- end:;
- for (int x = 0; x < maxX; x++)
- {
- if (Pole[minY][x] == 1)
- {
- goto endProg;
- }
- }
- for (int y = 1; y < maxY; y++)
- {
- bool check = true;
- for (int x = 1; x < maxX; x++)
- {
- if (Pole[y][x] == 1)
- {
- continue;
- }
- else
- {
- check = false;
- goto endCycle;
- }
- }
- endCycle:;
- if (check == true)
- {
- for (int x = 1; x < maxX; x++)
- {
- Pole[y][x] = 0;
- gotoxy(x, y);
- cout << "-";
- }
- Sleep(600);
- for (int x = 1; x < maxX; x++)
- {
- gotoxy(x, y);
- cout << " ";
- }
- scorePlayer += 50;
- gotoxy(positionScoreX, positionScoreY);
- cout << "Score = " << scorePlayer;
- }
- }
- }
- endProg:;
- gotoxy(50, maxY-5);
- cout << "Game over. Score = " << scorePlayer;
- Sleep(2000);
- clearPole();
- }
- void tetrisFor2Users(int minX2, int minY2)
- {
- Prints print;
- Clears clear;
- cout << CSI << hideCursor;
- clearPole();
- srand(time(NULL));
- printPole(minX, minY, minX2, minY2, true);
- int scorePlayer = 0;
- int scorePlayer2 = 0;
- int positionScoreX = maxX + 5;
- int positionScoreY = 1;
- int positionScoreX2 = maxX + minX2 + 5;
- int positionScoreY2 = 1;
- int** Pole = new int* [maxY];
- int* bigArr = new int[maxY * (maxX + minX2)];
- for (int i = 0; i < maxY; i++)
- {
- Pole[i] = bigArr + i * (maxX + minX2);
- }
- int lenghtBlock = 3;
- gotoxy(positionScoreX, positionScoreY);
- cout << "Score = " << scorePlayer;
- gotoxy(positionScoreX2, positionScoreY2);
- cout << "Score = " << scorePlayer2;
- /*
- //Block 1 |
- // |
- // |
- //Block 2 ---
- //Block 3 ---
- // ---
- //Block 4 |
- // | |
- // | |
- // |
- */
- int check = 1;
- while (true)
- {
- int randBlock = rand() % 4 + 1;
- int startPositionX = maxX / 2;
- int startPositionY = 1;
- int startPositionX2 = minX2 + 5;
- int startPositionY2 = 1;
- check *= (-1);
- while (true)
- {
- if (randBlock == 1)
- {
- if (check == 1)
- {
- print.Block1(lenghtBlock, startPositionX, startPositionY);
- if (_kbhit())
- {
- auto key{ _getch() };
- if (key == 'a' or key == 'A') {
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX, startPositionY);
- startPositionX--;
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX, startPositionY);
- startPositionX--;
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionY + 1][startPositionX - 1] != 1 and Pole[startPositionY + 2][startPositionX - 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX, startPositionY);
- startPositionX--;
- }
- } print.Block1(lenghtBlock, startPositionX, startPositionY);
- };
- };
- if (key == 'd' or key == 'D') {
- if (startPositionX < maxX - 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY + 1][startPositionX + 1] != 1 and Pole[startPositionY + 2][startPositionX + 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX, startPositionY);
- startPositionX++;
- if (startPositionX < maxX - 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY + 1][startPositionX + 1] != 1 and Pole[startPositionY + 2][startPositionX + 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX, startPositionY);
- startPositionX++;
- if (startPositionX < maxX - 1 and Pole[startPositionY][startPositionX + 1] != 1 and Pole[startPositionY + 1][startPositionX + 1] != 1 and Pole[startPositionY + 2][startPositionX + 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX, startPositionY);
- startPositionX++;
- }
- } print.Block1(lenghtBlock, startPositionX, startPositionY);
- };
- };
- } //Control game
- Sleep(300);
- int previousX = startPositionX;
- int previousY = startPositionY;
- if (startPositionY + lenghtBlock == maxY)
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- print.Block1(lenghtBlock, startPositionX, startPositionY);
- goto end;
- }
- else if (Pole[startPositionY + lenghtBlock][startPositionX] == 1)
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- print.Block1(lenghtBlock, startPositionX, startPositionY);
- goto end;
- }
- startPositionY++;
- clear.Block1(lenghtBlock, previousX, previousY);
- if (startPositionY + lenghtBlock == maxY)
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- print.Block1(lenghtBlock, startPositionX, startPositionY);
- goto end;
- }
- else if (Pole[startPositionY + lenghtBlock][startPositionX] == 1)
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- print.Block1(lenghtBlock, startPositionX, startPositionY);
- goto end;
- }
- }
- else
- {
- print.Block1(lenghtBlock, startPositionX2, startPositionY2);
- if (_kbhit())
- {
- auto key{ _getch() };
- if (key == 'j' or key == 'J') {
- if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 - 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX2, startPositionY2);
- startPositionX2--;
- if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 - 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX2, startPositionY2);
- startPositionX2--;
- if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 1][startPositionX2 - 1] != 1 and Pole[startPositionY2 + 2][startPositionX2 - 1] != 1) {
- clear.Block1(lenghtBlock, startPositionX2, startPositionY2);
- startPositionX2--;
- }
- } print.Block1(lenghtBlock, startPositionX2, startPositionY2);
- };
- };
- if (key == 'l' or key == 'L') {
- 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) {
- clear.Block1(lenghtBlock, startPositionX2, startPositionY2);
- startPositionX2++;
- 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) {
- clear.Block1(lenghtBlock, startPositionX2, startPositionY2);
- startPositionX2++;
- 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) {
- clear.Block1(lenghtBlock, startPositionX2, startPositionY2);
- startPositionX2++;
- }
- } print.Block1(lenghtBlock, startPositionX2, startPositionY2);
- };
- };
- } //Control game
- Sleep(300);
- int previousX = startPositionX2;
- int previousY = startPositionY2;
- if (startPositionY2 + lenghtBlock == maxY)
- {
- for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
- {
- Pole[i][startPositionX2] = 1;
- }
- print.Block1(lenghtBlock, startPositionX2, startPositionY2);
- goto end;
- }
- else if (Pole[startPositionY2 + lenghtBlock][startPositionX2] == 1)
- {
- for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
- {
- Pole[i][startPositionX2] = 1;
- }
- print.Block1(lenghtBlock, startPositionX2, startPositionY2);
- goto end;
- }
- startPositionY2++;
- clear.Block1(lenghtBlock, previousX, previousY);
- if (startPositionY2 + lenghtBlock == maxY)
- {
- for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
- {
- Pole[i][startPositionX2] = 1;
- }
- print.Block1(lenghtBlock, startPositionX2, startPositionY2);
- goto end;
- }
- else if (Pole[startPositionY2 + lenghtBlock][startPositionX2] == 1)
- {
- for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
- {
- Pole[i][startPositionX2] = 1;
- }
- print.Block1(lenghtBlock, startPositionX2, startPositionY2);
- goto end;
- }
- }
- }
- else if (randBlock == 2)
- {
- if (check == 1)
- {
- char* board = new char[lenghtBlock];
- for (int i = 0; i < lenghtBlock; i++)
- {
- board[i] = '-';
- }
- board[lenghtBlock] = '\0';
- gotoxy(startPositionX, startPositionY += 1);
- cout << board;
- if (_kbhit())
- {
- auto key{ _getch() };
- if (key == 'a' or key == 'A') {
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1) {
- gotoxy(startPositionX + lenghtBlock - 1, startPositionY); cout << " "; startPositionX--;
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1) {
- gotoxy(startPositionX + lenghtBlock - 1, startPositionY); cout << " "; startPositionX--;
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1) { gotoxy(startPositionX + lenghtBlock - 1, startPositionY); cout << " "; startPositionX--; }
- } gotoxy(startPositionX, startPositionY); cout << board;
- };
- };
- if (key == 'd' or key == 'D') {
- if (startPositionX + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1) {
- gotoxy(startPositionX, startPositionY); cout << " "; startPositionX++;
- if (startPositionX + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1) {
- gotoxy(startPositionX, startPositionY); cout << " "; startPositionX++;
- if (startPositionX + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1) { gotoxy(startPositionX, startPositionY); cout << " "; startPositionX++; }
- } gotoxy(startPositionX, startPositionY); cout << board;
- };
- };
- } //Control game
- Sleep(300);
- int previousX = startPositionX;
- int previousY = startPositionY;
- gotoxy(previousX, previousY);
- for (int i = 0; i < lenghtBlock; i++)
- {
- cout << " ";
- }
- if (startPositionY == maxY - 1)
- {
- for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
- {
- Pole[startPositionY][i] = 1;
- }
- gotoxy(startPositionX, startPositionY);
- cout << "---";
- goto end;
- }
- else if (((Pole[startPositionY + 1][startPositionX] == 1) or (Pole[startPositionY + 1][startPositionX + 1] == 1) or (Pole[startPositionY + 1][startPositionX + 2] == 1)))
- {
- for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
- {
- Pole[startPositionY][i] = 1;
- }
- gotoxy(startPositionX, startPositionY);
- cout << "---";
- goto end;
- }
- }
- else
- {
- char* board = new char[lenghtBlock];
- for (int i = 0; i < lenghtBlock; i++)
- {
- board[i] = '-';
- }
- board[lenghtBlock] = '\0';
- gotoxy(startPositionX2, startPositionY2 += 1);
- cout << board;
- if (_kbhit())
- {
- auto key{ _getch() };
- if (key == 'j' or key == 'J') {
- if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1) {
- gotoxy(startPositionX2 + lenghtBlock - 1, startPositionY2); cout << " "; startPositionX2--;
- if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1) {
- gotoxy(startPositionX2 + lenghtBlock - 1, startPositionY2); cout << " "; startPositionX2--;
- if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1) { gotoxy(startPositionX2 + lenghtBlock - 1, startPositionY2); cout << " "; startPositionX2--; }
- } gotoxy(startPositionX2, startPositionY2); cout << board;
- };
- };
- if (key == 'l' or key == 'L') {
- if (startPositionX2 + lenghtBlock < maxX + minX2 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1) {
- gotoxy(startPositionX2, startPositionY2); cout << " "; startPositionX2++;
- if (startPositionX2 + lenghtBlock < maxX + minX2 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1) {
- gotoxy(startPositionX2, startPositionY2); cout << " "; startPositionX2++;
- if (startPositionX2 + lenghtBlock < maxX + minX2 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1) { gotoxy(startPositionX2, startPositionY2); cout << " "; startPositionX2++; }
- } gotoxy(startPositionX2, startPositionY2); cout << board;
- };
- };
- } //Control game
- Sleep(300);
- int previousX = startPositionX2;
- int previousY = startPositionY2;
- gotoxy(previousX, previousY);
- for (int i = 0; i < lenghtBlock; i++)
- {
- cout << " ";
- }
- if (startPositionY2 == maxY - 1)
- {
- for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
- {
- Pole[startPositionY2][i] = 1;
- }
- gotoxy(startPositionX2, startPositionY2);
- cout << "---";
- goto end;
- }
- else if (((Pole[startPositionY2 + 1][startPositionX2] == 1) or (Pole[startPositionY2 + 1][startPositionX2 + 1] == 1) or (Pole[startPositionY2 + 1][startPositionX2 + 2] == 1)))
- {
- for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
- {
- Pole[startPositionY2][i] = 1;
- }
- gotoxy(startPositionX2, startPositionY2);
- cout << "---";
- goto end;
- }
- }
- }
- else if (randBlock == 3)
- {
- if (check == 1)
- {
- int startPositionXPl2 = startPositionX + 1;
- int startPositionYPl2 = startPositionY + 1;
- print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- if (_kbhit())
- {
- auto key{ _getch() };
- if (key == 'a' or key == 'A') {
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionYPl2][startPositionXPl2 - 1] != 1) {
- clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- startPositionX--; startPositionXPl2--;
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionYPl2][startPositionXPl2 - 1] != 1) {
- clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- startPositionX--; startPositionXPl2--;
- if (startPositionX > minX and Pole[startPositionY][startPositionX - 1] != 1 and Pole[startPositionYPl2][startPositionXPl2 - 1] != 1) {
- clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- startPositionX--; startPositionXPl2--;
- }
- } print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- };
- };
- if (key == 'd' or key == 'D') {
- if (startPositionXPl2 + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1 and Pole[startPositionYPl2][startPositionXPl2 + lenghtBlock] != 1) {
- clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- startPositionX++; startPositionXPl2++;
- if (startPositionXPl2 + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1 and Pole[startPositionYPl2][startPositionXPl2 + lenghtBlock] != 1) {
- clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- startPositionX++; startPositionXPl2++;
- if (startPositionXPl2 + lenghtBlock < maxX and Pole[startPositionY][startPositionX + lenghtBlock] != 1 and Pole[startPositionYPl2][startPositionXPl2 + lenghtBlock] != 1) {
- clear.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- startPositionX++; startPositionXPl2++;
- }
- } print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- };
- };
- } //Control game
- Sleep(300);
- int previousX = startPositionX;
- int previousY = startPositionY;
- int previousX2 = startPositionXPl2;
- int previousY2 = startPositionYPl2;
- if (startPositionYPl2 == maxY - 1)
- {
- for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
- {
- Pole[startPositionY][i] = 1;
- }
- for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
- {
- Pole[startPositionYPl2][i] = 1;
- }
- print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- 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)
- {
- for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
- {
- Pole[startPositionY][i] = 1;
- }
- for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
- {
- Pole[startPositionYPl2][i] = 1;
- }
- print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- startPositionY++;
- startPositionYPl2++;
- clear.Block3(lenghtBlock, previousX, previousY, previousX2, previousY2);
- if (startPositionYPl2 == maxY - 1)
- {
- for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
- {
- Pole[startPositionY][i] = 1;
- }
- for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
- {
- Pole[startPositionYPl2][i] = 1;
- }
- print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- 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)
- {
- for (int i = startPositionX; i < startPositionX + lenghtBlock; i++)
- {
- Pole[startPositionY][i] = 1;
- }
- for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
- {
- Pole[startPositionYPl2][i] = 1;
- }
- print.Block3(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- }
- else
- {
- int startPositionXPl2 = startPositionX2 + 1;
- int startPositionYPl2 = startPositionY2 + 1;
- print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- if (_kbhit())
- {
- auto key{ _getch() };
- if (key == 'j' or key == 'J') {
- if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionYPl2][startPositionXPl2 - 1] != 1) {
- clear.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- startPositionX2--; startPositionXPl2--;
- if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionYPl2][startPositionXPl2 - 1] != 1) {
- clear.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- startPositionX2--; startPositionXPl2--;
- if (startPositionX2 > minX2 and Pole[startPositionY2][startPositionX2 - 1] != 1 and Pole[startPositionYPl2][startPositionXPl2 - 1] != 1) {
- clear.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- startPositionX2--; startPositionXPl2--;
- }
- } print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- };
- };
- if (key == 'l' or key == 'L') {
- if (startPositionXPl2 + lenghtBlock < maxX + minX2 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1 and Pole[startPositionYPl2][startPositionXPl2 + lenghtBlock] != 1) {
- clear.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- startPositionX2++; startPositionXPl2++;
- if (startPositionXPl2 + lenghtBlock < maxX + minX2 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1 and Pole[startPositionYPl2][startPositionXPl2 + lenghtBlock] != 1) {
- clear.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- startPositionX2++; startPositionXPl2++;
- if (startPositionXPl2 + lenghtBlock < maxX + minX2 and Pole[startPositionY2][startPositionX2 + lenghtBlock] != 1 and Pole[startPositionYPl2][startPositionXPl2 + lenghtBlock] != 1) {
- clear.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- startPositionX2++; startPositionXPl2++;
- }
- } print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- };
- };
- } //Control game
- Sleep(300);
- int previousX = startPositionX2;
- int previousY = startPositionY2;
- int previousX2 = startPositionXPl2;
- int previousY2 = startPositionYPl2;
- if (startPositionYPl2 == maxY - 1)
- {
- for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
- {
- Pole[startPositionY2][i] = 1;
- }
- for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
- {
- Pole[startPositionYPl2][i] = 1;
- }
- print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- 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)
- {
- for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
- {
- Pole[startPositionY2][i] = 1;
- }
- for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
- {
- Pole[startPositionYPl2][i] = 1;
- }
- print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- startPositionY2++;
- startPositionYPl2++;
- clear.Block3(lenghtBlock, previousX, previousY, previousX2, previousY2);
- if (startPositionYPl2 == maxY - 1)
- {
- for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
- {
- Pole[startPositionY2][i] = 1;
- }
- for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
- {
- Pole[startPositionYPl2][i] = 1;
- }
- print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- 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)
- {
- for (int i = startPositionX2; i < startPositionX2 + lenghtBlock; i++)
- {
- Pole[startPositionY2][i] = 1;
- }
- for (int i = startPositionXPl2; i < startPositionXPl2 + lenghtBlock; i++)
- {
- Pole[startPositionYPl2][i] = 1;
- }
- print.Block3(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- }
- }
- else if (randBlock == 4)
- {
- if (check == 1)
- {
- int startPositionXPl2 = startPositionX + 1;
- int startPositionYPl2 = startPositionY + 1;
- print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- if (_kbhit())
- {
- auto key{ _getch() };
- if (key == 'a' or key == 'A') {
- 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) {
- clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- startPositionX--; startPositionXPl2--;
- 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) {
- clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- startPositionX--; startPositionXPl2--;
- 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) {
- clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- startPositionX--; startPositionXPl2--;
- }
- } print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- };
- };
- if (key == 'd' or key == 'D') {
- 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) {
- clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- startPositionX++; startPositionXPl2++;
- 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) {
- clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- startPositionX++; startPositionXPl2++;
- 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) {
- clear.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- startPositionX++; startPositionXPl2++;
- }
- } print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- };
- };
- } //Control game
- Sleep(300);
- int previousX = startPositionX;
- int previousY = startPositionY;
- int previousX2 = startPositionXPl2;
- int previousY2 = startPositionYPl2;
- if (startPositionY + lenghtBlock == maxY or startPositionYPl2 + lenghtBlock == maxY)
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
- {
- Pole[i][startPositionXPl2] = 1;
- }
- print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- else if (((Pole[startPositionY + lenghtBlock][startPositionX] == 1) or (Pole[startPositionYPl2 + lenghtBlock][startPositionXPl2] == 1)))
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
- {
- Pole[i][startPositionXPl2] = 1;
- }
- print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- startPositionY++;
- startPositionYPl2++;
- clear.Block4(lenghtBlock, previousX, previousY, previousX2, previousY2);
- if (startPositionY + lenghtBlock == maxY or startPositionYPl2 + lenghtBlock == maxY)
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
- {
- Pole[i][startPositionXPl2] = 1;
- }
- print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- else if (((Pole[startPositionY + lenghtBlock][startPositionX] == 1) or (Pole[startPositionYPl2 + lenghtBlock][startPositionXPl2] == 1)))
- {
- for (int i = startPositionY; i < startPositionY + lenghtBlock; i++)
- {
- Pole[i][startPositionX] = 1;
- }
- for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
- {
- Pole[i][startPositionXPl2] = 1;
- }
- print.Block4(lenghtBlock, startPositionX, startPositionY, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- }
- else
- {
- int startPositionXPl2 = startPositionX2 + 1;
- int startPositionYPl2 = startPositionY2 + 1;
- print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- if (_kbhit())
- {
- auto key{ _getch() };
- if (key == 'j' or key == 'J') {
- 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) {
- clear.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- startPositionX2--; startPositionXPl2--;
- 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) {
- clear.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- startPositionX2--; startPositionXPl2--;
- 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) {
- clear.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- startPositionX2--; startPositionXPl2--;
- }
- } print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- };
- };
- //Here
- if (key == 'l' or key == 'L') {
- 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) {
- clear.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- startPositionX2++; startPositionXPl2++;
- 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) {
- clear.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- startPositionX2++; startPositionXPl2++;
- 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) {
- clear.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- startPositionX2++; startPositionXPl2++;
- }
- } print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- };
- };
- } //Control game
- Sleep(300);
- int previousX = startPositionX2;
- int previousY = startPositionY2;
- int previousX2 = startPositionXPl2;
- int previousY2 = startPositionYPl2;
- if (startPositionY2 + lenghtBlock == maxY or startPositionYPl2 + lenghtBlock == maxY)
- {
- for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
- {
- Pole[i][startPositionX2] = 1;
- }
- for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
- {
- Pole[i][startPositionXPl2] = 1;
- }
- print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- else if (((Pole[startPositionY2 + lenghtBlock][startPositionX2] == 1) or (Pole[startPositionYPl2 + lenghtBlock][startPositionXPl2] == 1)))
- {
- for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
- {
- Pole[i][startPositionX2] = 1;
- }
- for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
- {
- Pole[i][startPositionXPl2] = 1;
- }
- print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- startPositionY2++;
- startPositionYPl2++;
- clear.Block4(lenghtBlock, previousX, previousY, previousX2, previousY2);
- if (startPositionY2 + lenghtBlock == maxY or startPositionYPl2 + lenghtBlock == maxY)
- {
- for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
- {
- Pole[i][startPositionX2] = 1;
- }
- for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
- {
- Pole[i][startPositionXPl2] = 1;
- }
- print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- else if (((Pole[startPositionY2 + lenghtBlock][startPositionX2] == 1) or (Pole[startPositionYPl2 + lenghtBlock][startPositionXPl2] == 1)))
- {
- for (int i = startPositionY2; i < startPositionY2 + lenghtBlock; i++)
- {
- Pole[i][startPositionX2] = 1;
- }
- for (int i = startPositionYPl2; i < startPositionYPl2 + lenghtBlock; i++)
- {
- Pole[i][startPositionXPl2] = 1;
- }
- print.Block4(lenghtBlock, startPositionX2, startPositionY2, startPositionXPl2, startPositionYPl2);
- goto end;
- }
- }
- }
- }
- end:;
- for (int x = minX - 1; x < maxX; x++)
- {
- if (Pole[minY][x] == 1)
- {
- goto endProg;
- }
- }
- for (int x = minX2 - 1; x < maxX + minX2; x++)
- {
- if (Pole[minY2][x] == 1)
- {
- goto endProg;
- }
- }
- for (int y = 1; y < maxY; y++)
- {
- bool check1 = true;
- bool check2 = true;
- for (int x = minX; x < maxX; x++)
- {
- if (Pole[y][x] == 1)
- {
- continue;
- }
- else
- {
- check1 = false;
- //goto endCycle;
- }
- }
- for (int x = minX2; x < maxX + minX2; x++)
- {
- if (Pole[y][x] == 1)
- {
- continue;
- }
- else
- {
- check2 = false;
- //goto endCycle;
- }
- }
- //endCycle:;
- if (check1 == true)
- {
- for (int x = 1; x < maxX; x++)
- {
- Pole[y][x] = 0;
- gotoxy(x, y);
- cout << "-";
- }
- Sleep(600);
- for (int x = 1; x < maxX; x++)
- {
- gotoxy(x, y);
- cout << " ";
- }
- scorePlayer += 50;
- gotoxy(positionScoreX, positionScoreY);
- cout << "Score = " << scorePlayer;
- }
- if (check2 == true)
- {
- for (int x = minX2; x < maxX + minX2; x++)
- {
- Pole[y][x] = 0;
- gotoxy(x, y);
- cout << "-";
- }
- Sleep(600);
- for (int x = minX2; x < maxX + minX2; x++)
- {
- gotoxy(x, y);
- cout << " ";
- }
- scorePlayer2 += 50;
- gotoxy(positionScoreX2, positionScoreY2);
- cout << "Score = " << scorePlayer2;
- }
- }
- }
- endProg:;
- gotoxy(50, maxY +1);
- if (scorePlayer == scorePlayer2)
- {
- cout << "Nobody win";
- }
- else if (scorePlayer > scorePlayer2)
- {
- cout << "Player 1 win. Score = " << scorePlayer;
- }
- else {
- cout << "Player 2 win. Score = " << scorePlayer2;
- }
- Sleep(2000);
- clearPole();
- }
- void main()
- {
- int choice;
- int minX2{ maxX + 20 }, minY2{ 1 };
- do {
- menu();
- cin >> choice;
- if (choice == 1)
- {
- tetris();
- clearPole();
- }
- else if (choice == 2)
- {
- tetrisFor2Users(minX2, minY2);
- clearPole();
- }
- else if (choice == 3)
- {
- cout << "Enter maxX = ";
- cin >> maxX;
- cout << "Complete!";
- Sleep(800);
- clearPole();
- }
- else if (choice == 4)
- {
- cout << "Enter maxY = ";
- cin >> maxY;
- cout << "Complete!";
- Sleep(800);
- clearPole();
- }
- else if (choice == 5)
- {
- cout << "Bye";
- break;
- }
- } while (choice != 5);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement