Warsztat.GD

Programowanie => Programowanie grafiki => Allegro => Wątek zaczęty przez: KumandoS w Październik 07, 2012, 17:45:03

Tytuł: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: KumandoS w Październik 07, 2012, 17:45:03
Witam . Mam napisaną prostą gierkę , scrollowanie , wyświetlanie mapy itd , ale brakuje mi 1 . Właśnie kolizji .

Mam skopiowane od easykodera kod na kolizje , ale to jest tylko dla kolizji 2 obiektów .
Ja bym chciał by była możliwość kolizji z większą ilością obiektów .

Pierwsze co chcę zrobić to kolizję z odpowiedniki kafelkami mapy .
Mam tablice , którą wypełniam z pliku . I chciał bym by przy kafelce np. nr 0 była kolizja , a przy innych nie .

To może podam tutaj ten kodzik na kolizje jaki mam teraz :
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;
};

Mógł by ktoś napisać lub pomóc mi napisać kod na kolizje ?

Ewentualnie jeszcze prosił bym o pomoc w zrobieniu "nieprzechodzenia przez ścianę "
Czyli jeżeli kolizja=true to coś tam .

Chodzi mi tutaj o kolizję boxową .

Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: flexi w Październik 07, 2012, 18:02:42
Pomogl bym cie, ale nie podoba mi sie to ze nie poszukasz sam nic na necie.

I do tego chamsko piszesz

Cytuj
Mógł by ktoś napisać lub pomóc mi napisać kod na kolizje ?

Tak bedziemy ci wszystko pisac, a potem co powiesz ze zrobiles gre ;-)?

Dobry jestes, i sory ale nie wroze ci kariery jako programista gier.
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: Arthes w Październik 07, 2012, 18:15:32
Ewentualnie jeszcze prosił bym o pomoc w zrobieniu "nieprzechodzenia przez ścianę "
Czyli jeżeli kolizja=true to coś tam .

Chodzi mi tutaj o kolizję boxową .
Pewnie, możemy jeszcze (bo to żaden problem) napisać resztę gry za Ciebie, tylko zapodaj design-doca :)

A tak poważnie - jak już masz kod na wykrywanie kolizji, to po prostu albo przed ruchem sprawdź, czy będzie kolizja (i jak tak, to nie wykonuj ruchu) albo po ruchu (czyli gdy będzie kolizja, to ustaw elementy tak, by stykały się krawędziami - po prostu odbicie w drugą stronę).
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: IgI w Październik 07, 2012, 18:42:16
Mógł by ktoś napisać lub pomóc mi napisać kod na kolizje ?
A ile płacisz? A tak na serio. To ciężko poszukać w internecie? http://bit.ly/OLXyuU

Ja bym chciał by była możliwość kolizji z większą ilością obiektów.
Wrzucasz wszystkie obiekty do wektora, a potem sprawdzasz kolizję z każdym po kolej.

P.S. Masz zamiar zakładać temat z każdym problemem, który można rozwiązać używając google.
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: KumandoS w Październik 07, 2012, 18:53:37
Po 1 nikt wam nie każe pisać gry za mnie , po 2 poprosiłem o pomoc , nie koniecznie chodzi mi tu o cały kod , ale w jaki sposób się to robi (pseudo kod) , a na końcu i tak przerobię go pod swoje potrzeby . W google szukałem i znalazłem albo ten wypisany wyżej , albo całkowicie niezrozumiały kod .
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: Kebab_u_Turka w Październik 07, 2012, 19:12:47
@KumandoS Ty co chwila prosisz o pomoc ... Pisałem Ci, zabierz się za to sam, bo inaczej niczego się nie nauczysz ...
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: Arthes w Październik 07, 2012, 19:17:42
http://wierzba.wzks.uj.edu.pl/~09_bakalarski/Animacja/Detekcja%20kolizji.pdf
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: rhdbisgrt w Październik 07, 2012, 19:25:48
Witam . Mam napisaną prostą gierkę , scrollowanie , wyświetlanie mapy itd , ale brakuje mi 1 . Właśnie kolizji .

Gdy twoja postac sie porusza to sprawdzasz czy dla danych wspolrzednych x,y mozna wejsc na to miejsce, piszesz po prostu taka funkcje cos w stylu

bool  CzyMoznaWejsc(int x, int y)
{
  //...
}

jej body zalezy jak trzymasz obiekty na scenie jasli np masz mape kafelkowa a kazdy kafelek ma rozmiar 20x20 to cos w tym stylu

