Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <windows.h>
- #include <map>
- #include <thread>
- #include <ctime>
- #include <chrono>
- void setcol(int col)
- {
- SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), col);
- }
- void cls(HANDLE hConsole)
- {
- COORD coordScreen = { 0, 0 }; // home for the cursor
- DWORD cCharsWritten;
- CONSOLE_SCREEN_BUFFER_INFO csbi;
- DWORD dwConSize;
- // Get the number of character cells in the current buffer.
- if (!GetConsoleScreenBufferInfo(hConsole, &csbi))
- return;
- dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
- // Fill the entire screen with blanks.
- if (!FillConsoleOutputCharacter(hConsole, (TCHAR) ' ',
- dwConSize, coordScreen, &cCharsWritten))
- return;
- // Get the current text attribute.
- if (!GetConsoleScreenBufferInfo(hConsole, &csbi))
- return;
- // Set the buffer's attributes accordingly.
- if (!FillConsoleOutputAttribute(hConsole, csbi.wAttributes,
- dwConSize, coordScreen, &cCharsWritten))
- return;
- // Put the cursor at its home coordinates.
- SetConsoleCursorPosition(hConsole, coordScreen);
- }
- void setpos(int x, int y)
- {
- COORD pos;
- pos.X = x;
- pos.Y = y;
- SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);
- }
- void first_menu(int choice);
- void second_menu(int counter);
- void thrid_menu(int choice, int counter);
- void rules();
- void table_for_menu();
- void paint_the_flovers();
- class english
- {
- public:
- void first_english_menu()
- {
- int choice_en = 0, counter_en = 0;
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- while (true)
- {
- switch (choice_en)
- {
- case 80:
- {
- counter_en++;
- if (counter_en > 4) counter_en = 0;
- break;
- }
- case 72:
- {
- counter_en--;
- if (counter_en < 0) counter_en = 4;
- break;
- }
- case 13:
- {
- thrid_english_menu(counter_en);
- break;
- }
- }
- cls(hStdout);
- second_english_menu(counter_en);
- choice_en = _getwch();
- }
- }
- protected:
- void second_english_menu(int choice_en)
- {
- table_for_menu();
- char variant[5][11] = { "Easy","Normal","Hard","Dictionary","Exit" };
- setcol(3);
- setpos(10, 2);
- std::cout << " MENU\n";
- for (int i = 0; i < 5; i++)
- {
- if (i == 0)setpos(8, 3 + i);
- setpos(7, 3 + i);
- if (i == choice_en) setcol(3);
- else setcol(7);
- for (int j = 0; j < strlen(variant[i]); j++)
- {
- std::cout << " " << variant[i][j];
- }
- std::cout << std::endl;
- }
- }
- void thrid_english_menu(int counter_en)
- {
- bool exit = true;
- while (exit)
- {
- switch (counter_en)
- {
- case 0:
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- bool exit_0 = true;
- while (exit_0)
- {
- std::cout << "easy" << std::endl;
- std::cout << "if you want to exit, press \"escape\"" << std::endl;
- if (_getwch() == 27)
- {
- exit_0 = false;
- cls(hStdout);
- int choice = 0, counter = 0;
- second_english_menu(choice);
- choice = _getwch();
- cls(hStdout);
- first_english_menu();
- }
- else if (_getwch() != 27)cls(hStdout);
- }
- break;
- }
- case 1:
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- bool exit_1 = true;
- while (exit_1)
- {
- std::cout << "normal" << std::endl;
- std::cout << "if you want to exit, press \"escape\"" << std::endl;
- if (_getwch() == 27)
- {
- exit_1 = false;
- cls(hStdout);
- int choice = 0, counter = 0;
- second_english_menu(choice);
- choice = _getwch();
- cls(hStdout);
- first_english_menu();
- }
- else if (_getwch() != 27)cls(hStdout);
- }
- break;
- }
- case 2:
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- bool exit_2 = true;
- while (exit_2)
- {
- std::cout << "hard" << std::endl;
- std::cout << "if you want to exit, press \"escape\"" << std::endl;
- if (_getwch() == 27)
- {
- exit_2 = false;
- cls(hStdout);
- int choice = 0, counter = 0;
- second_english_menu(choice);
- choice = _getwch();
- cls(hStdout);
- first_english_menu();
- }
- else if (_getwch() != 27)cls(hStdout);
- }
- break;
- }
- case 3:
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- bool exit_3 = true;
- while (exit_3)
- {
- std::cout << "dictionary" << std::endl;
- std::cout << "if you want to exit, press \"escape\"" << std::endl;
- if (_getwch() == 27)
- {
- exit_3 = false;
- int choice = 0, counter = 0;
- cls(hStdout);
- second_english_menu(choice);
- choice = _getwch();
- cls(hStdout);
- first_english_menu();
- }
- else if (_getwch() != 27)cls(hStdout);
- }
- break;
- }
- case 4:
- {
- exit = false;
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- int choice = 0, counter = 0;
- first_menu(choice);
- choice = _getwch();
- cls(hStdout);
- thrid_menu(choice, counter);
- break;
- }
- default:
- break;
- }
- }
- }
- };
- class math
- {
- public:
- void first_math_menu()
- {
- int choice_mt = 0, counter_mt = 0;
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- while (true)
- {
- switch (choice_mt)
- {
- case 80:
- {
- counter_mt++;
- if (counter_mt > 4) counter_mt = 0;
- break;
- }
- case 72:
- {
- counter_mt--;
- if (counter_mt < 0) counter_mt = 4;
- break;
- }
- case 13:
- {
- thrid_math_menu(counter_mt);
- break;
- }
- }
- cls(hStdout);
- second_math_menu(counter_mt);
- choice_mt = _getwch();
- }
- }
- protected:
- void second_math_menu(int choice_mt)
- {
- table_for_menu();
- char variant[5][21] = { "Easy","Normal","Hard","Theory","Exit" };
- setcol(3);
- setpos(10, 2);
- std::cout << " MENU\n";
- for (int i = 0; i < 5; i++)
- {
- if (i == 0)setpos(8, 3 + i);
- setpos(8, 3 + i);
- if (i == choice_mt) setcol(3);
- else setcol(7);
- for (int j = 0; j < strlen(variant[i]); j++)
- {
- std::cout << " " << variant[i][j];
- }
- std::cout << std::endl;
- }
- }
- void thrid_math_menu(int counter_mt)
- {
- bool exit = true;
- while (exit)
- {
- switch (counter_mt)
- {
- case 0:
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- bool exit_0 = true;
- while (exit_0)
- {
- std::cout << "easy" << std::endl;
- std::cout << "if you want to exit, press \"escape\"" << std::endl;
- if (_getwch() == 27)
- {
- exit_0 = false;
- cls(hStdout);
- int choice = 0, counter = 0;
- second_math_menu(choice);
- choice = _getwch();
- cls(hStdout);
- first_math_menu();
- }
- else if (_getwch() != 27)cls(hStdout);
- }
- break;
- }
- case 1:
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- bool exit_1 = true;
- while (exit_1)
- {
- std::cout << "normal" << std::endl;
- std::cout << "if you want to exit, press \"escape\"" << std::endl;
- if (_getwch() == 27)
- {
- exit_1 = false;
- cls(hStdout);
- int choice = 0, counter = 0;
- second_math_menu(choice);
- choice = _getwch();
- cls(hStdout);
- first_math_menu();
- }
- else if (_getwch() != 27)cls(hStdout);
- }
- break;
- }
- case 2:
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- bool exit_2 = true;
- while (exit_2)
- {
- std::cout << "hard" << std::endl;
- std::cout << "if you want to exit, press \"escape\"" << std::endl;
- if (_getwch() == 27)
- {
- exit_2 = false;
- cls(hStdout);
- int choice = 0, counter = 0;
- second_math_menu(choice);
- choice = _getwch();
- cls(hStdout);
- first_math_menu();
- }
- else if (_getwch() != 27)cls(hStdout);
- }
- break;
- }
- case 3:
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- bool exit_3 = true;
- while (exit_3)
- {
- std::cout << "multiplication table" << std::endl;
- std::cout << "if you want to exit, press \"escape\"" << std::endl;
- if (_getwch() == 27)
- {
- exit_3 = false;
- int choice = 0, counter = 0;
- cls(hStdout);
- second_math_menu(choice);
- choice = _getwch();
- cls(hStdout);
- first_math_menu();
- }
- else if (_getwch() != 27)cls(hStdout);
- }
- break;
- }
- case 4:
- {
- exit = false;
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- int choice = 0, counter = 0;
- first_menu(choice);
- choice = _getwch();
- cls(hStdout);
- thrid_menu(choice, counter);
- break;
- }
- default:
- break;
- }
- }
- }
- };
- class biology
- {
- public:
- void first_biology_menu()
- {
- int choice_bio = 0, counter_bio = 0;
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- while (true)
- {
- switch (choice_bio)
- {
- case 80:
- {
- counter_bio++;
- if (counter_bio > 4) counter_bio = 0;
- break;
- }
- case 72:
- {
- counter_bio--;
- if (counter_bio < 0) counter_bio = 4;
- break;
- }
- case 13:
- {
- thrid_biology_menu(counter_bio);
- break;
- }
- }
- cls(hStdout);
- second_biology_menu(counter_bio);
- choice_bio = _getwch();
- }
- }
- protected:
- void second_biology_menu(int choice_bio)
- {
- table_for_menu();
- char variant[5][10] = { "Easy","Normal","Hard","Theory","Exit" };
- setcol(3);
- setpos(10, 2);
- std::cout << " MENU\n";
- for (int i = 0; i < 5; i++)
- {
- if (i == 0)setpos(8, 3 + i);
- setpos(8, 3 + i);
- if (i == choice_bio) setcol(3);
- else setcol(7);
- for (int j = 0; j < strlen(variant[i]); j++)
- {
- std::cout << " " << variant[i][j];
- }
- std::cout << std::endl;
- }
- }
- void thrid_biology_menu(int counter_bio)
- {
- bool exit = true;
- while (exit)
- {
- switch (counter_bio)
- {
- case 0:
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- bool exit_0 = true;
- while (exit_0)
- {
- std::cout << "easy" << std::endl;
- std::cout << "if you want to exit, press \"escape\"" << std::endl;
- if (_getwch() == 27)
- {
- exit_0 = false;
- cls(hStdout);
- int choice = 0, counter = 0;
- second_biology_menu(choice);
- choice = _getwch();
- cls(hStdout);
- first_biology_menu();
- }
- else if (_getwch() != 27)cls(hStdout);
- }
- break;
- }
- case 1:
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- bool exit_1 = true;
- while (exit_1)
- {
- std::cout << "normal" << std::endl;
- std::cout << "if you want to exit, press \"escape\"" << std::endl;
- if (_getwch() == 27)
- {
- exit_1 = false;
- cls(hStdout);
- int choice = 0, counter = 0;
- second_biology_menu(choice);
- choice = _getwch();
- cls(hStdout);
- first_biology_menu();
- }
- else if (_getwch() != 27)cls(hStdout);
- }
- break;
- }
- case 2:
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- bool exit_2 = true;
- while (exit_2)
- {
- std::cout << "hard" << std::endl;
- std::cout << "if you want to exit, press \"escape\"" << std::endl;
- if (_getwch() == 27)
- {
- exit_2 = false;
- cls(hStdout);
- int choice = 0, counter = 0;
- second_biology_menu(choice);
- choice = _getwch();
- cls(hStdout);
- first_biology_menu();
- }
- else if (_getwch() != 27)cls(hStdout);
- }
- break;
- }
- case 3:
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- bool exit_3 = true;
- while (exit_3)
- {
- std::cout << "theory" << std::endl;
- std::cout << "if you want to exit, press \"escape\"" << std::endl;
- if (_getwch() == 27)
- {
- exit_3 = false;
- int choice = 0, counter = 0;
- cls(hStdout);
- second_biology_menu(choice);
- choice = _getwch();
- cls(hStdout);
- first_biology_menu();
- }
- else if (_getwch() != 27)cls(hStdout);
- }
- break;
- }
- case 4:
- {
- exit = false;
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- int choice = 0, counter = 0;
- first_menu(choice);
- choice = _getwch();
- cls(hStdout);
- thrid_menu(choice, counter);
- break;
- }
- default:
- break;
- }
- }
- }
- };
- void first_menu(int choice)
- {
- table_for_menu();
- char variants[5][10] = { "English","Math","Biology","Rules","Exit"};
- setcol(3);
- setpos(10, 2);
- std::cout << " MENU\n";
- for (int i = 0; i < 5; i++)
- {
- if(i==0)setpos(8, 3 + i);
- setpos(8, 3 + i);
- if (i == choice) setcol(3);
- else setcol(7);
- for (int j = 0; j < strlen(variants[i]); j++)
- {
- std::cout << " " << variants[i][j];
- }
- std::cout << std::endl;
- }
- }
- void second_menu(int counter)
- {
- switch (counter)
- {
- case 0:
- {
- english en;
- en.first_english_menu();
- break;
- }
- case 1:
- {
- math mt;
- mt.first_math_menu();
- break;
- }
- case 2:
- {
- biology bio;
- bio.first_biology_menu();
- break;
- }
- case 3:
- {
- rules();
- break;
- }
- case 4:
- {
- exit(0);
- break;
- }
- default:
- break;
- }
- }
- void thrid_menu(int choice, int counter)
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- while (true)
- {
- switch (choice)
- {
- case 80:
- {
- counter++;
- if (counter > 4) counter = 0;
- break;
- }
- case 72:
- {
- counter--;
- if (counter < 0) counter = 4;
- break;
- }
- case 13:
- {
- second_menu(counter);
- break;
- }
- }
- cls(hStdout);
- first_menu(counter);
- choice = _getwch();
- }
- }
- void rules()
- {
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- cls(hStdout);
- bool exit = true;
- while (exit)
- {
- std::cout << "later" << std::endl;
- std::cout<<"if you want to exit, press \"escape\""<<std::endl;
- if (_getwch() == 27)exit = false;
- else if(_getwch()!=27)cls(hStdout);
- }
- }
- void table_for_menu()
- {
- setcol(7);
- //----------верхня лінія
- setpos(1, 0);
- std::cout << (char)201;
- for (int i = 1; i < 26; i++)
- {
- setpos(1+i, 0);
- std::cout << (char)205;
- }
- setpos(27, 0);
- std::cout << (char)187;
- //-----------нижня лінія
- setpos(1, 9);
- std::cout << (char)200;
- for (int i = 1; i < 26; i++)
- {
- setpos(1 + i, 9);
- std::cout << (char)205;
- }
- setpos(27, 9);
- std::cout << (char)188;
- //--------права лінія
- for (int i = 1; i < 9; i++)
- {
- setpos(27, 0+i);
- std::cout << (char)186;
- }
- //---------ліва лінія
- for (int i = 1; i < 9; i++)
- {
- setpos(1, 0+i);
- std::cout << (char)186;
- }
- setpos(50, 2);
- std::thread drow(paint_the_flovers);
- //paint_the_flovers();
- }
- void paint_the_flovers()
- {
- int counter = 0;
- int arr[340] = { 1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,
- 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
- 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
- 2,1,1,1,1,1,3,3,1,1,1,3,3,1,1,1,1,1,1,2,
- 2,1,1,1,1,3,3,3,3,1,3,3,3,3,1,1,1,1,1,2,
- 2,1,1,1,1,3,3,3,3,3,3,3,3,3,1,1,1,1,1,2,
- 2,1,1,1,1,3,3,3,3,3,3,3,3,3,1,1,1,1,1,2,
- 2,1,1,1,1,1,3,3,3,3,3,3,3,1,1,1,1,1,1,2,
- 2,1,1,1,1,1,1,3,3,3,3,3,1,1,1,1,1,1,1,2,
- 2,1,1,1,1,1,1,1,3,3,3,1,1,1,1,1,1,1,1,2,
- 2,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,2,
- 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,
- 1,2,2,2,2,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,
- 1,1,1,1,2,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
- 1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 };
- for (int i = 0; i < 340; i++)
- {
- if (i % 20 == 0)
- {
- counter++;
- setpos(50, 2 + counter);
- }
- switch (arr[i])
- {
- case 1:
- {
- std::cout << " ";
- break;
- }
- case 2:
- {
- setcol(15);
- std::cout << (char)178 << (char)178;
- setcol(7);
- break;
- }
- case 3:
- {
- setcol(rand() % 15);
- std::cout << (char)178 << (char)178;
- setcol(7);
- break;
- }
- default:
- break;
- }
- }
- std::this_thread::sleep_for(std::chrono::milliseconds(100));
- }
- int main()
- {
- srand(time(0));
- table_for_menu();
- HANDLE hStdout;
- hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
- int choice = 0, counter = 0;
- first_menu(choice);
- choice = _getwch();
- cls(hStdout);
- thrid_menu(choice, counter);
- _getwch();
- system("pause>nul");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement