Tutorial Pemrograman Pelles C: Animasi Multi-Objek (10 Karakter Memantul)


angkamantul

Tutorial pemrograman Pelles C kali ini membahas secara singkat tentang contoh program animasi multi-objek sederhana yang manampilkan angka 0-9 yang bergerak secara simultan naik-turun secara vertikal di layar console.

Tinggi pantulan masing-masing angka sesuai dengan nilai angkanya. Angka 0 tidak memantul, angka 1 memantul satu karakter ke atas, angka 2 memantul setinggi 2 karakter, angka 3 memantul setinggi 3 karakter, angka 4 memantul setinggi 4 karakter, dan seterusnya hingga angka 9 yang memantul setinggi 9 karakter ke atas.

Pada contoh program ini saya menggunakan struktur data untuk menyimpan data objek yang berupa karakter 0-9 (bisa juga diganti karakter lain). Berikut adalah struktur datanya.

typedef struct {
    int x;
    int y;
    int miny;
    int maxy;
    int addy;
    char kar[1];
    int color;
} STRUCT_ANGKA;

STRUCT_ANGKA AngkaMantul[10];

AngkaMantul adalah variabel array yang menyimpan 10 objek karakter dengan parameter-parameter sebagai berikut:

int x; kolom posisi karakter di layar
int y; baris posisi karakter di layar
int miny; nilai minimum baris posisi karakter di layar
int maxy; nilai maksimum baris posisi karakter di layar
int addy; nilai faktor penambahan posisi baris (+=turun, –=naik)
char kar[1]; karakter objek
int color; warna objek

Skenario program secara sederhana adalah sebagai berikut:

  1. Inisialisasi data
  2. Tampilkan masing-masing objek (karakter) pada posisinya dengan atributnya masing-masing
  3. Sleep(50) – tunda proses selama 50ms
  4. Cek apakah posisi baris objek, kalau sudah maksimum set addy=-1 (supaya bergerak naik pada looping selanjutnya), dan kalau sudah minimum set addy=1 (supaya bergerak turun pada looping selanjutnya)
  5. Hapus objek di layar
  6. Update posisi baris terbaru
  7. Ulangi 2 hingga tombol keyboard ditekan

Catatan:
Perlu diketahui bahwa nilai maksimum posisi objek adalah di bawah dan nilai minimum posisi objek adalah di atas.

Skenario di atas adalah representasi program utama dari program keseluruhan. Berikut adalah program utama dari aplikasi animasi teks angka mantul.

int main(int argc, char *argv[])
{
    SetConsoleTitleA("Animasi Teks Angka Mantul – Chandra MDE");
    _textcolor(10); _gotoxy(0, 0);
    printf("Angka Mantul – press any key to exit…");

    //inisialisasi data AngkaMantul
    for (i=0; i<=9; i++)
    {
        AngkaMantul[i].x = 25 + 3 * i;        //kolom
        AngkaMantul[i].y = 22;                //baris
        AngkaMantul[i].miny = 22 – i;        //minimum baris
        AngkaMantul[i].maxy = 22;            //maksimum baris
        AngkaMantul[i].addy = -1;            //faktor penambahan baris
        AngkaMantul[i].kar[0] = 48 + i;        //karakter angka
        AngkaMantul[i].color = i + 3;        //warna angka
    }

    //animasi teks hingga tombol ditekan
    while (!_kbhit())
    {
        CetakAngka();
        Sleep(50);

        for(i=1; i<=9; i++)
        {
            if (AngkaMantul[i].y==AngkaMantul[i].maxy)
                AngkaMantul[i].addy = -1;
            else if (AngkaMantul[i].y==AngkaMantul[i].miny)
                AngkaMantul[i].addy = 1;
            _gotoxy(AngkaMantul[i].x, AngkaMantul[i].y);
            printf(" ");

            AngkaMantul[i].y = AngkaMantul[i].y + AngkaMantul[i].addy;
        }
    }
    return 0;
}

Program mengganti tulisan Console Title dengan “Animasi Teks Angka Mantul – Chandra MDE” dengan menggunakan fungsi WinAPI SetConsoleTitleA().

Dan berikut adalah beberapa screenshot dari program yang sedang running.

angkamantul3

angkamantul2

Lumayan, bukan?😀

Setidaknya contoh program ini bisa dipelajari untuk mengasah keterampilan dasar pemroraman C. Selain penggunaan looping, penggunaan struktur data sederhana pada program ini bisa digunakan sebagai contoh tentang bagaimana menggunakan struktur data pada program.

Contoh program C ini juga dapat dengan mudah dikembangkan menjadi program C++ dengan mengembangkan struktur data STRUCT_ANGKA menjadi class C++.

Sedikit modifikasi pada program di atas dapat dilakukan misalnya dengan mengganti karakter angka dengan abjad kapital A-J dan mengubah posisi minimum dan maksimum objek pada layar. Berikut adalah contoh perubahan programnya.

//inisialisasi data AngkaMantul
for (i=0; i<=9; i++)
{
    AngkaMantul[i].x = 25 + 3 * i;        //kolom
    AngkaMantul[i].y = 22;                //baris
    AngkaMantul[i].miny = 22 – 2*i;        //minimum baris JADI 2 KALI
    AngkaMantul[i].maxy = 22;            //maksimum baris BERUBAH
    AngkaMantul[i].addy = -1;            //faktor penambahan baris
    AngkaMantul[i].kar[0] = 65 + i;        //karakter ABJAD
    AngkaMantul[i].color = i + 3;        //warna angka
}

Berikut adalah screenshot hasil running program setelah perubahan data objek.

abjadmantul

Nah, semoga contoh program sederhana dengan sedikit pembahasan ini dapat bermanfaat bagi kita semua.

Anda bisa mengunduh project Pelles C aplikasi ini melalui download link berikut ini:

angkamantul.rar
(~20KB)

Program lain yang merupakan pengembangan dari program ini dapat Anda baca pada halaman ini. Program menampilkan animasi karakter abjad A-Z dengan 4 arah gerakan. Berikut adalah screenshot program AlphabetMantul.

abjadmantul2

Selamat belajar dan selamat berkarya!

😀

2 comments

  1. Ricky · Januari 5, 2014

    Ini pelajaran yang bagus tentang struktur data dan pemrograman. Jadi inget dulu waktu belajar dasar pemrograman pake Turbo Pascal. Makasih sharing nya.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s