Artikel Kelompok 2

6337086776686003782

Implementasi 

Game Tebak Angka Menggunakan C++

Nama angota kelompok: 

1. Sazkia Salsabila [202240014]

2. Seli Nopiani [202240023]

3. M Hasbi H [202240016]

4. Algariz Tegar Aziz [202240017]

5. Sihab Abdul Hakim [202240044]

Pendahuluan

Pemrograman adalah suatu  kemampuan yang dilakukan untuk menggabungkan logika, algoritma, dan implementasi teknis untuk menyelesaikan masalah. Salah satu cara untuk memahami dasar-dasar pemrograman adalah dengan membangun aplikasi sederhana seperti “Game Tebak Angka“. Studi kasus ini dirancang untuk melatih pemahaman tentang kontrol alur, input-output, dan angka acak menggunakan bahasa pemrograman C++.

Sering kali kita dihadapkan pada tantangan untuk menyelesaikan masalah yang kompleks dengan menggunakan logika dan algoritma yang sesuai. Salah satu masalah umum yang dapat dijumpai dalam pengembangan aplikasi adalah bagaimana menciptakan program yang efektif untuk menangani tugas sederhana seperti input pengguna, proses data, dan memberikan output berdasarkan hasil dari pemrosesan tersebut.

Rumusan Masalah

Dalam dunia pemrograman, Salah satu kasus sederhana yang sering dibahas adalah pembuatan program sederhana seperti Game Tebak Angka. Dalam studi kasus ini, tantangan utamanya adalah tentang bagaimana cara merancang dan mengimplementasikan sebuah game interaktif yang melibatkan angka acak dan interaksi pengguna berdasarkan logika dan algoritma yang telah dirancang. Masalah ini mencakup bagaimana mengelola input, memberikan feedback yang tepat, dan mengulang proses berdasarkan kebutuhan pengguna.

Adapun rumusan masalah yang akan dibahas adalah:

  1. Bagaimana merancang algoritma yang tepat untuk game tebak angka menggunakan C++?
  2. Bagaimana mengimplementasikan logika kontrol yang memungkinkan pengguna berinteraksi dengan sistem secara dinamis?
  3. Bagaimana mengoptimalkan efisiensi program agar dapat memberikan umpan balik yang akurat dan responsif kepada pengguna?

Studi kasus ini akan memberikan wawasan tentang bagaimana teori dan logika pemrograman dapat diterapkan dalam konteks aplikasi sederhana untuk menyelesaikan tantangan-tantangan tersebut.

Tujuan

1. Menggunakan fungsi angka acak (rand() dan srand()) untuk membuat elemen kejutan    dalam aplikasi.

2. Mengimplementasikan konsep logika sederhana pemrograman: 

   Permainan ini memanfaatkan logika sederhana seperti perbandingan (if-else) untuk menentukan apakah tebakan pemain terlalu tinggi, terlalu rendah, atau tepat.

3. Melatih penggunaan algoritma dasar:

    Algoritmanya untuk membandingkan angka secara iteratif sampai pemain menemukan jawaban yang benar.Melibatkan penggunaan loop (seperti while atau for) untuk menjaga permainan tetap berjalan sampai kondisi kemenangan terpenuhi.

4. Menggunakan interaksi manusia dan komputer:

  Program ini dirancang untuk menerima input dari pengguna dan memberikan keluaran berupa petunjuk (feedback) berdasarkan kondisi yang dievaluasi.

5. Melatih dan Memahami konsep dasar pemrograman dalam C++, seperti variabel,     perulangan, dan percabangan.

Melibatkan struktur kontrol seperti:

  • Percabangan untuk menentukan kondisi (if-else atau switch).
  • Perulangan untuk menjaga permainan tetap berjalan sampai pemain menang.

6. Mengajarkan manipulasi angka acak:

     Pemanfaatan fungsi untuk menghasilkan angka acak (rand() atau srand()) sebagai target angka yang harus ditebak, melatih konsep pseudo-random number generation.

7. Menyelesaikan masalah berbasis logika:

   Pemain harus menggunakan strategi untuk meminimalkan jumlah tebakan dengan mengikuti petunjuk (“terlalu tinggi” atau “terlalu rendah”), yang melatih logika penyelesaian masalah.

Teori yang Digunakan

 1. Variabel dan Tipe Data

   – Variabel adalah tempat untuk menyimpan data, seperti angka target dan tebak pengguna.

   – Tipe data yang digunakan adalah int untuk menyimpan angka.

2. Fungsi Angka Acak

   – rand() digunakan untuk menghasilkan angka acak.

   – srand(time(0)) digunakan untuk menginisialisasi seed angka acak agar hasilnya bervariasi

     setiap kali program dijalankan.

3. Struktur Kendali

   – Percabangan (if-else): Memeriksa apakah tebakan pengguna lebih besar, lebih kecil, atau

     sama dengan angka target. Perulangan (do-while): Mengulangi proses hingga pengguna   

     menebak angka dengan benar.

4. Input dan Output

   – Fungsi cin menerima input dari pengguna.

   – Fungsi cout menampilkan pesan atau umpan balik ke pengguna.

5. Logika Permainan

   – Logika utama terdiri dari:

   – Memilih angka acak dalam rentang tertentu.

   – Meminta pengguna menebak angka.

   – Memberikan umpan balik berdasarkan tebakan pengguna.

Algoritma

Berikut adalah langkah-langkah algoritma untuk membangun aplikasi game tebak angka, game ini mempunyai beberapa difficulty 

1. Inisialisasi angka acak dengan menggunakan fungsi srand(time(0)).

2. Pilih angka target secara acak dalam rentang tertentu, misalnya 1 hingga 100.

3. Tampilkan pesan pembukaan dan petunjuk ke pengguna.

4. Masukkan angka tebakan dari pengguna.

5. Lakukan perbandingan:

   – Jika tebakan lebih besar dari angka target, tampilkan pesan “Terlalu besar”.

   – Jika tebakan lebih kecil dari angka target, tampilkan pesan “Terlalu kecil”.

   – Jika tebakan sama dengan angka target, tampilkan pesan “Selamat, tebakan Anda benar!” dan hentikan permainan.

6. Ulangi proses hingga tebakan benar.

7. Tampilkan jumlah percobaan setelah permainan selesai.

Game ini juga mempunyai beberapa difficulty 4 tingkat kesulitan sebagai berikut :

  1. Tingkatan Mudah: Dari Angka 1-50, mempunyai 10 kesempatan
  2. Tingkatan Sedang: Angka 1-100, 7 kesempatan
  3. Tingkatan Sulit: Angka 1-200, 5 kesempatan
  4. Tingkatan Expert: Angka 1-500, 3 kesempatan

Berikut petunjuk yang lebih detail,  contohnya seperti:

  1. Terlalu besar/kecil
  2. Dekat (selisih ≤ 10)
  3. Sangat dekat (selisih ≤ 5)

Informasi permainan:

  • Tingkat kesulitan
  • Range angka
  • Kesempatan tersisa

Fitur tambahan:

  • Validasi input
  • Pesan kemenangan/kekalahan yang berbeda
  • Emoji untuk interface yang lebih menarik
  • Opsi untuk bermain lagi

Pengembangan yang bisa ditambahkan, sistem skor berdasarkan:

  • Tingkat kesulitan
  • Jumlah percobaan
  • Kecepatan menebak
  • Leaderboard
  • Mode multiplayer
  • Timer untuk setiap tebakan
  • Hint/bantuan terbatas
  • Sound effect
  • Animasi sederhana

FlowChart

Implementasi Program

Tahap 1: Persiapan dan Struktur Dasar

  • Persiapan Library
#include <iostream>    // Untuk input/output
#include <cstdlib>     // Untuk fungsi rand()
#include <ctime>       // Untuk fungsi time()
#include <string>      // Untuk tipe data string
using namespace std;
  • Membuat Class TebakAngka
class TebakAngka {
private:
    int angkaRahasia;      // Menyimpan angka yang harus ditebak
    int percobaan;         // Menghitung jumlah tebakan
    int maxPercobaan;      // Batas maksimum tebakan
    int batasAtas;         // Batas angka tertinggi
    int batasBawah;        // Batas angka terendah
    string tingkatKesulitan;  // Label tingkat kesulitan
};

Tahap 2: Implementasi Fungsi-fungsi dasar

  • Membuat Construktur
public:
    TebakAngka() {
        percobaan = 0;  // Inisialisasi jumlah percobaan ke 0
    }
  • Fungsi Pengaturan Kesulitan
