Monday, 28 February 2011

Tile Map dengan SDL (4)

"001, 002, 003, ... 999" + ".mymap"



Seperti janji saya sebelumnya, maka langsung saja kita download saja program dan source codenya pada link berikut ini.

Link : http://www.ziddu.com/download/13984636/49_Tile_Map.v0.2.7z.html
Size : 371.05 KB
Control : Use Arrow Up and Down.

Perhatikan fungsi diatas fungsi utama (main), yaitu 'bool setPolaTile(int _nomor)'. Sesuai namanya ia akan mengatur pola dari ubin-ubin yang akan menghias peta kita . Didalam fungsi ini kita akan memanggil file yang telah ditentukan, lalu nilai-nilai dalam file tersebut dimasukkan ke dalam array pola (yang sekarang telah menjadi variabel global). Terlihat bahwa parameter yang digunakan bertipe int atau bilangan bulat, ini untuk memudahkan pemanggilan file. Contoh 'setPolaTile(15)', yang berarti memanggil file peta ke 15 (015.mymap). Kenapa ada nolnya? seperti '009.mymap', '015.mymap', dst. Dibuat agar lebih rapi saja hehehe (atau malah lebih ribet. ) . Sebelum kita 'asal' panggil file dengan ifstream, terlebih dahulu nilai dari parameter fungsi (var _nomor) kita konversikan karena masih bertipe bilangan bulat. Sedangkan pengisian lokasi file pada ifstream harus bertipe string atau const char*. Dan tipe data stringstream berkerja disini, ia akan mengonversikan angka ke string atau sebaliknya.

Selanjutnya dengan variabel _namaFile, kita tampung terlebih dahulu string yang berisi lokasi file. Dengan inisialisasi awal berisi "Map/" menandakan file yang dituju ada dalam suatu folder, yaitu folder Map. Selanjutnya kita pastikan keberadaan file ini eksis atau tidak dengan pengecekkan kondisi '!= NULL', jangan sampai ia kurang pergaulan karena ketidak eksis-annya . Setelah file ditemukan lalu memasukkan nilai-nilainya ke array pola. Ibarat seorang turis yang berkunjung turis ini harus diperiksa terlebih dahulu isi kopernya, jangan bertanya apa yang harus dilakukan jika dia nggak bawa koper . Begitu juga dengan nilai-nilai ini, harus diperiksa kebenarannya:


   //jika nilainya tidak sesuai
   _file >> pola[c][d];
   if( pola[c][d] < 0 ) pola[c][d] = 0;
   else if( pola[c][d] > MAX_TILE ) pola[c][d] = MAX_TILE-1;

Kode diatas juga untuk mencegah nilai-nilai dasyat karena jumlah nilai pada file terlalu sedikit atau mengandung karakter (yang umumnya diterjemahkan dengan angka-angka besar). Serta jika file hanya memiliki beberapa nilai saja:

Gambar 1. Ada yang salah dengan file ini!

Hmm, dari percobaan yang dilakukan ternyata program akan berhenti mentransfer nilai-nilai tersebut jika kondisinya seperti diatas. Misal jika ditengah jalan ketemu si a atau berada pada ujung file padahal belum berakhir, maka tidak terjadi perpindahan nilai. Tetapi pengulangan tetap berlangsung sampai akhir (sebanyak TilePerbaris*TilePerkolom). Sehingga nilai yang digunakan masih nilai pada kondisi terakhir. Untuk mengganti file peta dapat menggunakan tombol panah atas dan bawah.

Untuk tata letak clip / potongan gambarnya sendiri, belum saya tata dengan rapi ( Maaf untuk kemalasan saya ). Jika teman-teman ada yang ingin menatanya dan menambah potongan gambarnya dan memposting link download atau semacamnya disini saya sangat berterima kasih, maju terus Programmer Indonesia!. Terakhir baru nyadar kalau source code cpp selama ini disertakan ternyata masih menggunakan judul artikel yang lama pada bagian komentar diawal (masih pakai yang "Efek Transparan pada Gambar") *dodol .

- 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