Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Tworzenie menu w konsoli

Ostatnio zmodyfikowano 2012-04-13 21:52
Autor Wiadomość
Schulze13
Temat założony przez niniejszego użytkownika
[C++] Tworzenie menu w konsoli
» 2012-04-10 15:04:26
Witam,
Mam pytanie, czy istnieje możliwość stworzenia menu tekstowego w konsoli, w którym przemieszczanie następowało by po naciśnięciu strzałek góra, dół i zatwierdzenie strzałką w prawo?
np
PROGRAM

>opcja1
opcja2
exit
po naciśnięciu strzałki w dół.
PROGRAM

opcja1
>opcja2
exit
P-54253
DejaVu
» 2012-04-10 15:18:07
Da się - » KursyKurs New Curses, C++ kurs.
P-54254
Schulze13
Temat założony przez niniejszego użytkownika
» 2012-04-10 15:20:31
Dziękuję
@edit
Niestety po doinstalowaniu 5 header'ów (unctrl.h, termcap.h, cdefs.h, curses.h ncurses.h). Min-GW pokazuje to
In file included from c:\mingw\bin\../lib/gcc/mingw32/4.6.1/../../../../include/ncurses.h:23:0,
                 from main.cpp:1:
c:\mingw\bin\../lib/gcc/mingw32/4.6.1/../../../../include/curses.h:634:39: error: '_BSD_VA_LIST_' has not been declared
c:\mingw\bin\../lib/gcc/mingw32/4.6.1/../../../../include/curses.h:636:38: error: '_BSD_VA_LIST_' has not been declared
make[2]: *** [build/Debug/MinGW-Windows/main.o] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
P-54255
Degezor
» 2012-04-10 16:22:10
Ja w swoich aplikacjach do menu wykorzystuję taki kod:
C/C++
#include <iostream>
#include <windows.h>
#include <conio.h>

using namespace std;

//funkcja, która przestawia kursor konsoli w dowolne miejsce
void gotoxy( const int x, const int y )
{
    COORD coord = { x, y };
    SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
}

int OpcjaA()
{
    return 0;
}

int OpcjaB()
{
    return 0;
}

int main()
{
    int wybor;
    int poprzedniWybor;
    bool wykonujPetle;
   
    //pętla główna programu
    while( 1 )
    {
        wybor = 0;
        poprzedniWybor = wybor;
        wykonujPetle = true;
       
        //rysowanie menu
        system( "cls" );
        gotoxy( 3, 1 );
        cout << "Opcja A";
        gotoxy( 3, 3 );
        cout << "Opcja B";
        gotoxy( 3, 5 );
        cout << "Exit";
       
        //przesuwanie strzałki
        while( wykonujPetle )
        {
            //rysowanie strzałki wyboru
            gotoxy( 1, wybor * 2 + 1 );
            cout << static_cast < char >( 16 );
           
            //obsługa klawiatury
            poprzedniWybor = wybor;
            switch( getch() )
            {
            case 224: //STRZAŁKI
                switch( getch() )
                {
                case 72: //strzałka w górę
                    if( 0 < wybor ) wybor--;
                    else wybor = 2;
                   
                    break;
                   
                case 80: //strzałka w dół
                    if( wybor < 2 ) wybor++;
                    else wybor = 0;
                   
                    break;
                   
                case 77: //strzałka w prawo
                    //jeżeli wciśnięto strzałkę w prawo, sprawdź wybraną opcję i wykonaj odpowiednią akcję
                    switch( wybor )
                    {
                    case 0:
                        OpcjaA();
                        break;
                       
                    case 1:
                        OpcjaB();
                        break;
                       
                    case 2:
                        return 0;
                    }
                }
                break;
            }
           
            //czyszczenie strzałki wyboru
            gotoxy( 1, poprzedniWybor * 2 + 1 );
            cout << " ";
        }
    }
    return 0;
}

Jeżeli czegoś nie wiesz - pytaj śmiało
P-54256
Schulze13
Temat założony przez niniejszego użytkownika
» 2012-04-10 17:27:28
jeszcze tylko jakie "id" ma ENTER. Program zdecydowanie lepszy bo nie wymaga 5 różnych niestandardowych header'ów
@edit
jak wy edytować położenie strzałki podczas wyboru?
P-54257
jankowalski25
» 2012-04-10 19:42:24
jakie "id" ma ENTER
» Kurs C++Obsługa klawiatury za pomocą <conio.h> lekcja
Możesz również skorzystać z » Kurs C++ v1.0Biblioteka console.ddt lekcja, ale jeśli nie musisz używać konsoli, to przy pisaniu gier lepiej skorzystać z jakiejś biblioteki graficznej, np » KursyKurs SFML 1.6, C++ kurs
P-54260
Schulze13
Temat założony przez niniejszego użytkownika
» 2012-04-10 20:50:10
Janie, tą lekcje już przerobiłem, druga biblioteka, możliwe, że nie będzie działała z pętlą.
P-54265
RazzorFlame
» 2012-04-11 09:26:43
Schulze13 ty wiesz ze ncurses jest dla linuksa? Zainstaluj normalne "curses". Wpisz se w google c++ curses windows download (no chyba ze masz linuxa :D)
P-54288
« 1 » 2
  Strona 1 z 2 Następna strona