jrdrwn / StackArrayTUI

Tugas impementasi Stack dalam kehidupan sehari-hari

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

StackArrayTUI

Aplikasi ini adalah sebuah permainan sederhana yang terinspirasi dari sebuah permainan anak-anak yang bernama Rings of Color dan terinspirasi dari sebuah iklan permainan botol warna yang acak yang warnanya harus diurutkan sampai jadi satu warna.

Aplikasi ini dibuat dari bahasa pemrograman C++ yang memanfaatkan konsep Stack (Array of Struct) dan menggunakan library atau pustaka pihak ketiga bernama FTXUI (Functional Terminal (X) User interface) untuk membuat antarmuka pengguna agar aplikasi lebih menarik dan mudah untuk diakses.

Untuk data struct di aplikasi ini yaitu:

struct Data {
  Color::Palette256 warna;
  int id;
};

untuk detail struct sebagai berikut.

tipe nama deskripsi
Color::Palette256 warna nilai warna yang akan diterapkan pada aplikasi
int id untuk memisakan komponen agar tidak bertabrakan

Aplikasi ini mendefinisikan stack (Array) yang maksimal isinya ada 5 namun bisa diubah.

#define MAX 5

stack yang ada di aplikasi ini ada 3 buah yang dimana setiap stack menyimpan data struct agar bisa diterapkan pada aplikasi dan ditetapkan nilai awal agar bisa menyesuaikan pada referensi permainan.

Data s_left[MAX] = {
    {Color::DeepSkyBlue3, 3},
    {Color::Yellow1, 1},
};
int top_left = 2;
Elements items_left = {};

Data s_center[MAX] = {
    {Color::DeepSkyBlue3, 3},
};
int top_center = 1;
Elements items_center = {};

Data s_right[MAX] = {
    {Color::DeepSkyBlue3, 3},
    {Color::Green3Bis, 2},
    {Color::Yellow1, 1},
};
int top_right = 3;
Elements items_right = {};

untuk fungsi-fungsi yang ada tidak jauh beda dengan fungsi yang ada pada stack pada umumnya hanya saja sedikit ada penyesuaikan.

bool isfull(int top) { return top == MAX; }

bool isempty(int top) { return top == 0; }

void push(Data stack[], int &top, Data data) {
  if (isfull(top)) {
    response = "SUDAH PENUH";
    return;
  }
  stack[top] = data;
  top++;
  data_state = {Color::LightCyan3, -1};
  response = "DIISI";
}

void pop(Data stack[], int &top) {
  if (isempty(top)) {
    response = "KOSONG!";
    return;
  }
  response = "TERPOP!";
  top--;
  data_state = stack[top];
}

void display(Data stack[], int *top, Elements &items) {
  items = {};
  for (int i = *top - 1; i >= 0; --i) {
    items.push_back(vbox({text(L"")}) | bgcolor(stack[i].warna));
  }
}

untuk bagian program utama atau yang ada di int main() berisi pengaturan untuk mengatur tata letak pengguna menyesuaikan fungsi dari stack

Cara mengcompile menjalankan aplikasi

aplikasi ini perlu di compile terlebih dahulu sebelum dijalankan.

bahan-bahan

  • CMake yang berfungsi sebagai tools untuk membuat aplikasi
  • Compiler yang bisa menggunakan GCC, MinGW, Clang dan lainnya.

lalu masuk ke dalam folder utama dari aplikasi dan jalankan perintah ini pada Terminal atau CMD

cmake --build ./build --config Release --target all -j 10

atau memakai IDE seperti Visual Studio Code atau CLion agar mempermudah

jika sudah di compile maka aplikasi dapan dijalankan dengan cara masuk ke folder ./build dan jalankan perintah pada Terminal atau CMD

.\StackArrayTUI.exe

About

Tugas impementasi Stack dalam kehidupan sehari-hari


Languages

Language:C++ 85.0%Language:CMake 15.0%