CopyPastehas never been so tasty!

Test Command Prompt (C++)

by anonymous

  • 0
  • 0
  • 0
110 views

#include <iostream>
#include <windows.h>
#include <conio.h>
#include <stdio.h>
#include <cstring>
#include <string>
#include <climits>
#include <vector>

using namespace std;

string name="Window_Test";

string History[10];
int currComm = 0;
int ConnectionAttempts = 0;
string vUsername="fcharette";
string vPassword="bonjour";

int callstack = 0;
int findstack = 0;

int heroX    = 24;
int heroY    = 14;

void help(void);
void history(void);
void addition(void);
void subtract(void);
void multiply(void);
void divide(void);
void outputer(void);
void game(void);

int SizesSize;

vector<char*>commands;
vector<char*>comname;
vector<char*>comdesc;

void help()
{
    cout << endl <<
        "List of Commands "                                                                                                            << endl <<
        "================"                                                                                                            << endl;
    for(int i=0;i<SizesSize;++i){
        cout << commands[i] << " = " << comname [i] << (char)186 << comdesc[i] << endl;
    }
   
}

void add()
{
    int a;
    int b;

    cout << endl <<
        "Addition "                                                                                                            << endl <<
        "========"                                                                                                            << endl <<
        "Enter a number : ";
    cin >> a;
    cout << "Enter a second Number :";
    cin >> b;
    cout << endl << a << " + " << b << " = " << a+b << endl;
}
void subtract()
{
    int a;
    int b;

    cout << endl <<
        "Subtraction "                                                                                                            << endl <<
        "==========="                                                                                                            << endl <<
        "Enter a number : ";
    cin >> a;
    cout << "Enter a second Number :";
    cin >> b;
    cout << endl << a << " - " << b << " = " << a-b << endl;
}
void multiply()
{
    int a;
    int b;

    cout << endl <<
        "Multiplication "                                                                                                            << endl <<
        "=============="                                                                                                            << endl <<
        "Enter a number : ";
    cin >> a;
    cout << "Enter a second Number :";
    cin >> b;
    cout << endl << a << " * " << b << " = " << a*b << endl;
}
void divide()
{
    int a;
    int b;

    cout << endl <<
        "Division "                                                                                                            << endl <<
        "========"                                                                                                            << endl <<
        "Enter a number : ";
    cin >> a;
    cout << "Enter a second Number :";
    cin >> b;
    if(b == 0)
    {
        cout << "Division by 0 cannot be executed !" << endl;
    }
    else
    {
    cout << endl << a << " / " << b << " = " << a/b << endl;
    }
}

void history()
{
    cout << endl <<
        "History "                                                                                                            << endl <<
        "======="                                                                                                            << endl <<
        "Number of entered Commands : " << currComm                                                                            << endl <<
        "Command History : ";
    for(int i=0; i<::currComm;++i){
    cout << ::History[i] << ",";
    }
    cout << "\0" << endl;
}

void outputer(){

    cout << endl <<
        "Outputter "                                                                                                            << endl <<
        "========="                                                                                                            << endl <<
        "Press ESC to leave mode"                                                                             << endl <<
        "Key : ";
    int  ch;

    ch = -1;
    while (ch != 0x1B)              /* watch for an ESC */
    {
        if (kbhit())                /* check for a keystroke */
        {
            ch = getch();           /* get the key */
            printf("%02X", ch);
            if (isprint(ch)) printf("/%c", ch);
            if (ch == 0)            /* if it's 0... */
            {
                ch = getch();       /* get the next key */
                printf("  %02X", ch);
                if (isprint(ch)) printf("/%c", ch);
            }
            printf("\n");
        }
    }
}
void refresh(){
    system("cls");
    for(int u=0;u<30;++u){
        for(int i=0;i<50;++i){
            if(u == 0 || i == 0 || u == 29 || i == 49 || (i == ::heroX && u == ::heroY)){
                cout << "0";
            }
            else{
                cout << " ";
            }
        }
    }
}

void wait(long frames)
{
    //frames = frames;            // 1000 FPS
    //frames = frames * 2;        // 500 FPS
    //frames = frames * 16;        // About 60 FPS
    //frames = frames * 32;        // About 30 FPS
    frames = frames * 100;        // 10 FPS
    //frames = frames * 1000;    // 1 FPS
    Sleep(frames);
}

