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:
- Bagaimana merancang algoritma yang tepat untuk game tebak angka menggunakan C++?
- Bagaimana mengimplementasikan logika kontrol yang memungkinkan pengguna berinteraksi dengan sistem secara dinamis?
- 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 :
- Tingkatan Mudah: Dari Angka 1-50, mempunyai 10 kesempatan
- Tingkatan Sedang: Angka 1-100, 7 kesempatan
- Tingkatan Sulit: Angka 1-200, 5 kesempatan
- Tingkatan Expert: Angka 1-500, 3 kesempatan
Berikut petunjuk yang lebih detail, contohnya seperti:
- Terlalu besar/kecil
- Dekat (selisih ≤ 10)
- 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
- Kompilasi Program
- Buka terminal/command prompt
- Navigasi ke direktori program
- Jalankan perintah kompilasi:
| g++ main.cpp -o tebak_angka |
- Menjalankan Program
- Jalankan file hasil kompilasi:
| ./tebak_angka |
- 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
- Menambah Fitur Baru
- Sistem high score
- Timer untuk setiap tebakan
- Mode multiplayer
- Sistem reward/punishment
- Meningkatkan UI
- Tambahkan warna (dengan library seperti ANSI escape codes)
- Buat tampilan lebih interaktif
- Tambahkan animasi sederhana
- 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
- Wilderotter, C. (2021). C++ Programming for Beginners. XYZ Publishing.
- Peterson, S. (2019). Mastering Game Development with C++. ABC Tech Books.
- 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/
- Gunawan , A.(2021, 1 April). Pengantar C++. Diakses pada 6 Januari 2025, dari https://jurnalistik.agun.my.id/2021/04/01/pengantar-c-2/