Wednesday, 31 July 2013

(SDL) Tebak Gambar! (Part I)




Pilih Secara Bijak!


Kali ini kita akan membuat sebuah kuis Tebak Gambar. Gameplaynya sederhana program akan menampilkan pertanyaan diikuti oleh 4 buah kotak berisi gambar yang harus ditebak. Tema gambar yang saya gunakan adalah Fauna alias Hewan , tema ini tentu dapat anda ganti . Dan berikut ini daftar beberapa variabel serta objek class yang akan digunakan :

... // gX dan gY = posisi kursor mouse (X,Y) // gJawab , sudah berapa kali user menjawab pertanyaan // waktu , berapa banyak waktu (detik) yg sudah berjalan int gScore = 0, waktu = 0, gJawab = 0, gX = 0, gY = 0; SDL_Surface * gbrSinga = NULL; ... // dan beberapa surface SDL_Surface * gbrUnknown = NULL; struct sTanya { std::string Pertanyaan; std::vector Jawaban; }; class tombol { SDL_Rect kotak; SDL_Surface *gambar; int gbrKe; bool jawaban; public: tombol(int x, int y, int w, int h, SDL_Surface *gbr_, int bykGbr, bool jawab_); ~tombol(); bool proses(int x, int y); bool getJawaban(){ return jawaban; } //dst = destination, tOver = tombol over void tampil(SDL_Surface *dst, std::string teks = ""); }; ...

struct sTanya akan menyimpan kalimat pertanyaan dan juga jawaban. Penggunaan vektor pada integer jawaban dimaksudkan agar 1 pertanyaan dapat menyimpan lebih dari 1 jawaban terkait, contoh pertanyaan "Hewan pemakan daging", jawabannya "Singa", "Harimau", "Serigala", dst. Selanjutnya class utama program kita yaitu tombol. Pada kelas ini objek kotak hanya menyimpan alamat gambar (SDL_Surface *gambar), gambar ke berapa (int gbrKe), posisi gambar untuk ditampilkan (SDL_Rect kotak), dan benar atau salahnya jawaban (bool jawaban), dan beberapa fungsi penting. Selanjutnya kita akan membuat 4 buah objek tombol dengan 3 diantaranya memiliki jawaban yang salah, dan 1 yang benar. Kecuali anda ingin empat-empat-nya benar , itu lain cerita.

Agar program dapat leluasa untuk menambahkan atau merubah pertanyaan serta jawaban yang dibutuhkan kita perlu membuat pertanyaannya diluar program yaitu berupa file teks. Berikut ini format yang saya gunakan:

... Membantu penyerbukan bunga#Lebah Salah satu hewan Herbivora #Gajah#Kambing#Panda#Sapi ...

Sebelah kiri teks adalah pertanyaannya, lalu setelah menemukan tanda sharp ('#') maka kata selanjutnya sampai ketemu sharp lagi adalah jawaban yang akan ditampung. Dilanjutkan terus sampai bertemu new line ('\n') maka pindah ke pertanyaan selanjutnya. Setelah pertanyaan sudah diperoleh, dan ditampung oleh objek sTanya maka selanjutnya proses pengacakan pertanyaan mana yang akan ditampilkan dan pada posisi berapa (1-4 , sesuai banyaknya tombol). Agar tidak membosankan kita akan membuat beberapa tingkat kesulitan pertanyaan. Contoh setelah user menjawab 10 atau lebih pertanyaan Level 1 dengan nilai yang cukup tinggi, maka program akan otomatis terhenti untuk menampilkan skor sementara lalu dilanjutkan ke Level 2 atau seterusnya.

Kurang lebih alur program akan seperti ini, penambahan dan perbaikan mungkin menyusul hahaha. Selanjutnya kita akan mulai merangkai alur yang telah kita buat ini ke dalam kode-kode.

- Krofz

 

back to top

back to top