Untitled
unknown
plain_text
3 years ago
5.5 kB
12
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...