Friday, 25 February 2011

Tile Map dengan SDL (3)

Agar Lebih Praktis.


Tulisan ini merupakan lanjutan dari:
Tile Map dengan SDL (1)
Tile Map dengan SDL (2)

Banyak kekurangan pada kode sebelumnya, salah satunya adalah saat kita menampilkan tile-tile tersebut:


...
   for(int c=0;c < TilePerkolom;c++){
      for(int d=0;d < TilePerbaris;d++){
         terapinGbr(d*ukuranTile,c*ukuranTile, tileSet, screen, &clipTile40x40[pola[c][d]]);
      }
   }
...

Dimana letak kesalahannya? Yaitu saat menampilkan nilai pada array pola[][]. Misalkan kita menampilkan potongan gambar (clipTile40x40) yang tidak sesuai. Seperti diketahui potongan ini dimulai dari angka 0 sampai 3 (berjumlah 4 potong). Apa yang terjadi jika nilainya dibawah 0 (-1,-2,dst) atau diatas 3 (4,5,dst)? Untungnya program masih dapat berjalan hanya saja potongan gambar ini menjadi aneh . Sehingga kita perlu memperbaiki kode tersebut:


...
   for(int c=0;c < TilePerkolom;c++){
      for(int d=0;d < TilePerbaris;d++){

         int _temp = pola[c][d];
         if( pola[c][d] < 0 ) _temp = 0;
         else if( pola[c][d] > MAX_TILE ) _temp = MAX_TILE-1;

         terapinGbr(d*ukuranTile,c*ukuranTile, tileSet, screen, &clipTile40x40[ _temp]);
      }
   }
...

Dapat dilihat bahwa jika nilainya tidak sesuai, maka akan disesuaikan (ya iyalah... kalau nggak error lagi ntar ). Intinya kita mencegah nilai-nilai yang tidak semestinya yang dapat menyebabkan program 'Crash'. Ini baru dari sisi keamanan nilai, bagaimana dengan sisi yang lainnya? Misal kemudahan pengembangan Map (peta). Disini jika kita ingin merubah nilai-nilainya maka perlu melakukan proses build ulang, atau nilainya berada pada tubuh program (secara Hardcore). Yang tentu kurang efisien, terlebih ketika melibatkan banyak library dan banyak perubahan tata letak gambar pada peta. Sehingga kita perlu sedikit modifikasi. Yang diperlukan adalah sebuah file yang menyimpan deretan nilai peta kita, seperti contoh file berikut ini (kita namakan 001.mymap):


2 2 1 1  2 3 1 1  2 1 1 1  3 3 1 1
2 1 1 1  2 3 1 1  2 1 1 1  3 3 1 1 
1 1 1 1  2 3 1 1  1 1 1 1  3 3 1 1 
1 1 1 1  2 3 1 1  2 1 2 1  1 1 1 3 
1 1 1 1  1 1 2 1  1 1 2 1  3 3 1 3 
1 1 1 1  2 3 1 1  2 1 1 1  3 2 1 1  

2 1 2 3  1 2 1 1  2 1 1 1  1 1 2 3 
1 1 1 1  1 1 1 1  3 1 1 1  1 3 1 1 
1 1 1 1  1 3 1 1  2 1 1 1  3 3 1 3 
3 3 1 1  2 1 1 1  1 1 1 1  1 3 1 1 
1 0 3 5  2 3 2 2  2 1 1 1  3 1 2 2 
0 1 3 3  3 3 1 1  3 1 1 1  3 1 1 1 

Dengan memanggil sebuah file tentu kita sudah dapat membuat kode-nya lalu menampilkan nilai-nilai dari file 001.mymap diatas dong? . Disini kita melakukannya secara Softcore, yaitu tanpa perlu build ulang source code. Dengan bermodalkan notepad kita sudah dapat merubah nilai-nilai diatas (jangan bingung dengan ektensi '.mymap' hehe..). Jika anda belum bisa maka akan kita bahas di tulisan selanjutnya hehehe... berikut program dan source codenya. Happy Coding!

- krofz

No comments:

Post a Comment

Maaf jika komentar anda lama terbitnya ^__^, penulis berusaha OL sesering mungkin. Komentar anda adalah semangat blog ini, dan juga semangat para blogger lainnya. You can use XHTML tags: <a href="" rel="link"> </a>, <strong> </strong>, <b> </b>, <em> </em>, <i> </i>.

Spesial character use :
&lt; for <
&gt; for >


Use Pastebin.com for alternative to display your code :) .

 

back to top

back to top