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

Wychodzenie poza ekran

Ostatnio zmodyfikowano 2012-02-06 16:53
Autor Wiadomość
wiktor16s
Temat założony przez niniejszego użytkownika
» 2012-02-06 16:18:21
Napiszesz dokładnie jak? :)
P-50194
SeaMonster131
» 2012-02-06 16:23:52
Masz swój kod, masz if'y odpowiadające za obsługę strzałek, no to dorób kolejne 4 if'y i już.
P-50195
wiktor16s
Temat założony przez niniejszego użytkownika
» 2012-02-06 16:29:38
a dało by się w ten sposób:
wpadam w ściane, ściana "trzyma cie" przez np 1 sekunde i puszcza?

A i jeszcze jedno nada się taki algorytm menu:
C/C++
//mx - pozycja x myszy //my - pozycja y
if( mx > 100 && mx < 200 &&
my > 300 && my < 400 &&
klikniecie() == true );
//przycisk w kształcie kwadratu
{
    //co się stanie jak klikniesz
}
P-50196
SeaMonster131
» 2012-02-06 16:32:56
Tak, da się. Oraz owszem, menu tak się robi :)
P-50197
wiktor16s
Temat założony przez niniejszego użytkownika
» 2012-02-06 16:42:07
No to pozwolisz że się rozpisze, "Musze sczaić co i jak by nie popełniać błędów xD"

najpierw moja funkcja główna:
C/C++
#include <allegro.h>
#include <cmath>


