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

[C++] Aplikacje okienkowe - jakie biblioteki?

Ostatnio zmodyfikowano 2012-10-13 00:48
Autor Wiadomość
ubalf
Temat założony przez niniejszego użytkownika
[C++] Aplikacje okienkowe - jakie biblioteki?
» 2012-10-13 00:03:11
Witam, jestem tu dość nowy. Obecnie przerobiłem 3 poziomy kursu C++. Za niedługo będę potrzebował stworzyć aplikację do jednej z nowych gier MMO - kalkulator punktów umiejętności. Będzie musiała być to aplikacja okienkowa, w której posiadamy określony zakres punktów i przydzielamy je do umiejętności (klikając na obrazki) tym samym odblokowując kolejne. Niestety z powodu mojej małej wiedzy nie potrafię określić jakich bibliotek będę potrzebował. Podstawowe funkcje, które będą mi potrzebne to:
- możliwość stworzenia okienka i GUI
- obsługa myszy i klawiatury
- dodawanie grafiki (obrazki umiejętności)
- zmienianie wartości zmiennych przy klikaniu na określona grafikę/w określonych obszarach
- zakładki (zbiory umiejętności dla różnych klas pod różnymi zakładkami)
- pokazywanie opisu umiejętności po najechaniu myszką na obrazek (najlepiej w prostokątnym dymku)
- nałożenie liczb jako obecnego stanu dodanych punktów do danej umiejętności na jej obrazek (np. 0/3 1/3 itd.)
- zamienienie kolorystyki obrazka na odcień szarości, kiedy umiejętność jest niedostępna (lub zmiana obrazka, szarość nałoże w gimpie)
Nie wiem jak do tego się zabrać. Umie tylko pisać aplikacje konsolowe. Byłbym bardzo wdzięczny za jakiekolwiek rady.

To owoce moich 2 godzin nauki (dość szybko się uczę):
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
bool check( int rnumber, int rcounter, int rnumbers[] )
{
    if( rcounter == 1 )
         return false;
   
    int repeat = 1;
    do
    {
        if( rnumber == rnumbers[ repeat ] )
             return true;
       
        repeat++;
    } while( repeat < rcounter );
   
    return false;
}
int main()
{
    srand( time( NULL ) );
    int program = 0;
    int id;
    bool checker = false;
    std::cout << "Programs:" << std::endl;
    switch( program )
    {
    case 0:
        std::cout << "0: Author." << std::endl;
    case 1:
        std::cout << "1: Guess the number." << std::endl;
    case 2:
        std::cout << "2: Counting sum of all even numbers from 1 to 100." << std::endl;
    case 3:
        std::cout << "3: Drawing machine." << std::endl;
    case 4:
        std::cout << "4: Drawing without repetition." << std::endl;
    case 5:
        std::cout << "5: Multiplication table." << std::endl;
    case 6:
        std::cout << "6: Words separator." << std::endl;
    case 7:
        std::cout << "7: Text lines loader." << std::endl;
        program++;
    }
    std::cout << std::endl << "Enter ID of program which you want to use:" << std::endl;
    do
    {
        std::cin >> id;
        if( id < 0 || id > 7 )
        {
            std::cout << "Program with that id doesn't exist!" << std::endl;
        }
        else
        {
            std::cout << "Launching..." << std::endl;
            checker = true;
        }
    } while( checker == false );
   
    std::cout << std::endl << "Running: ";
    switch( id )
    {
    case 0:
        std::cout << "Author." << std::endl;
        break;
    case 1:
        std::cout << "Guess the number." << std::endl;
        break;
    case 2:
        std::cout << "Counting sum of all even numbers from 1 to 100." << std::endl;
        break;
    case 3:
        std::cout << "Drawing machine." << std::endl;
        break;
    case 4:
        std::cout << "Drawing without repetition." << std::endl;
        break;
    case 5:
        std::cout << "Multiplication table." << std::endl;
        break;
    case 6:
        std::cout << "Words separator." << std::endl;
        break;
    case 7:
        std::cout << "Text lines loader." << std::endl;
    }
    std::cout << std::endl;
    if( id == 0 )
         std::cout << "Jacob Pietras" << std::endl;
   
    if( id == 1 )
    {
        bool correct = false;
        bool check;
        unsigned int input;
        int number =( rand() % 10 ) + 1;
        int shoots = 0;
        int errors = 0;
        std::cout << "Guess the number (from 1 to 10):" << std::endl;
        do
        {
            do
            {
                check = true;
                std::cin.clear();
                std::cin.sync();
                std::cin >> input;
                if( input < 1 )
                     check = false;
               
                if( input > 10 )
                     check = false;
               
                if( check == false )
                {
                    std::cout << "Only numbers from 1 to 10!" << std::endl;
                    errors++;
                }
            } while( check == false );
           
            if( input < number )
                 std::cout << "Too small." << std::endl;
           
            if( input > number )
                 std::cout << "Too big." << std::endl;
           
            if( input == number )
                 correct = true;
           
            shoots++;
        } while( correct == false );
       
        std::cout << "Correct! " << std::endl << std::endl << "You shooted: " << shoots;
        if( shoots < 2 )
             std::cout << " time.";
       
        if( shoots > 1 )
             std::cout << " times.";
       
        std::cout << std::endl << "Errors: " << errors << "." << std::endl;
    }
    if( id == 2 )
    {
        int numb = 1;
        int sum = 0;
        std::cout << "This application counts sum of all even numbers from 1 to 100." << std::endl;
        std::cout << std::endl;
        std::cout << "Counted numbers:" << std::endl;
        do
        {
            if( numb % 2 == 0 )
                 std::cout << numb << " ";
           
            numb++;
        } while( numb < 101 );
       
        numb = 1;
        std::cout << std::endl;
        std::cout << std::endl;
        std::cout << "Sum:" << std::endl;
        do
        {
            if( numb % 2 == 0 )
            {
                sum = sum + numb;
            }
            numb++;
        } while( numb < 101 );
       
        std::cout << sum << std::endl;
    }
    if( id == 3 )
    {
        int sum = 0;
        int temp;
        int numbers[ 999 ];
        int counter = 1;
        std::cout << "Drawed numbers (from 4 to 10):" << std::endl;
        do
        {
            temp =( rand() % 7 ) + 4;
            numbers[ counter ] = temp;
            counter++;
        } while( counter < 1000 );
       
        counter = 1;
        do
        {
            std::cout << numbers[ counter ] << " ";
            counter++;
        } while( counter < 1000 );
       
        counter = 1;
        do
        {
            sum = sum + numbers[ counter ];
            counter++;
        } while( counter < 1000 );
       
        std::cout << std::endl << std::endl << "Sum of drawed numbers: " << sum << std::endl;
    }
    if( id == 4 )
    {
        int counter = 1;
        int numbers[ 8 ];
        int number;
        bool checker;
        std::cout << "Drawed numbers (from 1 to 10):" << std::endl;
        do
        {
            checker = false;
            do
            {
                number =( rand() % 10 ) + 1;
                if( check( number, counter, numbers ) == false )
                     checker = true;
               
            } while( checker == false );
           
            std::cout << number << std::endl;
            numbers[ counter ] = number;
            counter++;
        } while( counter < 9 );
       
    }
    if( id == 5 )
    {
        int top = 1;
        int left = 1;
        for( int i = 1; i < 10; i++ )
        {
            for( int i = 1; i < 10; i++ )
            {
                std::cout << left * top << " ";
                top++;
            }
            std::cout << std::endl;
            top = 1;
            left++;
        }
    }
    if( id == 6 )
    {
        std::string table[ 10 ];
        table[ 1 ] = "First word:";
        table[ 2 ] = "Second word:";
        table[ 3 ] = "Third word:";
        table[ 4 ] = "Fourth word:";
        table[ 5 ] = "Fifth word:";
        table[ 6 ] = "Sixth word:";
        table[ 7 ] = "Seventh word:";
        table[ 8 ] = "Eighth word:";
        table[ 9 ] = "Ninth word:";
        table[ 10 ] = "Tenth word:";
        std::cout << "Enter ten words:" << std::endl << std::endl;
        for( int i = 1; i < 11; i++ )
        {
            std::cout << table[ i ] << std::endl;
            std::cin >> table[ i ];
        }
        std::cout << std::endl;
        std::cout << "Entered words separated with comas:" << std::endl;
        for( int i = 1; i < 10; i++ )
        {
            std::cout << table[ i ] << ", ";
        }
        std::cout << table[ 10 ] << std::endl;
    }
    if( id == 7 )
    {
        std::string name;
        std::cout << "Enter lne of text: ";
        std::cin.sync();
        std::getline( std::cin, name );
        std::cout << std::endl;
        std::cout << "You entered: " << name << std::endl;
    }
    return 0;
}
P-66730
DejaVu
» 2012-10-13 00:38:31
Normalnie chyba dodam rozdział "co dalej po kursie C++"... niestety 3 poziomy kursu C++ to stanowczo za mało. Zainwestuj w jakąś książkę do C++, a potem możesz poczytać albo o GTK+ albo o Qt (albo ostatecznie WinAPI ale raczej nazwałbym to strzałem w stopę) :)
P-66734
ubalf
Temat założony przez niniejszego użytkownika
» 2012-10-13 00:48:28
Ok, dzięki. Poczytam o GTK i zobaczę czy to mi wystarczy.
P-66735
« 1 »
  Strona 1 z 1