bool  CzyMoznaWejsc(int x, int y)
{
  if(MAPA[y/20][x/20].typ_pola == 0)
      return false;
  esle
     return true;
}

musisz sam rozumiec te mechanizmy, ale to nie jest takie trudne, raczej banał

Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: Gabes w Październik 07, 2012, 19:57:42

Może ten tutek ci pomoże.http://www.loomsoft.net/resources/alltut/alltut_lesson8.htm (http://www.loomsoft.net/resources/alltut/alltut_lesson8.htm)
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: KumandoS w Październik 07, 2012, 20:32:07
No i dla panów : Arthes ,rhdbisgrt, Gabes wielki + , a nie jak reszta totalny off top .

Ps. Arthes nie trzeba przetłumaczyć bo jest napisane dość zrozumiale jak dla mnie .
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: flexi w Październik 07, 2012, 20:39:19
I tak za kilka dni / godzin bedzie topic typu "jak zrobic xxx" ;-)
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: KumandoS w Październik 08, 2012, 10:57:33
Przeczytałem i przeanalizowałem powyższe materiały , ale nie mogę nigdzie znaleźć jak wyciągnąć z tablicy 2 wymiarowej przypisaną liczbę do jej pola . Np. mam tablicę :
short int map [2][2]
{ 0 , 1
   2 , 3 };

To jaka wykorzystać to w ifie ?

If (ta_wartość_tablicy == 0)
  , ale nie mogę wykombinować jak tą wartość wyciągnąć .
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: rhdbisgrt w Październik 08, 2012, 11:31:14
Przeczytałem i przeanalizowałem powyższe materiały , ale nie mogę nigdzie znaleźć jak wyciągnąć z tablicy 2 wymiarowej przypisaną liczbę do jej pola . Np. mam tablicę :
short int map [2][2] =
{ 0 , 1
   2 , 3 };

To jaka wykorzystać to w ifie ?

If (ta_wartość_tablicy == 0)
  , ale nie mogę wykombinować jak tą wartość wyciągnąć .

po prostu

if(map[y][x]==0) { //nie mozna przejsc }

Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: flexi w Październik 08, 2012, 11:38:46
KumandoS - wez sie za nauke C++ ;-) bo jak narazie to co jest zrobione w kodzie to nie twoja robota tylko tutoriali + osob z tego forum, bez wiedzy programowania i C++ nie zrobisz nic sam, wbij se to do swojej glowy.
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: rhdbisgrt w Październik 08, 2012, 12:29:02
KumandoS - wez sie za nauke C++ ;-) bo jak narazie to co jest zrobione w kodzie to nie twoja robota tylko tutoriali + osob z tego forum, bez wiedzy programowania i C++ nie zrobisz nic sam, wbij se to do swojej glowy.

Kolega flexi chyba nie zauwazyl ze odbiorca nie wydaje sie byc specjalnie zainteresowany tego typu pseudo poradami, Pytanie dotyczylo b odstawowych kwestii  no ale niektorzy dopiero sie tego ucza to raczej zupelnie zrozumiale. Kolega kommandos z kolei mz powinien wrzucac tego rodzaju basic tematy raczej w dziale 'szkólka'. (Bo to co akurat dotyczylo allegro bodajze wyladowalo w dziale jezykologia/c++ a to tutaj (nie kwalifikujace sie pod alegro a wylacznie szkólka) w dziale allegro :O )


Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: jelcynek w Październik 08, 2012, 14:58:18
Poważnie, jeśli nie wiesz jak się odwołać do elementu tablicy to zacznij naukę od początku, a nie od środka. Weź jakąś książkę do C++ czy jakiś kurs z neta i przerób go najpierw solidnie. Potem zacznij coś konkretnego klepać. Mamę oszukasz, tatę oszukasz, ale życia nie oszukasz. Brak Ci podstaw z programowania. Twoją grę nie piszesz sam, tylko piszą ją Ci użytkownicy forum odpowiadając na twoje tematy.
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: KumandoS w Październik 08, 2012, 15:59:10
Chciałem zacząć od efektów , a dopiero potem od nauki , jednak nie zbyt to wyjdzie . Aktualnie mam bardzo mało czasu na naukę tego co chcę czyli C++ i Allegro lub SDL . Jednak w najbliższym czasie planuję naukę dokładnie C++ - posiadam książkę "C++ dla każdego " autorstwa Jesse Liberty . Jednak myślę nad zmianą biblioteki graficznej na SDL lub/i OpenGL .  Teraz wiem tylko jak działa mniej więcej mechanizm gry .
Jednak przekonaliście mnie tym offtopem do nauki od podstaw . No nic to ja zajmę się studiowaniem książki .

