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

[Allegro]Kolizje lub coś podobnego

Ostatnio zmodyfikowano 2009-06-24 08:54
Autor Wiadomość
Juziogim3
Temat założony przez niniejszego użytkownika
» 2009-06-23 19:26:20
Zrobiłem te marginesy:
C/C++
short int map[ 20 ][ 20 ] =
{
    28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
    28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
    28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
    28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
    28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
    /*       ///////////////////////////////////////////// /////////  */
    28, 28, 28, 28, 28, /**/ 3, 1, 1, 1, 1, 1, 1, 28, 28, 28, /**/ 28, 28, 28, 28, 28,
    28, 28, 28, 28, 28, /**/ 2, 0, 0, 0, 0, 0, 0, 28, 28, 28, /**/ 28, 28, 28, 28, 28,
    28, 28, 28, 28, 28, /**/ 2, 0, 0, 0, 28, 28, 0, 28, 28, 28, /**/ 28, 28, 28, 28, 28,
    28, 28, 28, 28, 28, /**/ 2, 0, 0, 28, 28, 2, 0, 28, 28, 28, /**/ 28, 28, 28, 28, 28,
    28, 28, 28, 28, 28, /**/ 2, 0, 0, 28, 1, 28, 0, 28, 28, 28, /**/ 28, 28, 28, 28, 28,
    ...
Lecz wciąż to samo :(
Pozycja ludzika jest zawsze taka sama
C/C++
int ludx = 150;
int ludy = 97;

Tutaj jest zamieszczony cały kod żródłowy:
http://wklej.org/id/110793/
Już nie wiem jak mam sobie z tym poradzić :(
P-7956
malan
» 2009-06-23 20:37:57
Może to i głupie pytanie, ale tak się zastanawiam... gdzie umieściłeś coś w stylu ludx++; ludy++; ? (mam namyśli dodawanie wartości do tych zmiennych - czyli zmianę pozycji przy wciśnięciu danego klawisza), bo ja nie widzę... 
P-7957
Juziogim3
Temat założony przez niniejszego użytkownika
» 2009-06-23 20:44:25
Bo postać się nie rusza (tylko wykonuje animacje) a rusza się mapa
(chce aby było jak najbardziej podobne do oryginalnej gry :P )(chyba że oryginalna gra jest zrobiona inaczej :( )

PS:Teoretycznie można zrobić żeby mapa się ruszała i postać jednocześnie(chyba wyglądało by to płynniej), ale nie wiem jakby to zaprogramować...
P-7958
malan
» 2009-06-23 20:55:25
Aaaa... ;p. Hmmm, a to nie lepiej by było gdyby postać się ruszała, a mapa była 'na miejscu'. Tzn., tak by chyba było prościej...
P-7959
Juziogim3
Temat założony przez niniejszego użytkownika
» 2009-06-23 21:53:54
Zrobiłem test - jeżeli w kodzie:

if((key[KEY_RIGHT]) && (mapa_x < 10)){ mapa_x = mapa_x +      0.05     ; }
if((key[KEY_LEFT]) && (mapa_x > 0)){ mapa_x = mapa_x - 0.05; }
if((key[KEY_DOWN]) && (mapa_y < 10)){ mapa_y = mapa_y + 0.05; }
if((key[KEY_UP]) && (mapa_y > 0)){ mapa_y = mapa_y - 0.05; }
0.05 zamienię na liczbę całkowitą(np. 1) to mój warunek
if(mapa_x == 3) {mapa_x=5;wys_mape();masked_blit( bufor, screen, 0,0,0,0, 640,480); }
 działa!
Tylko że znów pojawia się problem za szybkiego scrollowania mapy!! :(
Proszę o poradę, co mógłbym z tym zrobić.
P-7967
lynx
» 2009-06-23 23:02:24
Poczytaj w kursie lekcję o timerach to tez Ci si przyda.
P-7973
Juziogim3
Temat założony przez niniejszego użytkownika
» 2009-06-24 08:54:32
Przeczytałem, wiem że potrzebuje utworzyć jakiś timer zwalniający
...Obejmujemy nią te procedury, które chcemy przyspieszyć bądź też spowolnić...
Próbuje stworzyć drugiego timera, ale niewychodzi :(
...Jednak uważajmy na to, aby nie zapętlać jednego w drugim bo może dojść wtedy do dziwnych błędów czy zawieszenia programu...
U mnie nie jest zapętlony jeden w drugi(przynajmniej mi się tak wydaje).
volatile long speed = 0;
volatile long speed2 = 0;
 
void increment_speed()
{
     speed++;
}
END_OF_FUNCTION(increment_speed);

LOCK_VARIABLE(speed);
LOCK_FUNCTION(increment_speed);


void increment_speed2()
{
     speed2++;
}
END_OF_FUNCTION(increment_speed2);

LOCK_VARIABLE(speed2);
LOCK_FUNCTION(increment_speed2);
...
install_timer();
install_int_ex(increment_speed,BPS_TO_TIMER(70));
install_int_ex(increment_speed2,BPS_TO_TIMER(15));
...
while( !key[KEY_ESC])
{
 while( speed > 0)          
{ //Tutaj animacje postaci
...
}
 while(speed2>0)
{
...  // Scrolowanie mapy + wyświetlanie
}
rest(1);
}
I pojawiają się dwa błędy ->
-mapa przesuwa się za wolno z prędkością  BPS_TO_TIMER(8)  a jak dam większą to przesuwa się o dwie(i więcej) kratki :(
P-7986
1 2 « 3 »
Poprzednia strona Strona 3 z 3