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

[Allegro] Szybkość poruszania mapą

Ostatnio zmodyfikowano 2011-12-31 19:08
Autor Wiadomość
Winner
Temat założony przez niniejszego użytkownika
» 2011-12-30 18:00:38
Wiem, wiem znowu to mówię ale nie rozumiem naprawdę. Kafelki mam wyświetlone wszędzie no bo według mnie jakbym wyświetlał po bokach to na środku by była dziura. ;P Teraz pewnie sobie myślicie "co za deb*l ja pier**le". Mógłbym jaśniej wytłumaczyć tą metodę wyświetlana "po bokach"
P-46699
RazzorFlame
» 2011-12-30 18:50:12
Winner, ja będę dla ciebie życzliwy. Moim zdaniem od allegro jest lepsze, łatwiejsze i wydajniesze SDL. Jesli wolisz allegro polecam ci baaardzo zyczliwie najpierw przeczytać chodzby 1/3 kursu Xion'a od zera do gier kodera na stronie xiona: www.xion.org.pl Nie ma sensu żebyś próbował tworzyć gre nie znając podstaw. Radze ci się zastosować do tego. Nie zrobisz Snake ani Bombermana z tą wiedzą. Mówie ci, łatwiej ci będzie zastosować się do mojej rady. Jesli już jestes tak napalony na robienie gier bez wiedzy (co ci odradzam) polecam ci najpierw dokładnie przeczytać kurs Easykodera i jego wszystkie przykłady. Jesli nie zrozumiesz tego co on pisze to pogrzeb w jego downloadzie. Masz tam programy razem z kodem źródłowym. Ogólnie lepszy jest SDL (nawet o NIEBO lepszy), jest do niego multum tutoriali. Weźmy sobie taki na darkcult albo na lazyfoo.net Lazyfoo bardzo dokładnie wytłumacza jak obsługiwać się z SDL'em. Pozdrawiam wszystkich :)
P-46702
Winner
Temat założony przez niniejszego użytkownika
» 2011-12-30 18:58:43
Chyba jednak zostanę przy allegro. Co do strony easykodera to znam ją bardzo dobrze z niej właśnie nauczyłem się robić mapę kafelkową a easykoder pomógł mi na e-mailu przesuwać ją wolniej... Może znacie jakiś tuturial "przesuwanie mapy kafekowej" albo coś w tym stylu, bo wujek google nie chcę pomóc...
Chciałbym jednak skończyć tą grę bo poświęciłem już na nią sporo czasu rozwiązałem dużo problemów, moim zdaniem zostało mi już tylko to przesuwanie mapy do ukończenia gry.Dlatego nie chciałbym teraz porzucić tego mojego małego projekty :)
P-46703
RazzorFlame
» 2011-12-30 19:02:03
Winner, napisz "powoli i dokładnie" o co ci chodzi to moze jesli dobrze opiszesz to ci pomoge. Sam robilem długi czas w allegro.
P-46705
Winner
Temat założony przez niniejszego użytkownika
» 2011-12-30 19:20:32
Okey.
Mam mapę kafelkową. Wyświetlam ją za pomocą kodu:
C/C++
void wys_mape()
{
    short int licznik_x, licznik_y;
    for( licznik_x = 0; licznik_x < 50; licznik_x++ )
    {
        for( licznik_y = 0; licznik_y < 20; licznik_y++ )
        {
           
           
            blit( teren, bufor,
            (( map[ licznik_y + mapa_y ][ licznik_x + mapa_x ] % 4 ) * 50 ),
            (( map[ licznik_y + mapa_y ][ licznik_x + mapa_x ] / 4 ) * 50 ),
            licznik_x * 50, licznik_y * 50, 50, 50 );
           
           
        }
    }
};
Przesuwam za pomocą kodu:
C/C++
if( key[ KEY_RIGHT ] && RodzajTerenuDolL == 0 && RodzajTerenuDolP == 0 || key[ KEY_RIGHT ] && RodzajTerenuDolP > 0 && RodzajTerenuGorP > 0 && RodzajTerenuDolL == 0 )
{
   
    mapa_x++
   
   
   
}
I mapa prszesuwa się dobrze. Tylko, że za szybko. Easykoder doradził mi na e-mialu aby zrobił to tak:
Kod przesuwania mapy:
C/C++
if( key[ KEY_RIGHT ] && RodzajTerenuDolL == 0 && RodzajTerenuDolP == 0 || key[ KEY_RIGHT ] && RodzajTerenuDolP > 0 && RodzajTerenuGorP > 0 && RodzajTerenuDolL == 0 )
{
   
    mx--;
    if( mx >= 40 ) { mapa_x += 1; mx = mx - 40; }
    if( mx <= - 40 ) { mapa_x += 1; mx = mx + 40; }
   
   
   
}
mx- nowa zmienna.
I kod wyświetlający mapę:
// Funkcja wyświetlająca mapę:
void  wys_mape()
{
      short int licznik_x, licznik_y;
      for (licznik_x = 0; licznik_x < 50 ; licznik_x++)
      {
          for (licznik_y = 0; licznik_y < 20 ; licznik_y++)
          {       
                             
                             
                               blit(teren,bufor,
                               ((map[licznik_y + mapa_y][licznik_x + mapa_x]%4) * 50)-mx,
                               ((map[licznik_y + mapa_y][licznik_x + mapa_x]/4) * 50)+my,
                               licznik_x * 50,licznik_y * 50,50,50); 
                              
     
          }
      }   
};
Mapa przesuwa się wolno, tak jak chciałem ale dzieje się taki coś:
http://www.youtube.com/watch?v=zN_y3D-CGsY

Chodzi mi o usunięcie tych "rysujących" się kafelków (tych co widać na filmie) albo wogule nowy sposób przesuwania wolniej tej mapy.
Jaśniej się chyba już nie da.
P-46708
pekfos
» 2011-12-30 20:17:24
To wyjaśnij jeszcze, dlaczego mamy Ci w kółko mówić jak naprawić problem skoro nie rozumiesz ani nas, ani własnego kodu?

Z filmu widzę, że sposób z ułamkami kafli po bokach w twoim wykonaniu figę dał -.-

Może taki sposób zrozumiesz..

Rysuj mapę całymi kaflami tyle że o jedną kolumnę więcej z każdej strony i ten obraz przesuwaj przed narysowaniem w stronę w którą trzeba.

PS: czyli masz jakby dodatkowy bufor na mapę który jest o 2*szer_kafla szerszy od zwykłego bufora. Wyświetlając na buforze te brzegi będą ucięte.
P-46715
Winner
Temat założony przez niniejszego użytkownika
» 2011-12-30 20:35:04
@pekfos nie obraź się ale Ciebie nigdy nie moge zrozumieć... Mógłbyś dokładniej, jak narusuje 1 kafelek więcej to będę mieć takie brzytkie paski pomiędzy nimi..


Poczekam jeszcze na odpowiedź RazzorFlame bo Mówił, że spróbuje mi pomóc.
P-46722
SeaMonster131
» 2011-12-30 20:46:07
Przejdź na normalną biblioteke a nie używasz Allegro 4 :)
W innych przynajmniej możesz podać we float pozycję wyświetlania obrazka, więc wtedy możesz mape jak chcesz sobie przesuwać.. Przynajmniej w Allegro5 tak masz ;p
P-46724
1 2 3 4 5 « 6 » 7 8 9 10 11 12
Poprzednia strona Strona 6 z 12 Następna strona