Tutorial pemrograman C kali ini membahas secara singkat tentang contoh program animasi multi-objek sederhana yang manampilkan angka 0-9 yang bergerak naik-turun secara bersamaan 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.

Btw, saya menggunakan IDE dan Kompiler C yang gratis nan mantap, yakni: Pelles C.

Pada contoh program ini saya mengaplikasikan struct, array of struct dan perulangan, serta sedikit akses ke WinAPI (USER32.DLL). Struktur data digunakan 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;
    int color;
} STRUCT_ANGKA;

STRUCT_ANGKA AngkaMantul[10];

AngkaMantul adalah variabel array bertipe STRUCT_ANGKA 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(100) – tunda proses selama 100ms
  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 objek pada 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.

/*
     Contoh program animasi teks angka 0-9 memantul
     Chandra MDE
     telinks.wordpress.com
*/
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>

#pragma lib "user32.lib"
 
typedef struct {
     int x;
     int y;
     int miny;
     int maxy;
     int addy;
     char kar;
     int color;
 } STRUCT_ANGKA;

 int i;
 STRUCT_ANGKA AngkaMantul[10];

 void CetakAngka(void)
 {
     for (i=0; i<=9; i++)
     { 
         _textcolor(AngkaMantul[i].color);
         _gotoxy(AngkaMantul[i].x, AngkaMantul[i].y);
         printf("%c", AngkaMantul[i].kar);
     }
 }
 int main(void)
 {
     SetConsoleTitleA("Animasi Teks Angka Naik-Turun - Chandra MDE, telinks.wordpress.com");
     ShowCursor(0); //sembunyikan cursor
     _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 = 15;              //baris
     AngkaMantul[i].miny = 15 - i;       //minimum baris
     AngkaMantul[i].maxy = 15;           //maksimum baris
     AngkaMantul[i].addy = -1;           //faktor penambahan baris
     AngkaMantul[i].kar = 48 + i;        //karakter angka
     AngkaMantul[i].color = i + 3;       //warna angka
 }

 //animasi teks hingga tombol ditekan
 while (!_kbhit())
 {
     CetakAngka();
     Sleep(100);
     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;
 }

Kode program di atas sudah cukup jelas, sehingga tidak perlu saya jelaskan lagi. Program menggunakan fungsi-fungsi dasar tanpa pointer, jadi bisa mudah dipahami.

Untuk mengganti tulisan Console Title dengan “Animasi Teks Angka Mantul – Chandra MDE, telinks.wordpress.com”, program menggunakan fungsi WinAPI SetConsoleTitleA() yang terdapat pada library USER32.DLL.

Dan berikut adalah beberapa screenshot dari program yang sedang running.

Bagaimana? Lumayan, bukan?

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 A-J Mantul
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.

Demikianlah contoh sederhana animasi multi-objek menggunakan bahasa C sebagai materi untuk berlatih pemrograman. Semoga bermanfaat.

Pelatihan Privat Online Pemrograman dan Pembuatan Program C

Kami melayani Pelatihan Privat Pemrograman Bahasa C Tingkat Dasar dan juga melayani pembuatan program C untuk beberapa platform antara lain:

  • Windows, menggunakan Pelles C
  • Linux, menggunakan GCC
  • Mikrokontroler, menggunakan Arduino IDE dan AVR-GCC

Materi dapat diminta sesuai kebutuhan.

Info lebih lanjut mengenai Pelatihan Privat Pemrograman, silakan menghubungi nomor WhatsApp 0882-3560-7047.