cdsc

 avatar
unknown
c_cpp
3 years ago
1.6 kB
4
Indexable
#include <iostream>
#include <string>
#include <ncurses.h>

using namespace std;

class Arrows {
private:
    string sequence;
    int cursor;

public:
    Arrows(string seq) {
        sequence = seq;
        cursor = 0;
    }

    void moveUp() {
        if (cursor > 0) {
            cursor--;
        }
    }

    void moveDown() {
        if (cursor < 3) {
            cursor++;
        }
    }

    void moveLeft() {
        if (cursor > 0) {
            cursor--;
        }
    }

    void moveRight() {
        if (cursor < 3) {
            cursor++;
        }
    }

    void setChar(char c) {
        sequence[cursor] = c;
    }

    char getChar() {
        return sequence[cursor];
    }

    string getSequence() {
        return sequence;
    }
};

int main() {
    initscr(); // inicjalizacja biblioteki ncurses
    Arrows arrows("ABCD");

    char ch;
    while ((ch = getch()) != 'q') { // pętla wykonywana do momentu naciśnięcia klawisza 'q'
        switch (ch) {
            case KEY_UP:
                arrows.moveUp();
                break;
            case KEY_DOWN:
                arrows.moveDown();
                break;
            case KEY_LEFT:
                arrows.moveLeft();
                break;
            case KEY_RIGHT:
                arrows.moveRight();
                break;
            default:
                arrows.setChar(ch); // jeśli naciśnięty został inny klawisz, zmieniamy znak pod kursorem
                break;
        }

        cout << arrows.getSequence() << endl;
    }

    endwin(); // kończymy pracę z biblioteką ncursed
    return 0;
}
Editor is loading...