private:
    void aturKesulitan(int pilihan) {
        switch(pilihan) {
            case 1: // Mudah
                batasBawah = 1;
                batasAtas = 50;
                maxPercobaan = 10;
                tingkatKesulitan = “Mudah”;
                break;
            // … tingkat lainnya
        }
    }

Tahap 3: Fungsi Pemberian Petunjuk

  • Membuat Fungsi Petunjut
private:
    string berikanPetunjuk(int tebakan) {
        int selisih = abs(tebakan – angkaRahasia);
       
        if (selisih == 0) return “TEPAT! 🎉”;
        if (selisih <= 5)
            return (tebakan > angkaRahasia) ?
                “Sangat Dekat! Sedikit lebih kecil! 🔥” :
                “Sangat Dekat! Sedikit lebih besar! 🔥”;
        // … petunjuk lainnya
    }

Tahap 4: Tampilkan Informasi Game 

  • Fungsi Tampilkan Info
private:
    void tampilkanInfo() {
        cout << “\n=== INFO PERMAINAN ===” << endl;
        cout << “Tingkat Kesulitan: ” << tingkatKesulitan << endl;
        cout << “Range Angka: ” << batasBawah << “-” << batasAtas << endl;
        cout << “Kesempatan Tersisa: ” << maxPercobaan – percobaan << endl;
    }

Tahap 5: Inmpelentasi Game Utama

  • Membuat Fungsi mulaiPermainan()
public:
    void mulaiPermainan() {
        // 1. Tampilkan menu
        cout << “\n=== 🎮 GAME TEBAK ANGKA 🎮 ===” << endl;
        // … tampilkan pilihan tingkat kesulitan
       
        // 2. Ambil input pemain
        int pilihan;
        cout << “Pilihan Anda: “;
        cin >> pilihan;
       
        // 3. Validasi input
        if (pilihan < 1 || pilihan > 4) {
            pilihan = 1; // Default ke mudah
        }
       
        // 4. Setup game
        aturKesulitan(pilihan);
        generateAngka();
       
        // 5. Loop permainan utama
        while (percobaan < maxPercobaan) {
            // … logika permainan
        }
       
        // 6. Tampilkan hasil akhir
        cout << “\n=== 🏁 GAME OVER 🏁 ===” << endl;
        // … tampilkan hasil
    }

Tahap 6: Implementasi Main Function

  • Membuat Fungsi Main
int main() {
    TebakAngka game;
    char mainLagi;
   
    do {
        game = TebakAngka(); // Reset game
        game.mulaiPermainan();
       
        cout << “\nMau main lagi? (y/n): “;
        cin >> mainLagi;
    } while (mainLagi == ‘y’ || mainLagi == ‘Y’);
   
    return 0;
}

Penjelasan Detail Setiap Komponen

  • Sistem Random Number
void generateAngka() {
    srand(time(0));  // Seed random dengan waktu saat ini
    // Generate angka antara batasBawah dan batasAtas
    angkaRahasia = rand() % (batasAtas – batasBawah + 1) + batasBawah;
}
  • Sistem Validasi Input
if (tebakan < batasBawah || tebakan > batasAtas) {
    cout << “❌ Mohon masukkan angka ” << batasBawah << “-” << batasAtas << “!” << endl;
    continue;  // Kembali ke awal loop
}
  • Sistem Scoring
if (menang) {
    if (percobaan <= maxPercobaan/2) {
        cout << “Wow! Tebakan yang sangat bagus! 🌟” << endl;
    } else {
        cout << “Bagus! Anda berhasil! 👍” << endl;
    }
}

Cara Penggunaan Program

  1. Kompilasi Program
  • Buka terminal/command prompt
  • Navigasi ke direktori program
  • Jalankan perintah kompilasi:
g++ main.cpp -o tebak_angka
  1. Menjalankan Program
  • Jalankan file hasil kompilasi:
./tebak_angka
  1. Bermain Game
  • Pilih tingkat kesulitan (1-4)
  • Masukkan tebakan angka
  • Perhatikan petunjuk yang diberikan
  • Terus menebak sampai menang atau kesempatan habis
  • Pilih untuk bermain lagi atau keluar

