Wednesday, 30 October 2013

Tebak Gambar game Android


Screenshot menu utama game Tebak Gambar (Android) download version 1.0.1
Official Website : http://tebakgambar.com/

Well, beberapa hari ini mungkin ada pengunjung yang mencari beberapa jawaban mengenai game Tebak Gambar (Android) melalui Google atau mesin pencari lainnya. Dan menemukan blog ini dengan kata kunci pencarian yang mirip hahaha, yaitu "Tebak Gambar". Setelah di klik berharap dapat kunci jawaban eh malah dialihkan ke artikel berikut http://membuatgamedengancpp.blogspot.com/2013/07/sdl-tebak-gambar-part-i.html .

Karena penasaran saya juga ingin mencoba game tersebut. Setelah dicoba memang menarik, menguji imanijasi dan kreatifitas kita. Untuk kunci jawabannya sendiri sulit dibagikan karena kemungkinan beberapa urutan soalnya akan diacak sesuai tingkatan (level) atau ada beberapa soal yang berubah terutama saat penambahan versi program. Yang perlu diperhatikan saat bermain game ini adalah beberapa kata harus baku, contoh "Tai" menjadi "Tahi", lalu "Duit" menjadi "Uang". Untuk setiap levelnya kita diberikan sebuah opsi bantuan sebanyak tiga kali (dilambangkan dengan bintang lima). Beberapa soal memang kadang cukup sulit tergantung daya imanijasi anda, sehingga perlu klik tombol bantuan

Beberapa stage mungkin agak sulit tergantung imajinasi anda @_@

Tips dari saya jika anda memang kesulitan mencari jawaban pada stage di level tertentu, sebisa mungkin saat bermain tidak menggunakan bantuan untuk dipergunakan di stage yang benar-benar sulit. Tetapi jika bantuan sudah habis terpaksa meminta bantuan teman atau terus mencoba beberapa kombinasi kata walaupun resikonya akan kedepak ke awal stage jika salah dan nyawa dalam permainan habis. Tapi setidaknya anda sudah tahu jawaban setiap stage yang sudah dilewati saat memulai dari awal, hahahaha . Selamat bermain!

- krofz

Friday, 25 October 2013

Deret Angka berbentuk Spiral



Kali ini kita akan mencoba membuat deret angka berbentuk spiral. Pertama-tama kita lihat deret angka berikut :
Gambar 1. Deret angka, dengan lebar = 5 dan tinggi = 5

Deret sederhana diatas dapat dibentuk dengan menggunakan for loop bercabang atau hanya loop biasa, berikut contoh codenya :
    
    ...
    // untuk MaxA = Tinggi, dan MaxB = Lebar 
    // loop bercabang
    for(int i=0;i < maxA;i++){
        for(int j=0;j < maxB;j++){
            std::cout << std::setw(2) << std::setfill(' ') << (i*maxA)+j+1 << " ";
        }
        std::cout << "\n";
    }
    std::cout << "\n\n";

    // loop biasa
    for(int i=0;i < (maxA*maxB);i++){
        std::cout << std::setw(2) << std::setfill(' ') << i+1 << " ";
        if( (i+1)%maxA == 0 ) std::cout << "\n";
    }
    /*
    output :
    input 5 x 5
    1  2  3  4  5
    6  7  8  9  10
    11 12 13 14 15
    .... dst
    */
    ...

Seperti judul artikel ini, kita akan membuat deret angkat tersebut menjadi Spiral sehingga terlihat seperti gambar berikut :

Gambar 2. Deret angka berbentuk Spiral

Sayangnya saya belum bisa membuat dengan 1 for loop atau bercabang tanpa bantuan array dan beberapa variabel lainnya . Berikut ini variabel yang digunakan :
  
    ...  
    int lastX = maxX-1, lastY = maxY-1, minX = 0, minY = 1;
    int curX = 0, curY = 0;

    const int KANAN = 0, BAWAH = 1, KIRI = 2, ATAS = 3;
    int arah = KANAN;
    int mySpiral[maxY][maxX];
    ...

