• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Problem przy symulacji odbicia piłeczki od cegły po jej rozwaleniu...

Object Storage Arubacloud
0 głosów
220 wizyt
pytanie zadane 3 lutego 2016 w C i C++ przez Darek Surdel Początkujący (380 p.)
zamknięte 4 lutego 2016 przez Darek Surdel

Witam :)

Mój problem polega na tym, że w grze arkanoid (10 odc kursu c++ obiektowego Pana Mirka) nie mogę wykminić jak zrobić symulację odbicia piłki od "cegły"... próbowałem już na wiele sposobów ale dalej albo z góry się źle odbija, albo z boku... stworzyłem osobną funkcję odbicie... Oto ona: 

void odbicie(TImage*pilka, TImage*cegla)
{
   if(pilka->Left >= cegla->Left-pilka->Width)
   {
      x=-x;
      return;
   }
   if(pilka->Left <= cegla->Left+cegla->Width)
   {
      x=-x;
      return;
   }
   if(pilka->Top >= cegla->Top-pilka->Height)
   {
      y=-y;
      return;
   }
   if(pilka->Top <= cegla->Top+cegla->Height)
   {
      y=-y;
      return;
   }

}

A tutaj wywołanie funkcji:

//ball0
   if(kolizja(ball,Image0)&&Image0->Visible==true)
   {
      odbicie(ball,Image0);
      Image0->Visible=false;
      pozostalo--;
   }

Może mógłby ktoś bardziej doświadczony na to zerknąć i mnie oświecić? Z góry dziękuję :) 

komentarz zamknięcia: Nowy dzień - nowe pomysły ;P

1 odpowiedź

0 głosów
odpowiedź 3 lutego 2016 przez elaen Gaduła (4,760 p.)
a mogę zerknąć na funkcję kolizja?
komentarz 3 lutego 2016 przez Darczeslaw Nowicjusz (120 p.)

Musiałem zmienić konto, ale to ja ;P 

Oto kolizja:

bool kolizja(TImage*pilka, TImage*cegla)
{
   if(pilka->Left >= cegla->Left-pilka->Width &&
      pilka->Left <= cegla->Left+cegla->Width &&
      pilka->Top >= cegla->Top-pilka->Height &&
      pilka->Top <= cegla->Top+cegla->Height)
   {
      return true;
   }
   else
   {
      return false;
   }
}

z tym odbiciem to chodzi mi o to, że jak na przykład piłeczka leci z lewej do góry to żeby się zmieniła tylko wartość y... np. if(x>0 && y<0) y=-y; ... w miarę wiadomo o co chodzi? :P

komentarz 3 lutego 2016 przez elaen Gaduła (4,760 p.)
A ogólnie Ci to wszystko działa ? jak się teraz zmienia kierunek ?

X: góra  -x :dół

y : prawo -y:lewo ?
komentarz 3 lutego 2016 przez Darczeslaw Nowicjusz (120 p.)
nomm ogólnie to wszystko śmiga, tylko że to odbijanie piłeczki po kolizji mnie trochę denerwuje... x to jest zwiększanie się odległości piłeczki od lewej ściany (Left) a -x to przybliżanie się do ściany :) podobnie z y... bez minusa - zwiekszanie Top, z minusem - zmniejszanie :) dodalem jescze ifa do tego, zeby mi sie od belki z dołu nie odbijało, bo można też jeździć w górę i w dół ;)  śmiga ;3
komentarz 3 lutego 2016 przez Darczeslaw Nowicjusz (120 p.)
a prościej to x: prawo  -x: lewo  y:dół   -y:góra ;)
komentarz 3 lutego 2016 przez elaen Gaduła (4,760 p.)
Po pierwsze w każdym warunku musisz odpytać aktualny lot piłki to znaczy:

if(x && y) // jesli do gory i w prawo

   {

// odbij w zaleznosci z ktorej strony walnela piłka

   }

itp.
komentarz 3 lutego 2016 przez Darczeslaw Nowicjusz (120 p.)
No właśnie już próbowałem z tym coś kombinować... mógłbym to w sumie napisać jeszcze raz ale niestety teraz czasu nie mam :/ dzięki za odpowiedzi, ale dopiero jutro dodam nowy kod to tego odbicia :) Wtedy się zastanowimy co z tym zrobić ;) Pozdrawiam ;)
komentarz 3 lutego 2016 przez elaen Gaduła (4,760 p.)
spróbuj kod zmiany kierunku dodać w funkcji kolizja, będzie prościej
komentarz 3 lutego 2016 przez Darczeslaw Nowicjusz (120 p.)
hmmm no w sumie mogło by być, ale jest to funkcja typu bool... trzeba było by to na voida przetentegować ;P ale dzisiaj już sobie daruję, bo siedzę w tym od 4... a na jutro kupa nauki ;D także dzięki za odpowiedzi :) miłego wieczoru :)
komentarz 4 lutego 2016 przez Darek Surdel Początkujący (380 p.)
Dziękuję za odpowiedzi, odnalazłem się w tym dzisiaj ;) Gdyby ktoś miał podobny problem to zapraszam na pw ;P

Podobne pytania

0 głosów
1 odpowiedź 165 wizyt
0 głosów
2 odpowiedzi 523 wizyt
pytanie zadane 17 lutego 2017 w C i C++ przez Seszele11 Początkujący (330 p.)
+1 głos
0 odpowiedzi 207 wizyt

92,620 zapytań

141,474 odpowiedzi

319,813 komentarzy

62,003 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...