// rehcfx@cmd.pervak.kill.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//
#include "pch.h"
#include <iostream>
#include <conio.h>
#include <fstream>
struct st // Описываем трехсвязный список
{
int inf; // Место для элемента
st *right; // узел для связки правосторонних элементов
st *down; // узел для связки нижних элементов
};
st *s, *t, *p, *k; // обьявляем указатели
st *p1, *t1;
using namespace std;
int main()
{
int j=0;
setlocale(0, "RUS");
ofstream fin; // открываем поток для записи
fin.open("C:\\Users\\YaRayMer\\Desktop\\Ezzy\\INFO\\output.txt"); // открываем текстовый файл
cout << "Странник->Здравствуй,сталкер, вижу судьба тебя тоже не обогатила..." << endl;
cout << "Странник->Сейчас ты находишься в зоне -территория отчуждения с повышенной аномальной активностью" << endl;
cout << "_____________________________________________________________" << endl;
cout << "___________________$$$$$$$$$$$$$_____________________________" << endl;
cout << " _____________$$$$$$$$$$$$$$$$$$$$$$$________________________" << endl;
cout << " ___________$$$___$$$$$$$$$$$$$$$$___$$b_____________________" << endl;
cout << "_________$$$______$$$$$$$$$$$$$$______$$b____________________" << endl;
cout << "_______$$$_________$$$$$$$$$$$$_________$$b__________________" << endl;
cout << "______$$$____________$$$$$$$$$____________$b_________________" << endl;
cout << "_____$$$______________$$$$$$$______________$$________________" << endl;
cout << "____$$$________________$$$$$________________$$_______________" << endl;
cout << "____$$______________________________________$$$______________" << endl;
cout << "____$$_______________________________________$$______________" << endl;
cout << "____$$$$$$$$$$$$$$$$$_________$$$$$$$$$$$$$$$$$______________" << endl;
cout << "____$$$$$$$$$$$$$$$$$$_______$$$$$$$$$$$$$$$$$7______________" << endl;
cout << "_____$$$$$$$$$$$$$$$$$_______$$$$$$$$$$$$$$$$$_______________" << endl;
cout << "______$$$$$$$$$$$$$$$_________$$$$$$$$$$$$$$$________________" << endl;
cout << "_______$$$$$$$$$$$$$___________$$$$$$$$$$$$$_________________" << endl;
cout << "________$$$$$$$$$$$_____________$$$$$$$$$$$__________________" << endl;
cout << "__________$$$$$$$$_______________$$$$$$$$____________________" << endl;
cout << "____________$$$$$_________________$$$$$______________________" << endl;
cout << "_______________$$$$$$$_______$$$$$$$_________________________" << endl;
cout << "___________________$$$$$$$$$$$$$_____________________________" << endl;
cout << "_____________________________________________________________" << endl;
cout << "Странник->Никому не удавалось выбраться от сюда" << endl;
cout << "Странник->Хочешь скоротать свои оставшиеся деньки и сыграть со мной в игру?" << endl;
cout << "Странник->Но сначало посмотри хабар...." << endl;
while (j != 2) // разветление для вывода сведения о разработчике и основной программы
{
cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
cout << "1)Информация о страннике(свед.о разработчике)" << endl;
cout << "2)Сталкер->Кого делать то, погнали играть!" << endl;
cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
cout << "Ваш выбор->";
cin >> j;
if (j == 1) // цикл для вывода сведения о разработчике
{
cout << "" << endl;
cout << " " << endl;
cout << "\t\t Информация о страннике" << endl;
cout << "\t\t Сведение о разбработчике:" << endl;
cout << "\tЧулунов Илья Игоревич студент 1-ого курса СИБГУТИ " << endl;
cout << "\tФакультета АЭС группы АП-83" << endl;
cout << "\tКонтакты:chulunov12345@mail.ru" << endl;
cout <<""<< endl;
cout << "" << endl;
}
if (j == 2) // вход в главную программу при вводе 2
{
int a, n; // элементы ввода
char y, c; // элементы управления
cout << "Странник->Обьясняю правила, слушай внимательно!" << endl;
cout << "Странник->Я даю тебе клавиатуру и ты должен будешь ввести поэлеметно, ПОЭЛЕМЕНТНО, последовательность чисел!" << endl;
cout << "Странник->Ввод будет продолжаться до тех пора , пока не введешь 0." << endl;
cout << "Странник->Инструкция управление от братков осталась:" << endl;
cout << "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" << endl;
cout << "& Здравсвуйте, вы можете найти в самой правой части клавиатуры 5 циферок &" << endl;
cout << "& Сразу можно легко понять, куда стрелка направлена - туда и пойдешь &" << endl;
cout << "& Шаг вправо \t--->\t6 &" << endl;
cout << "& Шаг вниз \t--->\t2 &" << endl;
cout << "& Шаг влево \t---> \t4 &" << endl;
cout << "& Шаг вверх \t---> \t8 &" << endl;
cout << "& Закончить управление --->\t1 &" << endl;
cout << "& Попутного ветра! &" << endl;
cout << "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&" << endl;
cout << endl;
cout << "Странник->Вот твоя карта сокровищ!" << endl;
cout << endl;
cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
cout << "+#########################################################################################+" << endl;
cout << "+##______########___________________########_________________########_________________####+" << endl;
cout << "+##|00000|#######|00000|0000|000000|#######|00000|0000|00000|#######|00000|0000|00000|####+" << endl;
cout << "+##|00000|#######|00000|0000|000000|#######|00000|0000|00000|#######|00000|0000|00000|####+" << endl;
cout << "+##|--S--|------>|00000|-a2-|000000|------>|00000|-a4-|00000|------>|00000|-an-|00000|####+" << endl;
cout << "+##|00000|#######|00000|0000|000000|#######|00000|0000|00000|#######|00000|0000|00000|####+" << endl;
cout << "+##|00000|#######|00000|0000|000000|#######|00000|0000|00000|#######|00000|0000|00000|####+" << endl;
cout << "+##|_____/#######|_________________/#######|________________/#######|________________/####+" << endl;
cout << "+##################|||#######################|||######################|||#################+" << endl;
cout << "+##################|||#######################|||######################|||#################+" << endl;
cout << "+##################VVV#######################VVV######################VVV#################+" << endl;
cout << "+################___________________########_________________########_________________####+" << endl;
cout << "+################|00000|0000|000000|#######|00000|0000|00000|#######|00000|0000|00000|####+" << endl;
cout << "+################|00000|0000|000000|#######|00000|0000|00000|#######|00000|0000|00000|####+" << endl;
cout << "+################|00000|-a1-|000000|------>|00000|-a3-|00000|------>|00000|an-1|00000|####+" << endl;
cout << "+################|00000|0000|000000|#######|00000|0000|00000|#######|00000|0000|00000|####+" << endl;
cout << "+################|00000|0000|000000|#######|00000|0000|00000|#######|00000|0000|00000|####+" << endl;
cout << "+################|_________________/#######|________________/#######|________________/####+" << endl;
cout << "+#########################################################################################+" << endl;
cout << "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++" << endl;
cout << endl;
cout << "Странник->Ну, удачной охоты, сталкер!" << endl;
cout << "Система->Введите волшебные числа->";
fin << "Введенная последовательность чисел:" << endl;
cin >> a; // вводим элемент последовательности
fin << a << " ,"; // сохраняем его в текс. файле
n = 1;
if (a == 0) cout << "Лист пустой" << endl; // если последовательности нет, программы отключается
else
{
while (a != 0) // если есть элементы начинаем создавать их по заданной схеме
{
t1 = new st; // создаем наш список
t1->right = 0; // Инициализируем пути отхода
t1->inf = a; // Сохраняем элемент в списке
t1->down = 0; // Инициализируем пути отхода
if (n == 1) { s = new st; s->right = t1; } // если это первый элемент, то начало создается и связывается именно с этим списком
else
{
p1->right = t1; // иначе, если уже есть другие списки связываем предыдущий с новосозданным списком
}
cout << "Странник->Вводи,сталкер" << endl;
cin >> a; // Повторно вводим элемент
fin << a << " ,"; // сохраняем его в текс. файле
n = n - 1; // поднимаемся , чтобы связать наши списки
if (a != 0) // проверяем на условие
{
t = new st; // создаем новый список
t->right = t->down = NULL; // инициализируем концы списка
t->inf = a; // задаем ему элемент
if (n != 0) p->right = t; // если это не первый список в своем ряду, то связываем предыдущий с новым списком
p = t;// перемещаем указатели но новосозданный список
p1 = t1; // перемещаем указатели но новосозданный список
if (n == 0) s->right = t; // если первый элемент, то связываем Начало с этим списком
t->down = t1; // связываем между собой списки (Верхний и нижний)
cout << "Странник->Вводи не задерживайся(x2)" << endl;
cin >> a; // вводим элемент
fin << a << " ,"; // сохраняем элемент в текс.файле
n = n - 1;
}
}
y = 'Y';
fin << endl;
fin << "Введенные команды управления:" << endl;
while (y == 'Y') // пока есть желание перемещаться-перемещаемся
{
int b = 0;
cout << "Система->Ввод управления" << endl;
cout << "Система->Возможный вариант из всех возможных только --->(6)" << endl;
p1 = p = NULL; // Инициализируем наши указатели
k = s; // Ставим наш главный перемещающийся указатель, по которому будет ориентироваться в начало
n = 0; // перемещаемся в верхний "этаж"
c = _getch(); // незаметно вводим шаг хода
while (c != '1') // если будет нажата 1 -мы закончим перемещаться
{
if ((c != '6') && (k == s)) while (c != '6') // условия , чтобы в начале мы могли двигаться только ВПРАВО
{
cout << "Странник->Сталкер, четто хреновато как-то, сейчас можно только (---->(6))" << endl;
cout << "Странник->Вводи давай" << endl;
c = _getch();
}
if (c == '2') // если нажата 2 пойдет цикл перемещения вниз, если он доступен
{
if (n == 0) // проверяем, что мы верхнем этаже и можем спуститься
{
if (k->down != NULL) // проверяем есть ли внизу ход
{
fin << "Вниз!\t";
cout << "Система->Идем вниз!" << endl;
cout << endl;
cout << "\t||" << endl;
cout << "\t||" << endl;
cout << "\t||" << endl;
cout << "\tVV" << endl;
p1 = k->down; // перемещаем наш указатель по нижнему этажу
k = k->down; // перемещаем нас в данный список
b = 0;
}
else {
cout << "Система->Низ пуст!" << endl; b = 2; // если нету остаемся там же
}
n = 1; // и мы переместились на нижнний этаж
}
else cout << " Система->Внизу ничего нет!" << endl; // или мы уже на нижнем этаже
}
if (c == '6') // если нажата 6 , будем перемещаться ВПРАВО, если это возможно
{
if (k->right != NULL) // проверяем есть ли СПРАВА список
{
fin << "Вправо!\t";
cout << "Система->Идем вправо!" << endl;
cout << "------>" << endl;
p = k->right; // перемещаем указатель этажа
k = k->right; // двигаемся в данный список
b = 0;
}
else {
cout << "Странник->Конечная,иди, иди! Нечего тебе тут делать!" << endl; b = 2;
}
n = 0;
}
if (n == 0)
{
if ((p != NULL) && (b != 2)) // проверяем есть ли список с элементом
{
cout << "|" << p->inf << "|" << endl; // выводим элемент на экран
cout << endl;
}
else cout << "Система->Ошибка Сбоку" << endl; // Нету списка
cout << endl;
}
if (n == 1)
{
if ((p1 != NULL) && (b != 2)) // проверяем есть ли список
{
cout << "|" << p1->inf << "|" << endl; // выводим элементы на экран
cout << endl;
}
else cout << "Система->Ошибка дна(низа)" << endl;
cout << endl;
}
if ((k->down == NULL) && (k->right == NULL)) { // если дошли до конца отключаем программу
cout << "#@4&1()*&^! ->Вот и твой конец близок..." << endl; break;
}
cout << "Странник->Давай давай, шевелись!" << endl;
if ((k->down == NULL) && (k->right == NULL)) // проверяем есть ли список на пути
cout << "Ходов нет" << endl;
else {
cout << "Система->Доступные ходы:" << endl;
cout << endl;
if (k->right != NULL) cout << "Вправо! ------>(6)" << endl; // есть ли есть список справа, то выводим данный ход
if (k->down != NULL) { // есть ли список снизу
cout << "В" << endl;
cout << "Н\t(2)" << endl;
cout << "И\t||" << endl;
cout << "З\t||" << endl;
cout << "!\tVV" << endl;
}
cout << endl;
}
c = _getch();
n = 0;
}
cout << "Система->Вы хотите вернуться в начало управления?(Y/N)" << endl;
y = _getch(); // Вводим ответ на возрат или выход
if (y=='Y') fin << "В начало!\t";
}
}
}
}
cout << endl;
cout << "Странник->Судьба... Нет, от судьбы точно никуда не скроешься... Что на роду написано — так оно и будет..." << endl;
cout<<"Братва->Всёё мужики. Отбой"<<endl;
cout << "#@4&1()*&^! ->Больные люди... Сталкеры." << endl;
fin.close(); // закрываем запись в текс. файл
}
// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
// Советы по началу работы
// 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
// 2. В окне Team Explorer можно подключиться к системе управления версиями.
// 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
// 4. В окне "Список ошибок" можно просматривать ошибки.
// 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
// 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.