Cukup banyak variabel yang diperlukan hehehe . Logicnya sederhana, pertama siapkan array 2 dimensi yang akan menampung deret spiral kita (array MySpiral). Variabel arah yang akan membantu kita dalam mengisi array Spiral sesuai arah yang ditentukan. Lalu pertanyaanya bagaimana membuat arah ini sesuai dengan yang diharapkan? Contoh dimensi 3 x 3 :
  .
     1  2  3
     8  9  4
     7  6  5
  .
Kita akan mengisi nilai array spiral dengan menggunakan "for loop" dari 0 sampai (Tinggi*Lebar). Dengan menggunakan koordinat dari CurX (current X) dan CurY (current Y). Urutan koordinat yang harus diisi dimulai dari titik 0 untuk x dan y sesuai indeks awal array yaitu nol. Jadi dari kiri ke kanan adalah (0,0), (1,0), (2,0). Lalu saat mentok kanan (sama dengan lebar dikurang 1) arah berubah menjadi ke bawah, (2,0), (2,1), (2,2) mentok pada tinggi dikurang 1. Lalu ke kiri dan seterus sesuai arah yang telah ditentukan. Jika dilihat dari pola 3 x 3 diatas, jika saat proses arah ke atas dari (0,2),(0,1),(0,0) maka akan mengacaukan pola spiral. Jika perhitungan sampai mentok keatas, karena nilai (0,0) telah terisi, ini juga berlaku untuk dimensi 4x4 , 5x5 dst yang akan membentuk pola bingkai atau mengisi sekeliling array.

Untuk itu kita gunakan variabel lastX, lastY, minX, dan minY dengan nilai "int lastX = Lebar-1, lastY = Tinggi-1, minX = 0, minY = 1;", sebagai pembatas agar pola dapat tercipta. Bagaimana variabel tersebut bekerja? lastX dimaksudkan untuk batas kanan atau posisi terakhir koordinat X, lalu lastY adalah batas bawah, minX adalah batas kiri, dan minY adalah batas atas. Contoh spiral 4x4:
  
    .
     1  2  3  4 
    12 13 14  5
    11 16 15  6
    10  9  8  7

     1  2  3  4 < --- lastX dengan nilai pertama
    12 13 14  < --- lastX dengan nilai kedua
    11 16 15  6
    10  9  8  7
    .
Saat posisi X saat ini (CurX) mencapai lastX pertama yaitu maxX (Lebar) dikurang 1 (untuk menyesuaikan indeks array yang dimulai dengan nol), yaitu maxX = 3 maka selain arah dirubah, nilai LastX juga dikurangi 1. Ini juga berlaku untuk lastY, minX, dan minY, setelah perubahan array, dirubah juga nilai pembatasnya. Terus berulang sampai pengulangan selesai. Berikut ini kode pengulangannya:
    
    ...    
    for(int i=0;i < (maxY*maxX);i++){
        mySpiral[curY][curX] = i+1;

        switch( arah)
        {
            case KANAN:
                if( curX < lastX){
                    curX++;
                }else{
                    arah = BAWAH;
                    curY++;
                    lastX--;
                } break;
            case KIRI:
                if( curX > minX){
                    curX--;
                }else{
                    arah = ATAS;
                    curY--;
                    minX++;
                } break;

            case ATAS:
                if( curY > minY){
                    curY--;
                }else{
                    arah = KANAN;
                    curX++;
                    minY++;
                } break;

            case BAWAH:
                if( curY < lastY){
                    curY++;
                }else{
                    arah = KIRI;
                    curX--;
                    lastY--;
                } break;
            default:;
        }
    }
    ...
Akhirnya proses pembuatan spiral selesai! . Untuk proses input dan output silahkan ditambahkan sendiri . Salah satu contoh game yang menggunakan proses ini adalah Bomberman dimana saat terjadi Sudden Death. Yaitu saat waktu permainan berakhir dan masih saling bertarung, muncul kotak-kotak batu besar yang muncul dari atas dan jatuh secara Spiral! :
Gambar 3. Sudden Death pada Bomberman ( Courtesy of Youtube, Channel : BrezenMafiaJoe, link video : http://www.youtube.com/watch?v=c7VOfJuVNT8 )



- Krofz

 

back to top

back to top