//mx - pozycja x myszy //my - pozycja y
if( mx > 100 && mx < 200 &&
my > 300 && my < 400 &&
klikniecie() == true );
//przycisk w kształcie kwadratu // co mam tutaj dać? "kliknięcie" to jest teksturka mojego przycisku?
{
    //co się stanie jak klikniesz
   
   
   
   
   
    int mx = 0, my = 0, mb = 0;
    void myszka()
    {
        if( mx != mouse_x || my != mouse_y || mb != mouse_b )
        {
            mx = mouse_x;
            my = mouse_y;
            mb = mouse_b;
        }
    };
   
   
   
   
    // Inicjowanie timera
    volatile long speed = 0;
    void increment_speed()
    {
        speed++;
    }
    END_OF_FUNCTION( increment_speed );
    LOCK_VARIABLE( speed );
    LOCK_FUNCTION( increment_speed );
    //tablice z wartościami sinusów i cosinusów
   
   
    int samochod_x = 100, samochod_y = 100;
    double tab_sin[ 72 ];
    double tab_cos[ 72 ];
    //Wszystkie zmienne potrzebne do sterowania naszym samochodem:
    int sx = 188, sy = 384; // pozycja samochodu na ekranie
    double dx = 0, dy = 0; // przesuniêcie samochodu po osi X i Y
    int kierunek = 54; // aktualny kierunek samochodu
    double v = 0; // prêdkoœæ naszego samochodu
    int tx = 100, ty = 100;
   
    void laduj_sin_cos()
    {
        for( int i = 0; i < 72; i++ )
        {
            tab_sin[ i ] = sin(( M_PI *( i * 5 ) ) / 180 );
            tab_cos[ i ] = cos(( M_PI *( i * 5 ) ) / 180 );
        }
    }
   
    bool kolizja( void )
    {
        if( samochod_x < 500 ) v = 0;
       
        if( samochod_x > 100 ) v = 0;
       
        if( samochod_y < 800 ) v = 0;
       
        if( samochod_y > 0 ) v = 0;
       
    }
   
    // Zmienne potrzebne do mapy
    int mapa_x = 0, mapa_y = 0;
    BITMAP * teren = NULL;
    BITMAP * bufor = NULL;
    BITMAP * samochod = NULL;
    BITMAP * tlo = NULL;
    BITMAP * panbomba = NULL;
    BITMAP * tlo1 = NULL;
    BITMAP * przycisk = NULL; //np start
   
    // DEFINICJA MAPY
    short int map[ 15 ][ 20 ] =
    {
        3, 3, 3, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 3, 3,
        3, 3, 3, 8, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 8, 3, 3,
       
        3, 3, 3, 8, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 8, 3, 3,
        3, 3, 3, 8, 0, 0, 7, 9, 9, 9, 9, 9, 9, 9, 4, 0, 0, 8, 3, 3,
        3, 3, 3, 8, 0, 0, 8, 3, 3, 3, 3, 3, 3, 3, 8, 0, 0, 8, 3, 3,
        3, 3, 3, 8, 0, 0, 8, 3, 3, 3, 3, 3, 3, 3, 8, 0, 0, 8, 3, 3,
        3, 3, 3, 8, 0, 0, 8, 3, 3, 3, 3, 3, 3, 3, 8, 0, 0, 8, 3, 3,
        3, 3, 3, 8, 0, 0, 8, 3, 3, 3, 3, 3, 3, 3, 8, 0, 0, 8, 3, 3,
        3, 3, 3, 8, 0, 0, 8, 3, 3, 3, 3, 3, 3, 3, 8, 0, 0, 8, 3, 3,
        3, 3, 3, 8, 10, 10, 8, 3, 3, 3, 3, 3, 3, 3, 8, 0, 0, 8, 3, 3,
        3, 3, 3, 8, 0, 0, 8, 3, 3, 3, 3, 3, 3, 3, 8, 0, 0, 8, 3, 3,
        3, 3, 3, 8, 0, 0, 6, 9, 9, 9, 9, 9, 9, 9, 5, 0, 0, 8, 3, 3,
        3, 3, 3, 8, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 8, 3, 3,
        3, 3, 3, 8, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 8, 3, 3,
        3, 3, 3, 6, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 3, 3
    };
   
    // Funkcja wyœwietlaj¹ca mapê:
    void wys_mape()
    {
        int licznik_x, licznik_y;
        for( licznik_x = 0; licznik_x < 20; licznik_x++ )
        {
            for( licznik_y = 0; licznik_y < 15; licznik_y++ )
            {
               
               
                blit( teren, bufor,
                ( map[ licznik_y + mapa_y ][ licznik_x + mapa_x ] % 4 ) * 40,
                ( map[ licznik_y + mapa_y ][ licznik_x + mapa_x ] / 4 ) * 40,
                licznik_x * 40, licznik_y * 40, 40, 40 );
            }
        }
    };
   
   
    // Funkcja G³ówna
    int main()
    {
        allegro_init();
        install_keyboard();
        set_color_depth( 16 );
        set_gfx_mode( GFX_AUTODETECT_FULLSCREEN, 800, 600, 0, 0 );
        install_mouse();
        show_mouse( screen );
        unscare_mouse();
       
        install_timer();
        install_int_ex( increment_speed, BPS_TO_TIMER( 40 ) );
       
        laduj_sin_cos();
       
       
        samochod = load_bmp( "samochod.bmp", default_palette );
        if( !samochod ) {
            set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
            allegro_message( "nie mogê za³adowaæ obrazka Samochod !" );
            allegro_exit();
            return 0;
        }
       
        tlo = load_bmp( "tlo.bmp", default_palette );
        if( !samochod ) {
            set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
            allegro_message( "nie mogê za³adowaæ tla !" );
            allegro_exit();
            return 0;
        }
       
        // Tworzenie bufora
        bufor = create_bitmap( 800, 600 );
        if( !bufor )
        {
            set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
            allegro_message( "Nie mogê utworzyæ bufora !" );
            allegro_exit();
            return 0;
        }
        // £adowanie grafiki
        teren = load_bmp( "teren.bmp", default_palette );
       
        tlo1 = load_bmp( "tlo1.bmp", default_palette );
       
       
        while( !key[ KEY_ESC ] )
        {
            while( speed > 0 )
            {
               
                if(( key[ KEY_UP ] ) &&( samochod_y > 40 ) ) { v += 0.02; }
                if(( key[ KEY_DOWN ] ) &&( samochod_y < 600 ) ) { v -= 0.02; }
                if(( key[ KEY_LEFT ] ) &&( samochod_x > 20 ) ) { kierunek--; } else
                if(( key[ KEY_RIGHT ] ) &&( samochod_x < 780 ) ) { kierunek++; }
               
                speed--;
               
            }
           
            // Sprawdzamy wszystkie ograniczenia:
            if( kierunek > 71 ) kierunek = 0;
           
            if( kierunek < 0 ) kierunek = 71;
           
            if( v > 1.1 ) v = 1.1;
           
            if( v <- 0.2 ) v =- 0.2;
           
           
            if( sx > 675 ) v = 0;
           
            if( sx < 132 ) v = 0;
           
            if( sy < 10 ) v = 0;
           
            if( sy > 550 ) v = 0;
           
            // Obliczanie prędkości cząstkowych:
            dx += v * tab_cos[ kierunek ];
            dy += v * tab_sin[ kierunek ];
            // Przemieszczanie naszego samochodu:
            if( dx >= 1 || dx <= - 1 ) { sx += int( dx ); dx = dx - int( dx ); }
            if( dy >= 1 || dy <= - 1 ) { sy += int( dy ); dy = dy - int( dy ); }
           
           
            // wyœwietlanie naszego samochodu:
            masked_blit( samochod, bufor,( kierunek % 18 ) * 30,( kierunek / 18 ) * 30, sx, sy, 30, 30 );
           
            blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
           
           
            blit( bufor, screen, 0, 0, 0, 0, 800, 600 );
            masked_blit( tlo1, bufor, 0, 0, 0, 0, 800, 600 );
           
           
            // Czyszczenie bufora
            clear_to_color( bufor, makecol( 150, 150, 150 ) );
           
            // Wyœwietlanie mapy
            wys_mape();
        }
       
        // Usuwanie wszystkiego z pamiêci.
        remove_int( increment_speed );
        destroy_bitmap( teren );
        destroy_bitmap( bufor );
        destroy_bitmap( samochod );
        allegro_exit();
        return 0;
    }
    END_OF_MAIN();
}
coś takiego? wyjdzie z tego menu z jednym przyciskiem, dobrze rozumiem?
P-50200
SeaMonster131
» 2012-02-06 16:52:07
Powiem inaczej.. na początku weź sie za » KursyKurs C++ kurs, a dopiero potem pisz gry. Dopiero wtedy możemy Ci pomóc. Tylko pamiętaj - temat menu na pewno był już na tym forum, więc warto też używać wyszukiwarki. Właśnie do tego celu została ona stworzona.
P-50203
wiktor16s
Temat założony przez niniejszego użytkownika
» 2012-02-06 16:53:55
dobra :)
i tak mi dużo pomogliście ;)
Zamykam temat.
Dzięki wielkie i pozdrawiam

Wiktor16s
P-50204
1 « 2 »
Poprzednia strona Strona 2 z 2