void game(){

    refresh();
    wait(1); //Wait 1Frame

    int  c;

    do{
        c = _getch();
        switch(c)
        {
        case 0:
            {
                break;
            }
        case 0x4D:
            {
                ++::heroX;
                refresh();
                //wait(1); //Wait 1Frame
                break;
            }
        case 0x4B:
            {
                --::heroX;
                refresh();
                //wait(1); //Wait 1Frame
                break;
            }
        case 0x48:
            {
                --::heroY;
                refresh();
                //wait(1); //Wait 1Frame
                break;
            }
        case 0x50:
            {
                ++::heroY;
                refresh();
                //wait(1); //Wait 1Frame
                break;
            }
        }
    }
    while (c != 0x1B);
    system("cls");
}

int findIndex(string item){
    int retour = 0;
        for(int i=0;i<SizesSize;++i){
            if(item.compare(commands[i])==0){
                retour = 1;
                switch(i){
                    case 0: help();
                        break;
                    case 1: history();
                        break;
                    case 2: add();
                        break;
                    case 3: subtract();
                        break;
                    case 4: multiply();
                        break;
                    case 5: divide();
                        break;
                    case 6: outputer();
                        break;
                    case 7: game();
                        break;
                    case 8: exit(0);
                        break;
                }
            }
            if(retour == 1){
                break;
            }
        }
    return(retour);
}

void com()
{
    string Comm ="";
    cout << char(10) << "Veuillez entrer une commande : ";
    //cin >> Comm;
    int c;

    do  
    {
        c = _getch();
        switch(c)
        {
        case 0:
            {
                break;
            }
        case '\b':
            {
                if(Comm.size() != 0) 
                {
                    cout << "\b \b";
                    Comm.erase(Comm.size() - 1, 1);
                }
                break;      
            }  
        default:
            {
                if(isalnum(c) || ispunct(c))
                {
                    Comm += c;
                    cout << char(c);          
                }
                break;    
            }     
        };
    }
    while(c != '\r');
    ::History[::currComm] = Comm;
    ++::currComm;
    int succes=findIndex(Comm);
    if(succes != 1)
    {
        cout << endl << "Invalid Command '" << Comm << "'. Please Type 'help' to display the list of all available commands." << endl;
    }
    com();
}



void main()
{
    if(callstack == 0 && ConnectionAttempts == 0){
        comdesc.push_back(" Displays the list of all possible commands");
        comdesc.push_back(" Displays previously entered commands");
        comdesc.push_back(" Adds a first number to a second one");
        comdesc.push_back(" Subtracts a first number to a second one");
        comdesc.push_back(" Multiplies a first number to a second one");
        comdesc.push_back(" Divides a first number to a second one");
        comdesc.push_back(" Displays the ASCII/value of the selected input");
        comdesc.push_back(" A simple movearound game");
        comdesc.push_back(" Exits the Program");

        comname.push_back("List of Commands                  ");
        comname.push_back("History                        ");
        comname.push_back("Addition                           ");
        comname.push_back("Subtraction                   ");
        comname.push_back("Multiplication                ");
        comname.push_back("Division                        ");
        comname.push_back("Outputter                      ");
        comname.push_back("Game                              ");
        comname.push_back("Exit                              ");

        commands.push_back("help");
        commands.push_back("history");
        commands.push_back("add");
        commands.push_back("subtract");
        commands.push_back("multiply");
        commands.push_back("divide");
        commands.push_back("output");
        commands.push_back("game");
        commands.push_back("exit");

        SizesSize = commands.size();
    }

    string User;
    string PW;
   
    if(ConnectionAttempts == 0)
    {
        cout << "Invite de Commande 1.00.1 - Par Frederic Charette" << char(10) << "<fcharette@ea.com>" << char(10);
    }
    else
    {
        cout << endl << 3-ConnectionAttempts << " tries left.";
    }

    if(ConnectionAttempts == 3)
    {
        exit(0);
    }

    cout << char(10) << "Login : ";
    cin >> User;
   
    if(User.compare(::vUsername)==0)
    {
        cout << "Password : ";
        int c;
        string password = "";

        do  
        {
            c = _getch();
            switch(c)
            {
            case 0:
                {
                    break;
                }
            case '\b':
                {
                    if(password.size() != 0) 
                    {
                        cout << "\b \b";
                        password.erase(password.size() - 1, 1);
                    }
                    break;      
                }  
            default:
                {
                    if(isalnum(c) || ispunct(c))
                    {
                        password += c;
                        cout << "*";          
                    }
                    break;    
                }     
            };
        }
        while(c != '\r');

        if(password.compare(::vPassword)==0){
            cout << endl;
            if(callstack == 0){
                ++callstack;
                com();
            }
        }
        else{
            cout << endl << "Wrong Username/ Password";
            ++ConnectionAttempts;
            main();
        }
       
    }
    else
    {
        cout << "Wrong Username/ Password";
        ++ConnectionAttempts;
        main();
    }
}

Add A Comment: