Untuk membuat mobil bisa jalan di jalan raya tanpa menabrak dinding, kami kepikiran untuk menggunakan collision detection (deteksi nabrak atau tidak). Algoritma-algoritma di bawah adalah referensi dari beberapa sumber tentang bagaimana mengimplementasikan collision detection pada gambar mobil dan gambar peta.
gambar: www.leftlion.co.uk
Diciptakan sebuah BitMask dari sprite image yang ada, dan akan di-pass 2 bitmask yang akan dicek collision, dan offset (beda x dan y) dari 2 sprite.
Contoh:
// Just some 'position' variables for the example
int x1 = 100, , y1 = 100, x2 = 120, y2 = 101;
// to create the bitmasks from a bitmaps
BITMAP* bmp1 = load_bitmap("image1.bmp", NULL);
BITMAP* bmp2 = load_bitmap("image2.bmp", NULL);
bitmaks_t* mask1 = bitmask_new(bmp1);
bitmaks_t* mask2 = bitmask_new(bmp2);
// and for collision detection
bitmask_overlap(mask1, mask2, x1-x2, y1-y2)
http://www.allegro.cc/forums/thread/589491
=================
Ada beberapa cara untuk menyelesaikan collision detection:
1. Jika gambar peta bertipe "tile", yang tiap "blok" nya dapat dikenali dengan mudah karena menggunakan gambar yang sama dengan blok yang lain. Yang harus dilakukan adalah, ada list "blocking tiles" dan peta dapat membuat "collision map" dengan membandingkan tiap tile dengan tile yang ada di "blocking list"
2. Jika gambarnya adalah gambar biasa, dan pixel dari blok satu tidak sama dengan pixel blok lainnya. Dapat dicoba edge algorithm pada gambarnya. Tapi lebih baik jika gambarnya dalam BG layer dan FG layer ssehingga FG layer memiliki pre-defined color (alpha = 0) dan test pixel dengan warna itu untuk mencari tahu apa saling blocking atau tidak.
3. Tidak ada banyak blocking shape, tapi biasanya kompleks (poligon, elips, dll). Biasanya untuk tipe point-and-click game adventure. Maka dapat diciptakan path untuk mencocokkan batasan-batasannya dengan program gambar vektor dan buat library yang melakukan poligon intersection atau bezier collision.
http://en.how-to.mobi/index.php?sd=id&id=137443
===================
Tentang color depth
color depth digunakan untuk mendefinisikan jumlah bit per pixel yang ditampilkan ke screen komputer. Data disimpan dalam bits, tiap bit merepresentasikan 2 warna karena memiliki nilai 1 atau 0. Semakin banyak bit per pixel, maka semakin banyak warna yang bisa ditampilkan.
True color
Gambar dinamakan memiliki true color jika tiap pixel terdefinisi dalam RGB atau CMYK. Tiap pixel dalam gambar true color memiliki 256 kemungkinan warna. RGB true color akan memiliki 24-bit color depth dan CMYK true color 32-bit color depth.
Gambar yang bukan rgb atau cmyk dan menurunkan warnanya dari "pallete" dinamakan indexed color.Palet warna dalam indexed color memiliki jumlah warna yang terbatas. Beberapa file format membatasi warnanya menjadi kurang dari 256, misalnya format gif yang memiliki color depth 8 bit.
http://www.sketchpad.net/basics6.htm
===================
Ada juga pertimbangan untuk mengconvert peta dalam MATRIKS 2 dimensi dan akan dilakukan deteksi jika ada tabrakan menggunakan nilai elemen yang diberikan. But that will truly make us in a total pain T_T
Kami harus cepat diskusi lebih lanjut mengenai algoritma mana yang akan dipakai. Deadline mengintai.
Readmore..