Luko Butkaus darbas

mail@pastecode.io avatar
unknown
plain_text
2 years ago
47 kB
3
Indexable
Never
#include <bits/stdc++.h>
#include <iostream>
#include <time.h>
#include <conio.h>
#include <windows.h>
using namespace std;
void Programos_meniu()
{
    system("CLS");
    system("COLOR 0A");
    cout << ("-------------------------------------------\n");
    cout << ("|   PROGRAMAVO:                           |\n");
    cout << ("|   LUKAS BUTKUS KZA                      |\n");
    cout << ("-------------------------------------------\n");
    cout << ("*******************************************\n");
    cout << ("*   [0] - Informacija apie autoriu        *\n");
    cout << ("*   [1] - Inicialai                       *\n");
    cout << ("*   [2] - Graza                           *\n");
    cout << ("*   [3] - Skaiciuotuvas                   *\n");
    cout << ("*   [4] - Slaptazodzio generatorius       *\n");
    cout << ("*   [5] - Sugeneruoti slaptazodziai       *\n");
    cout << ("*   [6] - Sugeneruotu slaptazodziu analize*\n");
    cout << ("*   [7] - Ping Pong                       *\n");
    cout << ("*   [8] - Flappy Bird                     *\n");
    cout << ("*   [9] - Pabaiga                         *\n");
    cout << ("*  [10] - Zaidimai                        *\n");
    cout << ("*******************************************\n");
}
void Autorius()
{
    system("CLS");
    system("COLOR 0A");
    ifstream fin("Autorius.txt");
    string eilute;
    while (!fin.eof())
    {
        getline(fin, eilute);
        cout << eilute << endl;
    }
    cout << endl << "Noredami gryzti i pagrindini meniu paspauskie ENTER" << endl;
    system ("pause");
    fin.close();
}
void Inicialai()
{
    system("CLS");
    system("COLOR 0A");
    cout << ("                                                         \n");
    cout << ("   ********                                              \n");
    cout << ("   ********                                              \n");
    cout << ("   ********                                              \n");
    cout << ("   ********                                              \n");
    cout << ("   ********                                              \n");
    cout << ("   ********                                              \n");
    cout << ("   ********                                              \n");
    cout << ("   ********                                              \n");
    cout << ("   ********                                              \n");
    cout << ("   ********                                              \n");
    cout << ("   ********                                              \n");
    cout << ("   ********                   ***************            \n");
    cout << ("   *********************     ******************          \n");
    cout << ("   *********************     *****         *****         \n");
    cout << ("   *********************     *****         *****         \n");
    cout << ("   *********************     *****         *****         \n");
    cout << ("                             *****        *****          \n");
    cout << ("                             *****       *****           \n");
    cout << ("                             *****      *****            \n");
    cout << ("                             ***************             \n");
    cout << ("                             ***************             \n");
    cout << ("                             *****       *****           \n");
    cout << ("                             *****        *****          \n");
    cout << ("                             *****         *****         \n");
    cout << ("                             *****          *****        \n");
    cout << ("                             *****          *****        \n");
    cout << ("                             *****         *****         \n");
    cout << ("                             ******************          \n");
    cout << ("                              ***************            \n");
    system("pause");
}
void Graza ()
{
    int g;
    int k500, k200, k100, k50, k20, k10, k5;
    system("CLS");
    system("COLOR 0A");
    cout <<"Iveskite graza \n";
    cin >> g;
    k500 = g / 500;
    g = g % 500;
    k200 = g / 200;
    g = g % 200;
    k100 = g / 100;
    g = g % 100;
    k50 = g / 50;
    g = g % 50;
    k20 = g / 20;
    g = g % 20;
    k10 = g / 10;
    g = g % 10;
    k5 = g / 5;
    g = g % 5;
    cout << "Graza: " << endl;
    cout << "500 $ ----->" << k500 << endl;
    cout << "200 $ ----->" << k200 << endl;
    cout << "100 $ ----->" << k100 << endl;
    cout << "50 $ ----->" << k50 << endl;
    cout << "20 $ ----->" << k20 << endl;
    cout << "10 $ ----->" << k10 << endl;
    cout << "5 $ ----->" << k5 << endl;
}
void Skaiciuotuvas ()
{
    system("CLS");
    system("COLOR 0A");
    int x1, x2;
    char pabaiga = 'n';
    char zenklas;
    while (pabaiga != 't')
    {
        cout << "Iveskite 1 skaiciu: ";
        cin >> x1;
        cout << "Iveskite operacijos zenkla: ";
        cin >> zenklas;
        cout << "Iveskite 2 skaiciu: ";
        cin >> x2;
        if (zenklas == '+')
        {
            cout << x1 <<"+"<< x2 << "="<< x1 + x2 <<endl;
        }
        if (zenklas == '-')
        {
            cout << x1 <<"-"<< x2 << "="<< x1 - x2 <<endl;
        }
        if (zenklas == '*')
        {
            cout << x1 <<"*"<< x2 << "="<< x1 * x2 <<endl;
        }
        if (zenklas == '/')
        {
            cout << x1 <<"/"<< x2 << "="<< x1 / x2 <<endl;
        }
        if (zenklas == '^')
        {
            cout << x1 <<"^"<< x2 << "="<< pow(x1, x2) <<endl;
        }
        cout <<" \n Ar norite baigti (t/n):";
        cin >> pabaiga;
        cout <<'\n';
    }
}
void Generatorius(int ilgis)
{
    ofstream fout("Slaptazodziai.txt", ios::app);
    string slaptazodis ="";
    char simbolis;
    srand (time (NULL));
    while (slaptazodis.size()<ilgis)
    {
        simbolis=rand();
        if (simbolis>='a' && simbolis<='z')
            slaptazodis += simbolis;
    }
    fout << endl << slaptazodis;
    cout <<"Sugeneruotas slaptazodis: ["<< slaptazodis <<"] irasytas i faila Slaptazodziai.txt" << endl;
    fout.close();
}
void Skaitymas (vector <string> &S)
{
    ifstream fin("Slaptazodziai.txt");
    string eilute;
    while (!fin.eof())
    {
        getline(fin, eilute);
        S.push_back(eilute);
    }
    fin.close();
}
void Spauzdinimas(vector <string> S)
{
    for (int i=0; i<S.size(); i++)
        cout << S[i] << endl;
}
bool palyginti (string a, string b)
{
    return a.size () < b.size ();
}
int Tumpiausias(int A[], int n)
{
    int vieta = 0;
    for (int i = 1; i < n; i++)
        if (A[i] < A[vieta])
            vieta = i;
    return A[vieta];
}
int Ilgiausias(int A[], int n)
{
    int vieta = 0;
    for (int i = 1; i < n; i++)
        if (A[i] > A[vieta])
            vieta = i;
    return A[vieta];
}
int Suma(int A[], int n)
{
    int s=0;
    for (int i=0; i<n; i++)
        s += A[1];
    return s;
}
int Kiekis (char x, string Slaptazodis)
{
    int k = 0;
    for (int i=0; i<Slaptazodis.size(); i++)
    {
        if (Slaptazodis[i]== x) k++;
    }
    return k;
}
int Suma (char x, vector <string> Slaptazodis)
{
    int s = 0;
    for (int i=0; i<Slaptazodis.size(); i++)
    {
        s += Kiekis (x, Slaptazodis[i]);
    }
    return s;
}
double Vidurkis (vector <string> Slaptazodis)
{
    double s = 0;
    for (int i=0; i<Slaptazodis.size(); i++)
    {
        s += Slaptazodis[i].size();
    }
    return s/Slaptazodis.size();
}



