Canvas - Ruch i kolizje

0

Witam serdecznie, chcemy wraz ze znajomym utworzyć program w programie Borland C++ Builder 6, ale mamy pewne problemy. Program ma póki co polegać na poruszaniu się obiektu automatycznie i omijaniu przeszkód. Znamy podstawy, natomiast nasuwają nam się następujące pytania:

  1. Chcemy aby nasz obiekt poruszał się za pomocą Canvas i póki co umiemy go rysować w innych współrzędnych, ale nie potrafimy usunąć poprzednio narysowanych obrazków. Korzystamy tutaj z bitmap. Chcielibyśmy wiedzieć czy poza przerysowaniem w taki sposób i usuwaniem poprzednich obrazków istnieje inny sposób poruszania bitmapą, a jeśli nie, to w jaki sposób zrobić to optymalnie ?
  2. Chcieliśmy zaimplementować system kolizji opierający się na sprawdzaniu koloru pixela znajdującego się "przed" naszym obiektem, ale nie potrafimy sprawdzić pojedynczego pixela.
    Czy jest to dobre podejście do kolizji, czy może powinniśmy spróbować innego sposobu ?
    Nasz "świat" byłby raczej statyczny, chociaż myśleliśmy nad generowaniem go randomowo za każdym razem, więc bylibyśmy wdzięczni za ewentualne podpowiedzi do obu rozwiązań.
0

Chcieliśmy zaimplementować system kolizji opierający się na sprawdzaniu koloru pixela znajdującego się "przed" naszym obiektem
Czy jest to dobre podejście do kolizji, czy może powinniśmy spróbować innego sposobu ?

Po to masz pozycję każdego obiektu na canvasie aby z niej skorzystać i wyliczyć kolizję. Możesz tego dokonać przez zwykłe sprawdzanie współrzędnych, lub wyliczając odpowiednie wektory.

0

Chcemy aby nasz obiekt poruszał się za pomocą Canvas i póki co umiemy go rysować w innych współrzędnych, ale nie potrafimy usunąć poprzednio narysowanych obrazków. Korzystamy tutaj z bitmap. Chcielibyśmy wiedzieć czy poza przerysowaniem w taki sposób i usuwaniem poprzednich obrazków istnieje inny sposób poruszania bitmapą, a jeśli nie, to w jaki sposób zrobić to optymalnie ?

Kontrolki nie służą pisaniu gier, ani rzeczy gro-podobnych, bo są mało wydajne.
Dobrym wyjściem byłoby skorzystanie z jakiegoś silnika OpenGL/DirectX, jak np.ZenGL.

Chcieliśmy zaimplementować system kolizji opierający się na sprawdzaniu koloru pixela znajdującego się "przed" naszym obiektem
Czy jest to dobre podejście do kolizji, czy może powinniśmy spróbować innego sposobu ?

"dobre" byłoby zrobienie listy obiektów i przy poruszaniu się, należałoby jedynie sprawdzać po kolei każdy obiekt z listy, czy aby przypadkiem z nim wtedy (po wykonaniu ruchu) nie będzie kolizji.
"najlepsze" podejście jest podobne do powyższego, lecz z tą różnicą, że zamiast listy zaimplementować jakieś drzewo, by nie sprawdzać za każdym razem wszystkich obiektów (+100 punktów do optymalizacji, chociaż poniżej kilku tysięcy obiektów nie będzie wielkiej różnicy).

1 użytkowników online, w tym zalogowanych: 0, gości: 1