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

[Allegro] Mam gotowe strzelanie lecz problem..

Ostatnio zmodyfikowano 2012-07-17 12:09
Autor Wiadomość
hakr1921
Temat założony przez niniejszego użytkownika
[Allegro] Mam gotowe strzelanie lecz problem..
» 2012-07-16 21:45:22
A więc tak.
Z strzelaniem męczę się kilka godzin, żaden sposób nie działa więc znalazłem jakiś obiecujący i nadal błędy.
Tym razem to
error: 'ix' was not declared in this scope
error: 'iy' was not declared in this scope

Tu jest kod gry
[spoiler]
#include <allegro.h>
#include <cmath>

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;
BITMAP *x = NULL;
// DEFINICJA MAPY
short int map[15][20] =
{

};
//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()
{
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);
x = load_bmp( "strzal.bmp", default_palette );
//opcje myszki
install_mouse();
set_mouse_sprite( kursor );
unscare_mouse();
// Ustalanie pocz¹tkowej pozycji ludzika
int frame = 0;
ludek.x = 100;
ludek.y = 100;
ludek.klatka = 0;
ludek.kierunek = 0;

bool strzalv = false;
double predkosc = 0.5;
double kat;
int celx = ix, cely = iy;
double deltaX, deltaY;
double ix = ludek.x, iy = ludek.y;
while( !key[KEY_ESC])
{
    clear_to_color( bufor, makecol( 150, 150, 150 ) );
myszka();
masked_blit( x, bufor, 0, 0,( int ) ix,( int ) iy, 200, 200 );


textprintf_ex( bufor, font, 40, 40, makecol( 200, 200, 200 ), - 1, "deltaX = %d, deltaY = %d !",( int ) iy - cely,( int ) ix - celx );

while( speed > 0)
{
     if( strzalv == false ) { //to podzielilem tak jak uwazalem ale nie dziala
                if( mb == 1 )
                {
                    celx = mx;
                    cely = my;
                    deltaX = ix - celx;
                    deltaY = iy - cely;
                    strzalv = true;
                }
                if( strzalv == true ) {
                    if(( deltaY ) == 0 )
                    {
                        kat = 0;
                    } else
                    {
                        kat = atan(( deltaX ) /( deltaY ) ); //nie wiem co to do konca oznacza
                    } //else

                    if( deltaY >= 0 )
                    {
                        kat += M_PI; //nie wiem co to do konca oznacza
                    } //if

                }


                if( iy != cely || ix != celx )
                {
                    ix += sin( kat ) * predkosc;
                    iy += cos( kat ) * predkosc;
                } }
            if( iy <- 20 ) ( strzalv = false );

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; }
if( key[KEY_A]) { ludek.kierunek = 4; ludek.x-=2; }
if( key[KEY_D]) { ludek.kierunek = 2; ludek.x+=2; }
if( key[KEY_W]) { ludek.kierunek = 1; ludek.y-=2; }
if( key[KEY_S]) { ludek.kierunek = 3; ludek.y+=2; }

masked_blit( x, bufor, 0, 0,( int ) ix,( int ) iy, 200, 200 );

if( mouse_b == 1 )
{
kursor = load_bitmap( "kursor2.bmp", default_palette);
}
else
kursor = load_bitmap( "kursor.bmp", default_palette);


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
masked_blit( ludekb, bufor, ludek.kierunek*32 ,ludek.klatka*32 ,ludek.x, ludek.y, 32,32);

//wyswietlanie kursora

masked_blit( kursor, bufor, 0, 0, mouse_x, mouse_y, kursor->w, kursor->h );
blit( bufor, screen, 0, 0, 0, 0, bufor->w, bufor->h );
}
// 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();
[/spoiler]

Gdzie jest błąd?
P-60246
Drraven
» 2012-07-16 21:48:30
Nie masz deklaracji tych zmiennych.
P-60248
hakr1921
Temat założony przez niniejszego użytkownika
» 2012-07-16 21:55:44
A z tym nie powinno działać?

bool strzalv = false;
double predkosc = 0.5;
double kat;
int celx = ix, cely = iy;
double deltaX, deltaY;
double ix = ludek.x, iy = ludek.y;
P-60251
szyx_yankez
» 2012-07-16 21:59:00
Po pierwsze kompilator pisze Ci jaki popełniłeś błąd... po drugie tłumaczysz błąd na język polski, jeżeli nie znasz angielskiego przechodzisz pod http://translate.google.pl/, po trzecie środowisko wskazało Ci w której linijce jest błąd, po czwarte używasz 10% swojej inteligencji i rozwiązujesz błąd samodzielnie
else if( rozwiazane == brak )
 wklepujesz (ew. kopiujesz) treść błędu do wyszukiwarki i patrzysz jak rozwiązali go inni
else if( szukalem 3 dni && problem == nierozwiazany && false /*taki stan rzeczy nie jest możliwy*/ )
 zakładasz wątek na forum... Trudne?
P-60252
hakr1921
Temat założony przez niniejszego użytkownika
» 2012-07-16 22:04:23
Widocznie jestem tak głupi że nie potrafię tego rozwiązać.

Poza tym pisanie gry zacząłem wczoraj, a kiedyś napisałem gre z tutoriala, więc proszę daruj sobie
naukowe mowy bo gdybym nie używał google to połowa mojej gry by nie istniała
P-60254
kampar
» 2012-07-16 22:08:49
dostałeś już rozwiązanie, nie deklarujesz tych zmiennych. Popatrz dokładnie na fragment który podałeś i zobacz gdzie uzywasz tych zmiennych, a gdzie je dopiero deklarujesz.
P-60258
hakr1921
Temat założony przez niniejszego użytkownika
» 2012-07-16 22:10:12
Niby dostałem, ale to że przeniosę ten kod kilka linijek niżej nie rozwiąże problemu że strzelanie nie działa.
Owszem, gra tak. Strzelanie - nie
P-60259
kampar
» 2012-07-16 22:14:44
To że się kod nie kompiluje i to, że kod nie działa tak jak oczekujesz to dwie różne sprawy. Spróbuj ustalić co dokładnie nie działa. Sprawdzaj po kolei fragmenty kodu czy działają poprawnie.
Nadaj na razie stałe wartości kąta i pozycji pocisku i zobacz czy się wyświetla, potem możesz zmieniać, np pozycje. Powodem może być to, że operacje na pocisku wykonujesz w if(strzalv == false)
P-60261
« 1 » 2
  Strona 1 z 2 Następna strona