@ Jeszcze taki mały offtop . Czy zna ktoś jakieś dobre zadanka treningowe do C++ ? Bo wiedza to jedno , ale trzeba ją też wykorzystać w praktyce , a w książce raczej takich zadań nie ma .
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: rhdbisgrt w Październik 08, 2012, 16:13:43
Chciałem zacząć od efektów , a dopiero potem od nauki , jednak nie zbyt to wyjdzie . Aktualnie mam bardzo mało czasu na naukę tego co chcę czyli C++ i Allegro lub SDL . Jednak w najbliższym czasie planuję naukę dokładnie C++ - posiadam książkę "C++ dla każdego " autorstwa Jesse Liberty . Jednak myślę nad zmianą biblioteki graficznej na SDL lub/i OpenGL .  Teraz wiem tylko jak działa mniej więcej mechanizm gry .
Jednak przekonaliście mnie tym offtopem do nauki od podstaw . No nic to ja zajmę się studiowaniem książki .

@ Jeszcze taki mały offtop . Czy zna ktoś jakieś dobre zadanka treningowe do C++ ? Bo wiedza to jedno , ale trzeba ją też wykorzystać w praktyce , a w książce raczej takich zadań nie ma .

IMo twoje podejscie akurat nie jest zle tj wlasnie uczyc sie robiac prosta gre w allegro. A czemu chcesz zostawic all i  przesiasc na sdl lub ogl'a? SDL'a nie znam (w sumie dobry powod by zaraz rzucic okiem) ale z tego co kojarze allegro moze byc jednak lepsze dla twoich zastosowan. Ogl jest bardziej profesjonalny i jest ok, ale to jednak trudniejsza, bardziej abstrakcyjna sprawa.
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: Shusty w Październik 08, 2012, 17:15:16
Przerób książkę do C++, dopiero wtedy weź się za bibliotekę graficzną i pisanie gier. Inaczej nie ma szans by coś z tego wyszło. Ciągle będziesz się zacinał na prostych podstawowych elementach języka, lub po prostu nie będziesz wiedział jakie masz narzędzia przy programowaniu, a z taką wiedzą  już wiesz co możesz zrobić, jak i jakie masz możliwości.

Wystarczy nawet, że przestudiujesz ten tutorial http://xion.org.pl/productions/texts/coding/megatutorial/ I możesz się już czuć dość pewnie w znajomości C++, bo takie wiadomości są wystarczające do pisania gier, a wiedzę później już latwo rozszerzać. Do tego troszkę praktyki, by nauczyć się programować w jakimś tam stopniu. Mając wiedzę o języku i umiejętność programowania będzie dobrze.

Przerób nawet ten tutorial i zrozum cały materiał, wtedy od razu zobaczysz, że tak trzeba było zrobić od razu. Teraz marnujesz tylko czas, bo nawet jak coś Ci wyjdzie to poświęcisz na to 100razy więcej czasu, niż na naukę c++ i wykonanie tego.
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: jelcynek w Październik 08, 2012, 18:52:08
Cytuj
IMo twoje podejscie akurat nie jest zle tj wlasnie uczyc sie robiac prosta gre w allegro.

Oczywiście, że jest złe. Jak się nie zna podstawowych podstaw to można co najwyżej się nauczyć kopiować cudzy kod (co zresztą widać na przykładzie KumandoSa) bez zrozumienia. Praktyka oczywiście jest równie (ba, nawet bardziej) ważna, niż teoria, ale praktyka na poziomie adekwatnym do wiedzy.
Tytuł: Odp: Kolizja z mapą , przedmiotami itd.
Wiadomość wysłana przez: rhdbisgrt w Październik 08, 2012, 19:12:54
Oczywiście, że jest złe. Jak się nie zna podstawowych podstaw to można co najwyżej się nauczyć kopiować cudzy kod (co zresztą widać na przykładzie KumandoSa) bez zrozumienia. Praktyka oczywiście jest równie (ba, nawet bardziej) ważna, niż teoria, ale praktyka na poziomie adekwatnym do wiedzy.

Mz dobre jest robic to i to. Kommandos nie powiedzial ze nic nie czyta w miedzyczasie tyle ze (jak rozumiem) polapanie sie wymaga czasu i uwaza ze rownolegle dopytywanie sie na forum moze wcale nie zaszkodzic -
Osobiscie rozumiem to podejscie i mam nawet dosyc podobne tyle ze jestem bardziej zaawansowany (i szukam i sprawdzam i zadaje pytania na forach - wszystko pomaga na swoj sposob)