using namespace std;
enum eDir { STOP = 0, LEFT = 1, UPLEFT = 2, DOWNLEFT = 3, RIGHT = 4, UPRIGHT = 5, DOWNRIGHT = 6 };
class cBall
{
private:
    int x, y;
    int originalX, originalY;
    eDir direction;
public:
    cBall(int posX, int posY)
    {
        originalX = posX;
        originalY = posY;
        x = posX;
        y = posY;
        direction = STOP;
    }
    void Reset()
    {
        x = originalX;
        y = originalY;
        direction = STOP;
    }
    void changeDirection(eDir d)
    {
        direction = d;
    }
    void randomDirection()
    {
        direction = (eDir)((rand() % 6) + 1);
    }
    inline int getX()
    {
        return x;
    }
    inline int getY()
    {
        return y;
    }
    inline eDir getDirection()
    {
        return direction;
    }
    void Move()
    {
        switch (direction)
        {
        case STOP:
            break;
        case LEFT:
            x--;
            break;
        case RIGHT:
            x++;
            break;
        case UPLEFT:
            x--;
            y--;
            break;
        case DOWNLEFT:
            x--;
            y++;
            break;
        case UPRIGHT:
            x++;
            y--;
            break;
        case DOWNRIGHT:
            x++;
            y++;
            break;
        default:
            break;
        }
    }
    friend ostream& operator<<(ostream& o, cBall c)
    {
        o << "Ball [" << c.x << "," << c.y << "][" << c.direction << "]";
        return o;
    }
};
class cPaddle
{
private:
    int x, y;
    int originalX, originalY;
public:
    cPaddle()
    {
        x = y = 0;
    }
    cPaddle(int posX, int posY) : cPaddle()
    {
        originalX = posX;
        originalY = posY;
        x = posX;
        y = posY;
    }
    inline void Reset()
    {
        x = originalX;
        y = originalY;
    }
    inline int getX()
    {
        return x;
    }
    inline int getY()
    {
        return y;
    }
    inline void moveUp()
    {
        y--;
    }
    inline void moveDown()
    {
        y++;
    }
    friend ostream& operator<<(ostream& o, cPaddle c)
    {
        o << "Paddle [" << c.x << "," << c.y << "]";
        return o;
    }
};
class cGameManger
{
private:
    int width, height;
    int score1, score2;
    char up1, down1, up2, down2;
    bool quit;
    cBall* ball;
    cPaddle* player1;
    cPaddle* player2;
public:
    cGameManger(int w, int h)
    {
        srand(time(NULL));
        quit = false;
        up1 = 'w';
        up2 = 'i';
        down1 = 's';
        down2 = 'k';
        score1 = score2 = 0;
        width = w;
        height = h;
        ball = new cBall(w / 2, h / 2);
        player1 = new cPaddle(1, h / 2 - 3);
        player2 = new cPaddle(w - 2, h / 2 - 3);
    }
    ~cGameManger()
    {
        delete ball, player1, player2;
    }
    void ScoreUp(cPaddle* player)
    {
        if (player == player1)
            score1++;
        else if (player == player2)
            score2++;

        ball->Reset();
        player1->Reset();
        player2->Reset();
    }
    void Draw()
    {
        //system("cls");
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), { 0,0 });
        for (int i = 0; i < width + 2; i++)
            cout << "\xB2";
        cout << endl;

        for (int i = 0; i < height; i++)
        {
            for (int j = 0; j < width; j++)
            {
                int ballx = ball->getX();
                int bally = ball->getY();
                int player1x = player1->getX();
                int player2x = player2->getX();
                int player1y = player1->getY();
                int player2y = player2->getY();

                if (j == 0)
                    cout << "\xB2";

                if (ballx == j && bally == i)
                    cout << "O"; //kamuolys-ball
                else if (player1x == j && player1y == i)
                    cout << "\xDB"; //zaidejas1
                else if (player2x == j && player2y == i)
                    cout << "\xDB"; //zaidejas2

                else if (player1x == j && player1y + 1 == i)
                    cout << "\xDB"; //zaidejas1
                else if (player1x == j && player1y + 2 == i)
                    cout << "\xDB"; //zaidejas1
                else if (player1x == j && player1y + 3 == i)
                    cout << "\xDB"; //zaidejas1

                else if (player2x == j && player2y + 1 == i)
                    cout << "\xDB"; //zaidejas1
                else if (player2x == j && player2y + 2 == i)
                    cout << "\xDB"; //zaidejas1
                else if (player2x == j && player2y + 3 == i)
                    cout << "\xDB"; //zaidejas1
                else
                    cout << " ";

                if (j == width - 1)
                    cout << "\xB2";
            }
            cout << endl;
        }

        for (int i = 0; i < width + 2; i++)
            cout << "\xB2";
        cout << endl;

        cout << "Score 1: " << score1 << endl << "Score 2: " << score2 << endl;
    }
    void Input()
    {
        ball->Move();

        int ballx = ball->getX();
        int bally = ball->getY();
        int player1x = player1->getX();
        int player2x = player2->getX();
        int player1y = player1->getY();
        int player2y = player2->getY();

        if (_kbhit())
        {
            char current = _getch();
            if (current == up1)
                if (player1y > 0)
                    player1->moveUp();
            if (current == up2)
                if (player2y > 0)
                    player2->moveUp();
            if (current == down1)
                if (player1y + 4 < height)
                    player1->moveDown();
            if (current == down2)
                if (player2y + 4 < height)
                    player2->moveDown();

            if (ball->getDirection() == STOP)
                ball->randomDirection();

            if (current == 'q')
                quit = true;
        }
    }
    void Logic()
    {
        int ballx = ball->getX();
        int bally = ball->getY();
        int player1x = player1->getX();
        int player2x = player2->getX();
        int player1y = player1->getY();
        int player2y = player2->getY();

        //kaires puses valdymas
        for (int i = 0; i < 4; i++)
            if (ballx == player1x + 1)
                if (bally == player1y + i)
                    ball->changeDirection((eDir)((rand() % 3) + 4));

        //desines puses valdymas
        for (int i = 0; i < 4; i++)
            if (ballx == player2x - 1)
                if (bally == player2y + i)
                    ball->changeDirection((eDir)((rand() % 3) + 1));

        //apatine siena
        if (bally == height - 1)
            ball->changeDirection(ball->getDirection() == DOWNRIGHT ? UPRIGHT : UPLEFT);
        //virsutine siena
        if (bally == 0)
            ball->changeDirection(ball->getDirection() == UPRIGHT ? DOWNRIGHT : DOWNLEFT);
        //desine siena
        if (ballx == width - 1)
            ScoreUp(player1);
        //kaire siena
        if (ballx == 0)
            ScoreUp(player2);
    }
    void Run()
    {
        while (!quit)
        {
            Draw();
            Input();
            Logic();
            Sleep(50);
        }
    }

};











