2015-09-16 5 views
2

Я изо всех сил пытаюсь нарисовать рисунок круга с помощью символов стрелки вместе с delay(); или Sleep();, как после печати он задержится на пару секунд, а затем распечатает и так далее. которая создаст впечатление от круга . Что-то вродеПечать круга с использованием символов стрелок

 ↑ 

    ←   → 

     ↓ 

Я пытался искать везде, и то, что я нашел до сих пор как читать клавиши со стрелками только или VM_KEYDOWN documentation. К сожалению, это не то, что я хочу. Пожалуйста помоги? Ps. Я знаю, что я не опубликовал «Продуктивную попытку», и это потому, что у меня нет таких, чтобы не рассердиться: X Любая помощь будет принята с благодарностью. :)

ОБНОВЛЕНО: Я попытался напечатать стрелки с этой неудачной попыткой.

#include <iostream> 
#include <string> 
int main() { 
    std::wstring s(L"←→↑↓"); 
    std::wcout << s << "\n"; 
} 

ОБНОВЛЕНО-2 * Так мне удалось напечатать символы с этим:

#include <iostream> 
using namespace std; 
int main() 
{ 
    char left,right,up,down; 

    up = 24; 
    down = 25; 
    left = 27; 
    right = 26; 

    cout << up; 
    cout << down; 
    cout << left; 
    cout << right; 
    cout << "\n"; 
    system("PAUSE"); 
    return 0; 
} 

Но теперь мне нужно знать, как сделать это с последовательностями, как напечатано в выше.

Работа Покушение

#include <iostream> 
#include <iomanip> 
#include <windows.h> 

using namespace std; 
int main() 
{ 
    char left, right, up, down; 

    up = 24; 
    down = 25; 
    left = 27; 
    right = 26; 
    cout << setw(10); 
    cout << up; 
    cout << endl; 
    cout << setw(20); 
    Sleep(1000); 
    cout << right; 

    cout << endl; 
    cout << endl; 
    cout << endl; 

    cout << setw(10); 
    Sleep(1000); 
    cout << down; 
    Sleep(1000); 

    cout << left; 

    system("PAUSE"); 
    return 0; 
} 

Но это явно не точны/эффективным.

+0

Вы хотите сделать это в графическом окне или в терминале? В любом случае вам понадобится внешняя библиотека, такая как nCurses для обработки терминала. – Quentin

+0

@ Quentin Пожалуйста, уточните? Я намереваюсь сделать это на консоли (если это имеет смысл) Какая внешняя библиотека? и я прочитал некоторые о nCurses здесь: http://www.linuxquestions.org/questions/programming-9/detecting-arrow-key-presses-in-cc-166055/ Если это правильно, –

+0

Затем nCurses (PDCurses on Windows IIRC) - это то, что вам нужно. Документация [здесь] (http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/). ['keypad()'] (http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/init.html#KEYPAD) - это то, что вам нужно для функциональности клавиш со стрелками. – Quentin

ответ

1

Приятно видеть, что усилия. Я сделал несколько изменений и добавил функцию, чтобы установить позицию курсора в ту же строку, где вы напечатали . Попробуйте это:

#include <iostream> 
    #include <iomanip> 
    #include <windows.h> 
    #include <conio.h> 
    using namespace std; 
    HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE); 
    COORD CursorPosition; 
    void gotoXY(int, int); 

    int main(){ 
    char left, right, up, down; 
    up = 24; 
    down = 25; 
    left = 27; 
    right = 26; 
    cout << setw(20) << up<< endl << endl << endl<< setw(25); 
    Sleep(1000); 
    cout << right << endl<< endl<< endl << setw(20); 
    Sleep(1000); 
    cout << down; 
    Sleep(1000); 
    cout << endl; 
    gotoXY(0, 2 + (1)); 
    cout << setw(15) << left<< endl; 
    _getch(); 
    return 0; 
    } 
    void gotoXY(int x, int y) 
    { 
     CursorPosition.X = x; 
     CursorPosition.Y = y; 
     SetConsoleCursorPosition(console, CursorPosition); 
    } 

Я признаю, что это не так эффективен как, но это работает, и это должно помочь вы понимаете/двигаться вперед лучше.

+0

Это именно то, что я хотел, я знаю, что делать дальше. Thankyouuu soo muchh !! –

+0

Вы можете сократить код, удалив несколько куттов. Как 'cout << setw (20) << вверх << endl << endl << endl << setw (25);' – Logman

+0

@Undefined Im рад, что это помогло :) – user5173426