Tips Pengembangan 

  1. Menambah Fitur Baru
  • Sistem high score
  • Timer untuk setiap tebakan
  • Mode multiplayer
  • Sistem reward/punishment
  1. Meningkatkan UI 
  • Tambahkan warna (dengan library seperti ANSI escape codes)
  • Buat tampilan lebih interaktif
  • Tambahkan animasi sederhana
  1. Optimasi kode
  • Pisahkan kode ke beberapa file (.h dan .cpp)
  • Tambahkan error handling yang lebih baik
  • Optimalkan penggunaan memori

Tahapan Bermain

Tahap 1 : Pilih difficulty yang di inginkan.

Tahap 2 : Pilihlah angka yang akan di tebak.

Tahap 3 : Masukkan jawaban anda dengan nominal yang mendekati angka sebenarnya.

Tahap 4 : Jika jawabannya belum tepat maka masukkan angka yang di perkirakan bisa mendekati dengan nominal angkanya sampai bisa menemukan jawaban yang tepat.

Tahap 5 : Jika jawabannya sudah tepat, maka tampilan dalam game akan mrnampilkan score ahir dan misi pun sudah selesai di pecahkan, setelah itu kita bisa  memilih akan melanjutkan game atau selsesai. 

Pembahasan

1. Inisialisasi Angka Acak:

   – Fungsi srand(time(0)) digunakan untuk memastikan angka acak berbeda setiap kali program dijalankan.

   – Angka target dipilih menggunakan rand() % 100 + 1, memastikan hasil berada dalam rentang 1 hingga 100.

2. Proses Perulangan:

   – Perulangan do-while memastikan pengguna diberi kesempatan untuk menebak setidaknya satu kali sebelum memeriksa hasil.

3. Percabangan:

   – Program membandingkan tebakan dengan angka target menggunakan if-else untuk memberikan umpan balik yang sesuai.

4. Jumlah Percobaan:

   – Variabel jumlah Percobaan digunakan untuk menghitung berapa kali pengguna mencoba menebak angka target.

5. Output:

   – Program memberikan umpan balik kepada pengguna apakah tebakan terlalu besar, terlalu kecil, atau benar.

Kesimpulan  

Permainan Tebak Angka adalah aplikasi sederhana namun sangat bermanfaat untuk memahami logika dan algoritma dasar dalam pemrograman. Dengan mengimplementasikan permainan ini, programmer dapat melatih kemampuan menggunakan struktur kontrol seperti percabangan, perulangan, dan fungsi untuk menghasilkan angka acak.

Permainan ini juga mencerminkan interaksi dinamis antara manusia dan komputer, di mana pengguna diberikan petunjuk untuk memecahkan masalah secara efisien. Selain itu, permainan ini mengajarkan konsep problem-solving berbasis logika, seperti membuat strategi untuk meminimalkan jumlah tebakan berdasarkan petunjuk “terlalu tinggi” atau “terlalu rendah”.

Dengan menggunakan bahasa pemrograman seperti C++, permainan ini dapat menjadi proyek yang cocok untuk pemula dalam belajar pemrograman karena penerapannya yang sederhana tetapi mencakup banyak konsep penting dalam logika dan algoritma. Game ini tidak hanya menghibur tetapi juga memberikan wawasan praktis tentang cara kerja program komputer.

Game ini juga mempunyai studi kasus yang sederhana namun efektif untuk mempelajari dasar-dasar pemrograman dalam C++. Dalam studi kasus ini, kita belajar bagaimana:

1. Menggunakan fungsi angka acak untuk membuat elemen kejutan.

2. Mengimplementasikan kontrol alur menggunakan perulangan dan percabangan.

3. Menerima input dari pengguna dan memberikan umpan balik yang sesuai.

Studi kasus ini dapat dikembangkan lebih lanjut dengan fitur tambahan seperti batasan jumlah percobaan, statistik permainan, atau mode multiplayer.

Sumber Referensi

  1. Wilderotter, C. (2021). C++ Programming for Beginners. XYZ Publishing.
  2. Peterson, S. (2019). Mastering Game Development with C++. ABC Tech Books. 
  3. Gunawan, A.(2023, 1 November). Pengantar Logika dan Algoritma. Diakses pada 6 Januari 2025, dari https://jurnalistik.agun.my.id/2023/11/01/pengantar-logika-algoritma/
  4. Gunawan , A.(2021, 1 April). Pengantar C++. Diakses pada 6 Januari 2025, dari  https://jurnalistik.agun.my.id/2021/04/01/pengantar-c-2/