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

Nie wyświetla obrazka

Ostatnio zmodyfikowano 2011-04-22 15:46
Autor Wiadomość
bingo009
Temat założony przez niniejszego użytkownika
Nie wyświetla obrazka
» 2011-04-21 16:21:50
Witam piszę w Allegro najprostszą platformówkę jaką można zrobić. Nie oczekuje za wiele bo ja się ucze. Otóż zrobiłem kawałek mapki. Chciałbym go wyświetlić na buforze i tu pojawią się problem. Wogóle go nie widać ani na ekranie ani na buforze. Postać działa ale nawet jak obrazek ładuje przed Playerem i tak to nic nie daje. Tu mój kod(cały z main.cpp):
http://wklej.org/id/516709/


I tak poza tematem. Gdzie znajde prosty tutek tworzenia prostej kolizij dla prostokąta?
P-31475
McAffey
» 2011-04-21 16:53:48
Trawę ("grass") wyświetlasz przed pętlą, a potem w pętli czyścisz bufor. Musisz dodać :
draw_sprite( bufor, grass, 0, 440 );
 
po  :
clear_to_color( bufor, makecol( 150, 150, 150 ) );

ale przed :
blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
 ;)

Ps. Kod wstawiaj razem z postem, tylko umieszczaj go w tagach
[cpp]...[/cpp]
.

edit: Co do tych kolizji, to nie znam żadnego tutoriala do tego, ale na forum było to nie raz omawiane, poszukaj sobie za pomocą tej wyszukiwarki na górze.
P-31484
dmx81
» 2011-04-21 18:46:28
prosta kolizja dla prostokata - najlepiej kartka w kratke + olowek (serio mowie, no juz juz...).
Narysuj 2 prostokaty kolidujace ze soba w najrozniejsze sposoby i opisz, jakie warunki sa spelnione.
Aby prosciej bylo zaczac:

A____B
| a _ |__b
| c[ _|__]d
C----D

C/C++
if( a.x <= D.x //czyli obiekt 1 nachodzi na obiekt 2
&& a.x >= C.x // bo no warunek wyzej tez bylby prawdziwy, jakby abcd znajdowal sie calkiem po prawej stronie, nawet nie kolidujac
&&...)
     kolizja = true;


to tylko przyklad, jak sie do tego mozna zabrac, oczywiscie w allegro bedziesz uzywal pozycji X,Y, X+szerokosc, Y+wysokosc, mam nadzieje, ze rozumiesz o co chodzi.

napisz sobie jakies warunki, pozniej zmien ustawienie protokatow i sprawdz, czy twoj "algorytm wykrywania kolizji" zadziala rowniez w tym przypadku, jesli tak, to znaczy, ze jest ok, jesli nie - znaczy, ze czegos nie dopisales. Jakby co, to pytaj smialo
(ale zanim zapytasz, wysil sie i skup, moze dasz rade sam ;) )
P-31515
bingo009
Temat założony przez niniejszego użytkownika
» 2011-04-21 21:01:11
Nie będe zaśmiecał forum więc dam to w tym topicu. Otóż zrobiłem sobie taką kolizję:
Nad main to:
C/C++
bool kolizja( int x1, int y1, int s1, int w1, int x2, int y2, int s2, int w2 )
{
    if( x2 <= x1 + s1 && x2 > x1 && y2 >= y1 && y2 <= y1 + w1 ) return true; else
    if( x2 <= x1 + s1 && x2 > x1 && y2 + w2 >= y1 && y2 + w2 <= y1 + w1 ) return true; else
    if( x2 + s2 <= x1 + s1 && x2 + s2 > x1 && y2 >= y1 && y2 <= y1 + w1 ) return true; else
    if( x2 + s2 <= x1 + s1 && x2 + s2 > x1 && y2 + w2 >= y1 && y2 + w2 <= y1 + w1 ) return true;
    else return false;
   
};

a w pętli głównej to:
C/C++
if( kolizja( player_x, player_y, player0->w, player0->w,
grass_x, 448, grass->w, grass->h ) == true )
{
    player_y -= 1;
}

Warunek wydaję się spoko bo podłoże będzie w lini prostej więc nie będe musiał dla każdego kawałka tworzyć kolizij. I teraz mam drobne pytanie. Chce ułożyć podłoże z kafelków. I ułożyłem jeden wiecie jak. Teraz jak chce z tych kafelków stworzyć podłoże to mam problem. Czy mam ustawiać kilkadziesiąt kafelków czy może jest jakaś funkcja?
P-31548
McAffey
» 2011-04-21 21:41:56
Na forum panuje zasada jeden temat = jeden problem, załóż osobny temat z tymi kolizjami. Powiedz lepiej jak ten obrazek, działa już wszystko ? ;)
P-31568
bingo009
Temat założony przez niniejszego użytkownika
» 2011-04-22 15:46:54
Tak super. Przepraszam za to zamykam ten temat.
P-31636
« 1 »
  Strona 1 z 1