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

Problem z myszką.

Ostatnio zmodyfikowano 2012-07-16 11:27
Autor Wiadomość
hakr1921
Temat założony przez niniejszego użytkownika
Problem z myszką.
» 2012-07-16 10:31:44
A więc tak, chce zrobić strzelanie w kierunku myszki w mojej grze.
Pisze sobie z poradnika cały kod na zainstalowanie myszki i przy kompilacji "Bomb.exe przestał działać".
Usunąłem wszystko i sprawdzałem każdą funkcje po kolei. Gdy tylko napisze install_mouse wyskakuje ten błąd.

Co może być nie tak?


void laduj_kursor()
{
    kursor = load_bitmap( "kursor.bmp", NULL );
};
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;
    }
};


laduj_kursor();
install_mouse();
show_mouse( bufor );
set_mouse_sprite( kursor );
unscare_mouse();
P-60138
mati1qazxsw2
» 2012-07-16 11:11:55
Stworzyłeś bufor?Poprawnie załadowałeś kursor?
P-60147
hakr1921
Temat założony przez niniejszego użytkownika
» 2012-07-16 11:14:00
Może lepiej jak dam cały kod [jest trochę poplątany i wszystko mam zamiar poprawić jak zainstaluje już mysz]

Tak wszystko jest zrobione, próbowałem też bez swojego kursora to wyskakuje to samo.
Jak usunie install_mouse to gra się normalnie włącza więc nie wiem w czym problem



#include <allegro.h>
class Cpostac
{
      public:
             int x,y;
             short int kierunek, klatka;
};
// Zmienna naszej klasy
Cpostac ludek;

// Inicjowanie timera
volatile long speed = 0;
void increment_speed()
{
speed++;
}
END_OF_FUNCTION(increment_speed);
LOCK_VARIABLE(speed);
LOCK_FUNCTION(increment_speed);

// Zmienna
int mapa_x = 0, mapa_y = 0;
BITMAP *bufor = NULL;
BITMAP *ludekb = NULL;
BITMAP *teren = NULL;
FONT * font_pcx = NULL;
BITMAP *kursor = NULL;
// DEFINICJA MAPY
short int map[15][20] =
{
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
};
//kursor
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;
    }
};
//WYsiwetalnie mapy
void  wys_mape()
{
      int licznik_x, licznik_y;
      for (licznik_x = 0; licznik_x < 100 ; licznik_x++)
      {
      for (licznik_y = 0; licznik_y < 100 ; licznik_y++)
      {
           blit(teren,bufor,
           (map[licznik_y + mapa_y][licznik_x + mapa_x]%4) * 32,
           (map[licznik_y + mapa_y][licznik_x + mapa_x]/4) * 32,
           licznik_x * 32,licznik_y * 32,32,32);
      }
      }
};


// Funkcja G³ówna
int main()
{
install_mouse();
show_mouse( bufor );
set_mouse_sprite( kursor );
unscare_mouse();

allegro_init();
install_keyboard();
set_color_depth(16);
set_gfx_mode(GFX_AUTODETECT_FULLSCREEN,640,480,0,0);
install_timer();
install_int_ex(increment_speed, BPS_TO_TIMER(80));



// Tworzenie bufora
bufor = create_bitmap(640,480);
// £adowanie grafiki
ludekb = load_bmp("ludek1.bmp",default_palette);
teren = load_bmp("teren.bmp",default_palette);
font_pcx = load_font("arial_16.pcx",default_palette, NULL);
kursor = load_bitmap( "kursor.bmp", default_palette);
// Ustalanie pocz¹tkowej pozycji ludzika
int frame = 0;
ludek.x = 100;
ludek.y = 100;
ludek.klatka = 0;
ludek.kierunek = 0;

while( !key[KEY_ESC])
{
while( speed > 0)
{
ludek.kierunek = 0;
if( key[KEY_LEFT]) { ludek.kierunek = 4; ludek.x-=2; }
if( key[KEY_RIGHT]) { ludek.kierunek = 2; ludek.x+=2; }
if( key[KEY_UP]) { ludek.kierunek = 1; ludek.y-=2; }
if( key[KEY_DOWN]) { ludek.kierunek = 3; ludek.y+=2; }
speed--;

frame++;
if( frame > 40) frame=0;
}
// Czyszczenie bufora
clear_to_color(bufor, makecol(150,150,150));

//Wyswietl mape
wys_mape();

// Sterowanie animacj¹
if( frame<20) { ludek.klatka = 0;}
else if( frame>=20 && frame<40) { ludek.klatka = 1; }

//Wyœwietlanie ludzika

textprintf_ex(bufor,font_pcx, 8,40,makecol(255,0,0),-1,"ludek.x=%4d,ludek.y=%4d ",ludek.x,ludek.y);
masked_blit( ludekb, bufor, ludek.kierunek*32 ,ludek.klatka*32 ,ludek.x, ludek.y, 32,32);
blit( bufor, screen, 0,0,0,0, 640,480);
}
// Usuwanie wszystkiego z pamiêci.
remove_int( increment_speed);
destroy_bitmap(ludekb);
destroy_bitmap(bufor);
destroy_bitmap( kursor );
allegro_exit();
return 0;
}
END_OF_MAIN();

P-60148
mati1qazxsw2
» 2012-07-16 11:19:34

laduj_kursor();
install_mouse();
show_mouse( bufor );
set_mouse_sprite( kursor );
unscare_mouse();

Ustaw po stworzeniu bufora
P-60151
hakr1921
Temat założony przez niniejszego użytkownika
» 2012-07-16 11:27:14
Dziękuje.
P-60155
« 1 »
  Strona 1 z 1