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

Kolizje w allegro C++

Ostatnio zmodyfikowano 2012-04-09 12:55
Autor Wiadomość
xevuel
» 2012-04-06 10:35:20
Aj, faktycznie, przeoczyłem tą linijkę:
install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) );


A co do średników, to chodziło mi o to, że on podstaw nie zna, bo są one tam niepotrzebne. Ja wiem, że można dać ich 1000, ale po co? Jak poprawiałem ten jego kod to to były błędy składniowe - nie logiczne.

@cichy: Wywołuje ci się w ogóle funkcja kolizja()? Jak nie, to znaczy że jednak jest coś z tą zmienną speed.
P-53945
cichy
Temat założony przez niniejszego użytkownika
» 2012-04-07 12:58:56
Nie wywołuje mi się właśnie kolizja ale przeniosłem funkcję spawn() do tego miejsce ze zmienną speed i działa. Dlatego to raczej błędy z wywołaniem funkcji kolizja().
P-54022
cichy
Temat założony przez niniejszego użytkownika
» 2012-04-09 12:55:38
Funkcja kolizja() jednak się wywołuje ale nie zwraca błędu. Nie działają zależności np.:

                
C/C++
if(( kwadrat_y + kwadrat_h - 1 ) < kolo_y or kolo_x >( kwadrat_x + kwadrat_s ) or( kolo_y + kolo_h - 1 ) < kwadrat_y or kolo_x >( kwadrat_x + kwadrat_s + 1 ) )
{
    if( kolo_x > 0 )
    {
        if( key[ KEY_A ] ) kolo_x--;
       
    }
}

Wstawiam cały kod jakby komuś się chciało kompilować:

C/C++
#include <allegro.h>
#include <ctime>
#include <iostream>

void kolizja( int kolo_x, int kolo_y, int kolo_s, int kolo_h, int kwadrat_x, int kwadrat_y, int kwadrat_s, int kwadrat_h )
{
   
    if(( kwadrat_y + kwadrat_h - 1 ) < kolo_y or kolo_x >( kwadrat_x + kwadrat_s ) or( kolo_y + kolo_h - 1 ) < kwadrat_y or kolo_x >( kwadrat_x + kwadrat_s + 1 ) )
    {
        if( kolo_x > 0 )
        {
            if( key[ KEY_A ] ) kolo_x--;
           
        }
    }
   
    if(( kolo_x + 24 ) < 640 )
    {
        if(( kwadrat_y + kwadrat_h - 1 ) < kolo_y or kolo_x + kolo_s < kwadrat_x or kolo_y + kolo_h - 1 < kwadrat_y or kolo_y + kolo_s > kwadrat_x or kolo_x > kwadrat_x + kwadrat_s - 1 )
        {
            if( key[ KEY_D ] ) kolo_x++;
           
        }
    }
   
    if(( kolo_x + kolo_s - 1 ) < kwadrat_x or kolo_x >( kwadrat_x + kwadrat_s - 1 ) or kolo_y >( kwadrat_y + kwadrat_h ) or kolo_y + kolo_h - 1 < kwadrat_y )
    {
        if( kolo_y > 0 )
        {
            if( key[ KEY_W ] )
            {
                kolo_y--;
            }
           
        }
    }
   
    if(( kolo_y + 25 ) < 480 )
    {
        if( kolo_x + kolo_s - 1 < kwadrat_x or kolo_x > kwadrat_x + kwadrat_s - 1 or kolo_y + kolo_h < kwadrat_y or kolo_y > kwadrat_y + kwadrat_h - 1 )
        {
            if( key[ KEY_S ] ) kolo_y++;
           
        }
    }
}

//Zmienne
int kolo_x = 100;
int kolo_y = 100;
int kolo_s = 24;
int kolo_h = 25;

int kwadrat_x = 200;
int kwadrat_y = 100;
int kwadrat_s = 70;
int kwadrat_h = 70;

volatile long speed = 0;

//Petla FPSow    
void increment_speed()
{
    speed++;
}
END_OF_FUNCTION( increment_speed );

void spawn()
{
    kolo_x = 10;
    kolo_y = 10;
}
END_OF_FUNCTION( spawn );

void init();
void spawn();

//Zmienne speedowe
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );

//Funkcja main
int main() {
   
    init();
   
    install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) );
   
   
    //Tworzenie BITMAP
    BITMAP * kolo = NULL;
    BITMAP * bufor = NULL;
    BITMAP * kwadrat = NULL;
   
   
    //Tworzenie BITMAP dalsze
    kolo = create_bitmap( 24, 25 );
    bufor = create_bitmap( 640, 480 );
    kwadrat = create_bitmap( kwadrat_s, kwadrat_h );
   
   
    //Ladowanie tekstur
    kolo = load_bmp( "kolo.bmp", default_palette );
    kwadrat = load_bmp( "kwadrat.bmp", default_palette );
   
    install_timer();
    install_keyboard();
   
   
    //Glowna petla
    while( !key[ KEY_ESC ] ) {
       
       
       
        if( key[ KEY_R ] ) {
            spawn();
        }
       
        while( speed > 0 )
        {
           
            kolizja( kolo_x, kolo_y, kolo_s, kolo_h, kwadrat_x, kwadrat_y, kwadrat_s, kwadrat_h );
           
            speed--;
        }
       
        blit( bufor, screen, 0, 0, 0, 0, bufor->w, bufor->h );
        clear_to_color( bufor, makecol( 55, 45, 147 ) );
        masked_blit( kolo, bufor, 0, 0, kolo_x, kolo_y, kolo->w, kolo->h );
        masked_blit( kwadrat, bufor, 0, 0, kwadrat_x, kwadrat_y, kwadrat->w, kwadrat->h );
    }
   
    //Usuwanie
    remove_int( increment_speed );
    destroy_bitmap( kolo );
    destroy_bitmap( bufor );
    destroy_bitmap( kwadrat );
   
    return 0;
}
END_OF_MAIN();

void init()
{
    int depth, res;
    allegro_init();
    depth = desktop_color_depth();
    if( depth == 0 ) depth = 32;
   
    set_color_depth( depth );
    res = set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
    if( res != 0 )
    {
        allegro_message( allegro_error );
        exit( - 1 );
    }
}

//SeaMonster131: » KursyKurs STC kurs
P-54162
1 2 « 3 »
Poprzednia strona Strona 3 z 3