int main()
{
    setlocale(LC_ALL, "English");

    int m;
meniu:
    Programos_meniu();
    cout<< "Pasirinkite programos meniu numeri: \n";
    cin>> m;
    if (m==0)
    {
        Autorius();
        goto meniu;
    }
    if (m==1)
    {
        Inicialai ();
        4;
        goto meniu;
    }
    if (m==2)
    {

        Graza();
        system("pause");
        goto meniu;
    }
    if (m==3)
    {
        Skaiciuotuvas ();
        goto meniu;
    }
    if (m==4)
    {
        system("CLS");
        int ilgis;
        cout <<"Iveskite generuojamo slaptazodzio ilgi: "<<endl;
        cin >> ilgis;
        Generatorius (ilgis);
        system ("pause");
        goto meniu;
    }
    if (m==5)
    {
        system("CLS");
        vector <string> S;
        Skaitymas (S);
        sort(S.begin(), S.end(), palyginti);
        Spauzdinimas(S);
        system("pause");
        goto meniu;
    }
    if (m==6)
    {
        system("CLS");
        vector <string> S;
        Skaitymas (S);
        sort(S.begin(), S.end(), palyginti);
        cout<<"ANALIZE"<< endl;
        cout<<" Slaptazodziu kiekis: "<< S.size() <<endl;
        cout<<" Trumpiausias slaptazodis: "<< S[0] <<" | ilgis - " << S[0].size()<< endl;
        int paskutinis = S.size()-1;
        cout<<" Ilgiausias slaptazodis: "<< S[paskutinis] <<" | ilgis - " << S[paskutinis].size()<< endl;
        cout<<" Vidutinis slaptazodis: "<< " | ilgis - " << Vidurkis(S) << endl;
        Kiekis ('b',"ABCDabcd12345");
        cout<<" Slaptazodziuose yra raidziu L: " << Suma ('L', S) << endl;
        system("pause");
        goto meniu;
    }
    if (m==7)
    {
        system("COLOR 0F");
        cGameManger c(40, 20);
        c.Run();
        Sleep(100);
        return 0;
        goto meniu;
    }
    if (m==8)
    {
        system("COLOR 0F");
        {
            srand(time(0));//kad randomizintu
            char mv;
            char repeat='y';
            int highscore=0;
            while (repeat=='y')
            {
                int score=0;
                bool wasit=true;
                int x=9;
                int rintangan[3]; // y - asies kliutis
                int rintang[3]; // x - asies kliutis
                rintang[0]=10;
                rintang[1]=18;
                rintang[2]=27; // pradedancioji x asies kliutis
                for (int i=0; i<3; i++)
                {
                    rintangan[i]=(rand()-1)%12+2;
                }
                string map[20][30];
                for (int i=0; i<20; i++)
                {
                    for (int j=0; j<30; j++)
                    {
                        if ( i==0 || i==19|| j==29 || j==0)
                            map[i][j]="* ";
                        else
                            map[i][j]="  ";
                    }
                }
                while (wasit == true)
                {
                    for (int i =0; i<3; i++)
                    {
                        for (int j=1; j<19; j++)
                        {
                            map[j][rintang[i]]="  ";
                        }
                    }
                    for (int i=0; i<3; i++) //kad kliutis judeti i kaire, desine
                    {
                        rintang[i]--;
                    }
                    for (int i =0; i<3; i++) //paverskite kliūtį atgal į dešinę pusę, jei ji palietė kairę pusę
                    {
                        for (int j=1; j<19; j++)
                        {
                            map[j][rintang[i]]="* ";
                        }
                    }
                    for (int i=0; i<3; i++) //kad kliutyje padarytu skyle
                    {
                        map[rintangan[i]][rintang[i]]="  ";
                        map[rintangan[i]+1][rintang[i]]="  ";
                        map[rintangan[i]+2][rintang[i]]="  ";
                        map[rintangan[i]+3][rintang[i]]="  ";
                        map[rintangan[i]+4][rintang[i]]="  ";
                    }
                    for (int i=0; i<3; i++)
                    {
                        if (rintang[i]==1)
                        {
                            rintang[i]=28;
                            rintangan[i]=(rand()-1)%12+2;
                        }
                    }
                    map[x][3]="  ";
                    if (kbhit())
                    {
                        mv=getch();
                        x=x-3;
                    }
                    x++;
                    if(x<1)
                        x=1;
                    for (int i=0; i<3; i++)
                    {
                        if (rintang[i]==3)
                            if (map[x][3]=="  ")
                                score=score+1;
                        if (map[x][3]=="* ")
                            wasit=false;
                    }
                    map[x][3]="& ";
                    for (int i=1; i<19; i++)
                    {
                        map[i][1]="  ";
                    }
                    for (int i=0; i<20; i++)
                    {
                        for (int j=0; j<30; j++)
                        {
                            cout << map[i][j];
                        }
                        cout <<endl;
                    }
                    cout << "Score = "<<score;
                    Sleep (100);
                    system ("cls");
                }
                cout << "Score = " <<score<<endl;
                if (highscore<score)
                    highscore=score;
                cout << "Highscore= "<<highscore<<endl;
                cout << "retry?(y/n) = ";
                cin >>repeat;
            }
            goto meniu;
            return 0;
        }

    }
    if (m==9)
    {
        system("CLS");

        return 0;

    }
    if (m==10)
        system("CLS");
    cout << "Welcome to our game library!" << endl;
    cout << "Please select a game from the following options:" << endl;
    cout << "1. Flappy Bird" << endl;
    cout << "2. Ping Pong" << endl;
    cout << "3. Snake Game" << endl;

// User input
    int selection;
    cin >> selection;

// Game selection
    if (selection == 1)
    {
// Flappy Bird
        system("CLS");
        int m;
back:
        cout << "You have selected Flappy Bird." << endl;
        cout << "Please select an option:" << endl;
        cout << "1. Buy the game" << endl;
        cout << "2. Try the game" << endl;

// User input
        int option;
        cin >> option;

// Option selection
        if (option == 1)
        {
            int m;
            prices1:
            // Buy the game
            system("CLS");
            // vector of prices
            vector<double> prices = {1.99, 0.99, 0.89};

            // sort the prices in ascending order
            sort(prices.begin(), prices.end());
            cout << "You have selected to buy Flappy Bird." << endl;
            cout << "Please select a store from the following options:" << endl;
            cout << "1. Store 1 (price: $" << prices[0] << ")" << endl;
            cout << "2. Store 2 (price: $" << prices[1] << ")" << endl;
            cout << "3. Store 3 (price: $" << prices[2] << ")" << endl;
            cout << "4. Find cheapest price" << endl;


            // User input
            int store;
            cin >> store;

            // Store selection
            {

                system("CLS");
                if (store == 1)
                {
                    cout << "You have purchased Flappy Bird from Store 1 for $1.99. Thank you for your purchase!" << endl;
                }
                else if (store == 2)
                {
                    cout << "You have purchased Flappy Bird from Store 2 for $0.99. Thank you for your purchase!" << endl;
                }
                else if (store == 3)
                {
                    cout << "You have purchased Flappy Bird from Store 3 for $0.89. Thank you for your purchase!" << endl;
                }
                if (store == 4)
                {
                    // print the cheapest price
                    cout << "The cheapest price is $" << prices[0] << endl;
                    system ("pause");
                    goto prices1;
                }
                else
                {
                    cout << "Invalid store selection. Please try again." << endl;
                }
                system ("pause");
                goto meniu;
            }
        }

        else if (option == 2)
        {
            // Try the game
            //cout << "You have selected to try Flappy Bird. Enjoy the game!" << endl;
            {
                system("COLOR 0F");
                {
                    srand(time(0));//kad randomizintu
                    char mv;
                    char repeat='y';
                    int highscore=0;
                    while (repeat=='y')
                    {
                        int score=0;
                        bool wasit=true;
                        int x=9;
                        int rintangan[3]; // y - asies kliutis
                        int rintang[3]; // x - asies kliutis
                        rintang[0]=10;
                        rintang[1]=18;
                        rintang[2]=27; // pradedancioji x asies kliutis
                        for (int i=0; i<3; i++)
                        {
                            rintangan[i]=(rand()-1)%12+2;
                        }
                        string map[20][30];
                        for (int i=0; i<20; i++)
                        {
                            for (int j=0; j<30; j++)
                            {
                                if ( i==0 || i==19|| j==29 || j==0)
                                    map[i][j]="* ";
                                else
                                    map[i][j]="  ";
                            }
                        }
                        while (wasit == true)
                        {
                            for (int i =0; i<3; i++)
                            {
                                for (int j=1; j<19; j++)
                                {
                                    map[j][rintang[i]]="  ";
                                }
                            }
                            for (int i=0; i<3; i++) //kad kliutis judeti i kaire, desine
                            {
                                rintang[i]--;
                            }
                            for (int i =0; i<3; i++) //paverskite kliūtį atgal į dešinę pusę, jei ji palietė kairę pusę
                            {
                                for (int j=1; j<19; j++)
                                {
                                    map[j][rintang[i]]="* ";
                                }
                            }
                            for (int i=0; i<3; i++) //kad kliutyje padarytu skyle
                            {
                                map[rintangan[i]][rintang[i]]="  ";
                                map[rintangan[i]+1][rintang[i]]="  ";
                                map[rintangan[i]+2][rintang[i]]="  ";
                                map[rintangan[i]+3][rintang[i]]="  ";
                                map[rintangan[i]+4][rintang[i]]="  ";
                            }
                            for (int i=0; i<3; i++)
                            {
                                if (rintang[i]==1)
                                {
                                    rintang[i]=28;
                                    rintangan[i]=(rand()-1)%12+2;
                                }
                            }
                            map[x][3]="  ";
                            if (kbhit())
                            {
                                mv=getch();
                                x=x-3;
                            }
                            x++;
                            if(x<1)
                                x=1;
                            for (int i=0; i<3; i++)
                            {
                                if (rintang[i]==3)
                                    if (map[x][3]=="  ")
                                        score=score+1;
                                if (map[x][3]=="* ")
                                    wasit=false;
                            }
                            map[x][3]="& ";
                            for (int i=1; i<19; i++)
                            {
                                map[i][1]="  ";
                            }
                            for (int i=0; i<20; i++)
                            {
                                for (int j=0; j<30; j++)
                                {
                                    cout << map[i][j];
                                }
                                cout <<endl;
                            }
                            cout << "Score = "<<score;
                            Sleep (100);
                            //system ("cls");
                            SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), {0,0});
                        }
                        cout << "Score = " <<score<<endl;
                        if (highscore<score)
                            highscore=score;
                        cout << "Highscore= "<<highscore<<endl;
                        cout << "retry?(y/n) = ";
                        cin >>repeat;
                    }
                    system("COLOR 0A");
                    system("CLS");
                    goto back;
                    return 0;
                }
            }
        }

        goto meniu;
        return 0;
    }
    else if (selection == 2)
    {
// Ping Pong
        system("CLS");
        cout << "You have selected Ping Pong." << endl;
        cout << "Please select an option:" << endl;
        cout << "1. Buy the game" << endl;
        cout << "2. Try the game" << endl;

// User input
        int option;
        cin >> option;

// Option selection
        if (option == 1)
        {
            int m;
            prices:
            // Buy the game
            system("CLS");
            // vector of prices
            vector<double> prices = {1.99, 0.99, 0.89};

            // sort the prices in ascending order
            sort(prices.begin(), prices.end());
            cout << "You have selected to buy Ping Pong." << endl;
            cout << "Please select a store from the following options:" << endl;
            cout << "1. Store 1 (price: $" << prices[0] << ")" << endl;
            cout << "2. Store 2 (price: $" << prices[1] << ")" << endl;
            cout << "3. Store 3 (price: $" << prices[2] << ")" << endl;
            cout << "4. Find cheapest price" << endl;


            // User input
            int store;
            cin >> store;

            // Store selection
            {

                system("CLS");
                if (store == 1)
                {
                    cout << "You have purchased Ping Pong from Store 1 for $1.99. Thank you for your purchase!" << endl;
                }
                else if (store == 2)
                {
                    cout << "You have purchased Ping Pong from Store 2 for $0.99. Thank you for your purchase!" << endl;
                }
                else if (store == 3)
                {
                    cout << "You have purchased Ping Pong from Store 3 for $0.89. Thank you for your purchase!" << endl;
                }
                if (store == 4)
                {
                    // print the cheapest price
                    cout << "The cheapest price is $" << prices[0] << endl;
                    system ("pause");
                    goto prices;
                }
                else
                {
                    cout << "Invalid store selection. Please try again." << endl;
                }
                system ("pause");
                goto meniu;
            }
        }
        else if (option == 2)
        {
            {
                srand(time(NULL));
                int papanmin1,papanmax1,papanmin2,papanmax2;
                papanmin1=9;
                papanmax1=11;
                papanmin2=9;
                papanmax2=11;
                char key;
                char key1;
                int x,y;
                x=18;
                y=10;
                int direction=(rand()%4)+1;
                int pantulankanan=0;
                int pantulankiri=0;
                while(true)
                {
                    if(x==34&&y==2)
                    {
                        if(direction==1) direction=3;
                    }
                    else if(x==34&&y==19)
                    {
                        if(direction==2) direction=4;
                    }
                    else if(x==2&&y==2)
                    {
                        if(direction==4) direction=2;
                    }
                    else if(x==2&&y==19)
                    {
                        if(direction==4) direction=2;
                    }
                    else if(x==5&&y==papanmax1)
                    {
                        if(direction==3) direction=1;
                    }
                    else if(x==5&&y==papanmin1)
                    {
                        if(direction==4) direction=2;
                    }
                    else if(x==31&&y==papanmin2)
                    {
                        if(direction==1) direction=3;
                    }
                    else if(x==31&&y==papanmax2)
                    {
                        if(direction==2) direction=4;
                    }

                    if(direction==2)
                    {
                        x++;
                        y++;
                    }
                    else if(direction==1)
                    {
                        x++;
                        y--;
                    }
                    else if(direction==3)
                    {
                        x--;
                        y++;
                    }
                    else if(direction==4)
                    {
                        x--;
                        y--;
                    }
                    //papan kiri
                    if(kbhit())
                    {
                        key=getch();
                    }
                    if(papanmin1>=2&&papanmax1<=19)
                    {
                        if(papanmin1-1!=1)
                        {
                            if(key=='w'||key=='W')
                            {
                                papanmin1-=1;
                                papanmax1-=1;
                            }
                        }
                        if(papanmax1+1!=20)
                        {
                            if(key=='s'||key=='S')
                            {
                                papanmin1+=1;
                                papanmax1+=1;
                            }
                        }
                    }
                    if(papanmin2>=2&&papanmax2<=19)
                    {
                        if(papanmin2-1!=1)
                        {
                            if(key=='i'||key=='I')
                            {
                                papanmin2-=1;
                                papanmax2-=1;
                            }
                        }
                        if(papanmax2+1!=20)
                        {
                            if(key=='k'||key=='K')
                            {
                                papanmin2+=1;
                                papanmax2+=1;
                            }
                        }
                    }

                    for(int i=1; i<=20; i++)
                    {
                        for(int j=1; j<=35; j++)
                        {
                            if(i==1||i==20||j==1||j==35) cout << "*";
                            else if(j==4 && (i>=papanmin1&&i<=papanmax1)) cout << ".";
                            else if(j==32 && (i>=papanmin2&&i<=papanmax2)) cout << ".";
                            else if(j==x&&i==y) cout << "o";
                            else cout << " ";
                        }
                        cout <<endl;
                    }
                    cout << "Point Player 1: " << pantulankanan <<endl;
                    cout << "Point Player 2: " << pantulankiri <<endl;
                    if(x==34&&y>=3&&y<=18)
                    {
                        if(direction==2)
                        {
                            direction=3;
                            pantulankanan++;
                        }
                        else
                        {
                            direction=4;
                            pantulankanan++;
                        }
                    }
                    else if(y==19&&x>=3&&x<=33)
                    {
                        if(direction==3)
                        {
                            direction=4;
                        }
                        else
                        {
                            direction=1;
                        }
                    }
                    else if(y==2&&x>=3&&x<=33)
                    {
                        if(direction==1)
                        {
                            direction=2;
                        }
                        else
                        {
                            direction=3;
                        }
                    }
                    else if((y==papanmin1)&&x==5||(y==papanmin1+1)&&x==5||(y==papanmax1)&&x==5)
                    {
                        if(direction==4)
                        {
                            direction=1;
                        }
                        else
                        {
                            direction=2;
                        }
                    }
                    else if(x==2&&y>=3&&y<=18)
                    {
                        if(direction==4)
                        {
                            direction=1;
                            pantulankiri++;
                        }
                        else
                        {
                            direction=2;
                            pantulankiri++;
                        }
                    }
                    else if((y==papanmin2)&&x==31||(y==papanmin2+1)&&x==31||(y==papanmax2)&&x==31)
                    {
                        if(direction==1)
                        {
                            direction=4;
                        }
                        else
                        {
                            direction=3;
                        }
                    }
                    if(pantulankiri==5)
                    {
                        system("cls");
                        cout << "Player 1 Won!!";
                        return 0;
                    }
                    if(pantulankanan==5)
                    {
                        system("cls");
                        cout << "Player 2 Won!!";
                        return 0;
                    }
                    Sleep(100);
                    system("cls");
                }
                return 0;
            }
        }
    }
    else if (selection == 3)
    {
// Snake Game
        system("CLS");
        cout << "You have selected Snake Game." << endl;
        cout << "Please select an option:" << endl;
        cout << "1. Buy the game" << endl;
        cout << "2. Try the game" << endl;

// User input
        int option;
        cin >> option;

// Option selection
        if (option == 1)
        {
            int m;
            prices2:
            // Buy the game
            system("CLS");
            // vector of prices
            vector<double> prices = {1.99, 0.99, 0.89};

            // sort the prices in ascending order
            sort(prices.begin(), prices.end());
            cout << "You have selected to buy Snake Game." << endl;
            cout << "Please select a store from the following options:" << endl;
            cout << "1. Store 1 (price: $" << prices[0] << ")" << endl;
            cout << "2. Store 2 (price: $" << prices[1] << ")" << endl;
            cout << "3. Store 3 (price: $" << prices[2] << ")" << endl;
            cout << "4. Find cheapest price" << endl;


            // User input
            int store;
            cin >> store;

            // Store selection
            {

                system("CLS");
                if (store == 1)
                {
                    cout << "You have purchased Snake Game from Store 1 for $1.99. Thank you for your purchase!" << endl;
                }
                else if (store == 2)
                {
                    cout << "You have purchased Snake Game from Store 2 for $0.99. Thank you for your purchase!" << endl;
                }
                else if (store == 3)
                {
                    cout << "You have purchased Snake Game from Store 3 for $0.89. Thank you for your purchase!" << endl;
                }
                if (store == 4)
                {
                    // print the cheapest price
                    cout << "The cheapest price is $" << prices[0] << endl;
                    system ("pause");
                    goto prices2;
                }
                else
                {
                    cout << "Invalid store selection. Please try again." << endl;
                }
                system ("pause");
                goto meniu;
            }
        }
        else if (option == 2)
        {
            {
                int score,highscore;
                char retry='y';
                cout <<endl;
                cout <<endl;
                cout <<"  ***** *   *  ***  *   * *****  \n";
                cout <<"  *     **  * *   * * *   *      \n";
                cout <<"  ***** * * * ***** **    ***    \n";
                cout <<"      * *  ** *   * * *   *      \n";
                cout <<"  ***** *   * *   * *   * ****** \n";
                cout <<endl;
                cout <<" Press Any Key to Continue"<<endl;
                getch();
                while (retry=='y' || retry == 'Y')
                {
                    srand(time(NULL));
                    score=0;
                    int pion=(rand()-1)%18+1;//random letak awal makanan
                    int poin=(rand()-1)%18+1;
                    int x[100];//asumsikan panjang snake tidak lebih dari 100
                    int y[100];
                    x[0]=10;//declare letak awal snake
                    y[0]=10;
                    x[1]=9;
                    y[1]=10;
                    x[2]=8;
                    y[2]=10;
                    int ular=3 ;
                    string a[20][20];//lebar map
                    char ctr='d';//gerakan awal snake
                    while (x[0]!=0 && x[0]!=19 && y[0]!=0 && y[0]!=19)
                    {
                        for (int i=0; i<20; i++)
                        {
                            for (int j=0; j<20; j++)
                            {
                                if (i==0 || j==0 || i==19 || j==19)
                                    a[i][j]="* ";//mencetak batas pinggir
                                else
                                    a[i][j]="  ";//mencetak jalan
                            }
                        }
                        a[poin][pion]="o "; //mencetak makanan
                        for(int s=ular; s>0; s--)
                        {
                            x[s]=x[s-1];//agar badan dan ekor mengikuti kepala snake
                            y[s]=y[s-1];
                        }
                        for (int r=0; r<=ular; r++)
                        {
                            a[y[r]][x[r]]="* ";
                        }
                        if (kbhit())//meminta inputan w,a,s,d untuk gerak snake
                        {
                            ctr=getch();
                        }
                        if(ctr=='w')
                            y[0]--;
                        if(ctr=='s')
                            y[0]++;
                        if(ctr=='a')
                            x[0]--;
                        if(ctr=='d')
                            x[0]++;
                        for(int m=0; m<20; m++)
                        {
                            for (int n=0; n<20; n++)
                            {
                                cout << a[m][n]; //menampilkan game
                            }
                            cout <<endl;
                        }
                        if (a[0][0]==a[poin][pion])
                        {
                            ular++;
                            poin=rand()%19;
                            if (poin%19==0)
                                poin++;
                            pion=rand()%19;
                            if (pion%19==0)
                                pion++;
                            score=score+1;
                        }
                        for (int gh=1; gh<ular; gh++) //agar snake mati saat menabrak dirinya
                        {
                            if (x[0]==x[gh] && y[0]==y[gh] )
                            {
                                x[0]=0;
                            }
                        }
                        Sleep(60);
                        //system("cls");


                        //KOMANDA NUO TRIGDZIU===================================================


                        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), {0,0});
                    }
                    cout << "GAMEOVER!" <<endl;
                    cout << "Score = " << score<<endl;
                    if (score > highscore)
                    {
                        highscore=score;
                    }
                    cout << "High Score = "<<highscore<<endl;
                    cout << "retry (y/n)";
                    cin >>retry;
                }
                return 0;
            }
        }

    }
}