Untitled
unknown
plain_text
2 years ago
5.5 kB
8
Indexable
#include <iostream> #include "windows.h" #include "random" using namespace std; int main() { int q1; char q2;// переменные вопросов int f;// флаг для рандома и добавления чисел на поле // q1 - флаг начала игры или вывода правил // q2 - вводится действие во время игры int a[4][4] = { 0,0,2,0,//0 2,2,2,2,//1 2,0,2,0,//2 2,2,2,0 };//3 //поле игры setlocale(LC_ALL, "Russian"); cout << "Здравствуйте, это игра 2048, если вы хотите узнать правила то напишите - 1, если вы уже их знаете и хотите приступить к игре, то напишите - 2." << endl; cin >> q1;//вопрос о правилах if (q1 == 1) { // правила cout << "Создатель данной игры представляет вам поле, разделенное на 15 клеточек, после каждого хода на поле появляется цифра 2 или 4. Цель игры - это собрать на поле ячейку с цифрой 2048. Но что нужно делать, чтобы выиграть ?" << endl; cout << "Давайте представим, что в начале игры у нас на поле две заполненные ячейки, на каждой - цифра 2. Чтобы эти цифры сдвинуть, нужно нажать на кнопку по экрану вниз, вверх, влево или вправо.В зависимости от того, в какую сторону вы нажмете кнопку, туда и сдвинутся ячейки с цифрами.Если две ваши ячейки с номиналом 2 соприкоснутся и объединятся, то у вас получится одна ячейка с цифрой 4. Таким же образом соединяются и ячейки номиналом 4, образуя клетку с цифрой 8. Теперь вы видите, что ответ вопрос о том, как играть в '2048', не такой уж сложный." << endl; cout << "Если у вас получилось объединить ячейки так, чтобы получилась цифра 2048, -поздравляю, вы выиграли.А если на поле не осталось ни одной свободной клетки и невозможно объединить никакие из ячеек, то, к сожалению, вы проиграли." << endl; cout << "Если вы хотите приступить к игре, то напишите - 2." << endl; cin >> q1;// повторный вопрос } int i = 0, j = 0, ii = 0;//для циклов if (q1 == 2) { while (true) { system("cls"); for (int i = 0; i < 4; i++) //вывод поля { for (int j = 0; j < 4; j++) cout << a[i][j] << " "; cout << endl; cout << endl; } cout << "Выберете функцию:" << endl << "w - Сдвиг вверх" << endl << "s - Сдвиг вниз" << endl << "d - Сдвиг вправо" << endl << "a - Сдвиг влево" << endl; cin >> q2; if (q2 == 'w') { // сдвиг вверх дебильный for (ii = 0; ii < 2; ii++) { for (i = 3; i > 0; i--) { for (j = 0; j < 4; j++) { if (a[i][j] == a[i - 1][j] && a[i][j] != 0) { a[i - 1][j] *= 2; a[i][j] = 0; } if (a[i][j] != 0 && a[i - 1][j] == 0) { a[i - 1][j] = a[i][j]; a[i][j] = 0; } } } } } if (q2 == 's') { // сдвиг вниз легкатня for (ii = 0; ii < 2; ii++) { for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { if (a[i][j] == a[i + 1][j] && a[i][j] != 0) { a[i + 1][j] *= 2; a[i][j] = 0; } if (a[i][j] != 0 && a[i + 1][j] == 0) { a[i + 1][j] = a[i][j]; a[i][j] = 0; } } } } } if (q2 == 'd') { // сдвиг вправо легкатня for (ii = 0; ii < 2; ii++) { for (i = 0; i < 4; i++) { for (j = 0; j < 3; j++) { if (a[i][j] == a[i][j + 1] && a[i][j] != 0) { a[i][j + 1] *= 2; a[i][j] = 0; } if (a[i][j] != 0 && a[i][j + 1] == 0) { a[i][j + 1] = a[i][j]; a[i][j] = 0; } } } } } if (q2 == 'a') { // сдвиг влево сложнота for (ii = 0; ii < 2; ii++) { for (i = 0; i < 4; i++) { for (j = 3; j > 0; j--) { if (a[i][j] == a[i][j - 1] && a[i][j] != 0) { a[i][j - 1] *= 2; a[i][j] = 0; } if (a[i][j] != 0 && a[i][j - 1] == 0) { a[i][j - 1] = a[i][j]; a[i][j] = 0; } } } } } Sleep(500); int f = 0; int i1, j1;// для записи рандомных координат while (f != 1) { i1 = rand() % 3 + 0; j1 = rand() % 3 + 0; if (a[i1][j1] == 0) { if (i1 + j1 % 2 == 1) a[i1][j1] = 4; else a[i1][j1] = 2; f = 1; } } Sleep(500); } } }
Editor is loading...