Thursday

19-06-2025 Vol 19

Slot Machine(Vanilla JS)

Membuat Mesin Slot Sederhana dengan Vanilla JavaScript: Panduan Langkah Demi Langkah

Apakah Anda tertarik untuk mempelajari cara membuat game interaktif menggunakan JavaScript? Dalam tutorial ini, kita akan membahas cara membangun mesin slot sederhana menggunakan Vanilla JavaScript. Kita akan mulai dengan dasar-dasarnya, lalu maju selangkah demi selangkah melalui proses implementasi. Pada akhir artikel ini, Anda akan memiliki mesin slot berfungsi penuh yang dapat Anda sesuaikan dan kembangkan lebih lanjut.

Daftar Isi

  1. Pendahuluan: Mengapa Membuat Mesin Slot dengan Vanilla JavaScript?
    • Mengapa memilih Vanilla JavaScript daripada kerangka kerja.
    • Manfaat memahami dasar-dasar JavaScript melalui proyek.
  2. Persiapan Awal: Struktur HTML
    • Membuat struktur dasar HTML.
    • Menambahkan elemen untuk tampilan slot, tombol, dan informasi.
  3. Gaya dengan CSS: Membuat Tampilan yang Menarik
    • Menambahkan CSS untuk styling dasar.
    • Membuat tampilan yang menarik untuk mesin slot.
    • Tips untuk responsivitas.
  4. Logika JavaScript: Jantung Mesin Slot
    • Pengantar JavaScript: variabel, fungsi, dan event listener.
    • Membuat array simbol slot.
    • Fungsi untuk memutar slot (randomization).
    • Menangani interaksi tombol “Putar”.
    • Menampilkan hasil putaran.
    • Implementasi logika kemenangan.
    • Menangani saldo dan taruhan pemain.
  5. Meningkatkan Pengalaman Pengguna
    • Menambahkan efek suara.
    • Animasi sederhana.
    • Menampilkan pesan (kemenangan, kekalahan, kurangnya saldo).
  6. Optimasi dan Debugging
    • Tips untuk debugging kode JavaScript.
    • Mengoptimalkan kode untuk kinerja.
  7. Peningkatan Lebih Lanjut: Memperluas Fungsionalitas
    • Menambahkan beberapa baris pembayaran.
    • Memperkenalkan simbol bonus.
    • Implementasi fitur “Auto Play”.
  8. Kesimpulan: Mengapa Proyek Ini Penting untuk Pembelajaran JavaScript
    • Rekapitulasi pembelajaran utama.
    • Langkah selanjutnya untuk mengembangkan keterampilan JavaScript Anda.

1. Pendahuluan: Mengapa Membuat Mesin Slot dengan Vanilla JavaScript?

Dalam era kerangka kerja JavaScript yang modern, mungkin tampak kontra-intuitif untuk memilih Vanilla JavaScript (JavaScript murni tanpa pustaka eksternal) untuk membuat aplikasi. Namun, ada beberapa alasan kuat mengapa pendekatan ini bermanfaat, terutama bagi pemula yang ingin memperkuat dasar-dasar mereka.

  • Memahami Mekanisme di Balik Layar: Menggunakan Vanilla JavaScript memaksa Anda untuk memahami secara mendalam bagaimana JavaScript bekerja. Anda berinteraksi langsung dengan DOM (Document Object Model), menangani event, dan menulis logika tanpa abstraksi yang disediakan oleh kerangka kerja.
  • Tidak Bergantung pada Pustaka Eksternal: Vanilla JavaScript meminimalkan ketergantungan pada pihak ketiga. Ini berarti lebih sedikit risiko terkait pembaruan pustaka yang merusak kode Anda atau kerentanan keamanan yang terkait dengan pustaka tersebut.
  • Kinerja: Tanpa overhead kerangka kerja, Vanilla JavaScript cenderung lebih cepat dan efisien, terutama untuk aplikasi sederhana seperti mesin slot.
  • Keterampilan yang Dapat Dialihkan: Memahami Vanilla JavaScript membuat Anda menjadi pengembang yang lebih serbaguna. Keterampilan yang Anda peroleh dapat dengan mudah diterapkan pada kerangka kerja dan pustaka JavaScript lainnya.

Membuat mesin slot dengan Vanilla JavaScript adalah proyek yang menyenangkan dan praktis. Ini melibatkan banyak konsep dasar JavaScript, seperti manipulasi DOM, fungsi, array, dan penanganan event. Proyek ini memungkinkan Anda untuk mempraktikkan keterampilan Anda dalam konteks dunia nyata dan melihat hasilnya secara langsung.

2. Persiapan Awal: Struktur HTML

Langkah pertama adalah menyiapkan struktur HTML dasar untuk mesin slot kita. Kita akan membutuhkan elemen untuk menampilkan simbol slot, tombol untuk memutar, dan area untuk menampilkan informasi seperti saldo pemain dan kemenangan.

Berikut adalah struktur HTML dasar:

“`html





Mesin Slot Vanilla JS

Mesin Slot

Saldo: 100

Taruhan:

Menang: 0




“`

Mari kita uraikan elemen-elemen ini:

  • `<div class=”container”>`:** Ini adalah wadah utama untuk semua elemen mesin slot.
  • `<h1>Mesin Slot</h1>`:** Judul sederhana untuk aplikasi kita.
  • `<div class=”slot”>`:** Ini adalah tempat kita akan menampilkan simbol slot. Kita memiliki tiga `<div class=”reel”>` yang masing-masing mewakili satu gulungan. ID (`reel1`, `reel2`, `reel3`) akan memungkinkan kita untuk memanipulasi setiap gulungan secara individual dengan JavaScript.
  • `<div class=”info”>`:** Bagian ini menampilkan informasi tentang saldo pemain, taruhan, dan kemenangan. Kita menggunakan elemen `<span>` dengan ID untuk memperbarui nilai-nilai ini dengan JavaScript.
  • `<input type=”number” id=”bet” value=”10″>`:** Input number memungkinkan pemain untuk menentukan jumlah taruhan mereka.
  • `<button id=”spin”>Putar</button>`:** Tombol ini memicu aksi putaran.
  • `<script src=”script.js”></script>`:** Tautan ke file JavaScript kita, tempat logika permainan akan berada. Pastikan file ini ada di direktori yang sama dengan file HTML Anda.

Simpan kode ini sebagai `index.html` dan buat file kosong bernama `style.css` dan `script.js` di direktori yang sama. Kita akan mengisinya nanti.

3. Gaya dengan CSS: Membuat Tampilan yang Menarik

Sekarang kita memiliki struktur HTML, mari tambahkan beberapa CSS untuk mempercantik tampilan mesin slot kita. Berikut adalah beberapa contoh CSS dasar untuk memulai:

“`css
body {
font-family: sans-serif;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #f0f0f0;
}

.container {
background-color: #fff;
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
text-align: center;
}

.slot {
display: flex;
margin-bottom: 20px;
}

.reel {
width: 80px;
height: 80px;
border: 1px solid #ccc;
margin: 5px;
display: flex;
justify-content: center;
align-items: center;
font-size: 30px;
background-color: #eee;
}

.info {
margin-bottom: 20px;
}

button {
padding: 10px 20px;
background-color: #4CAF50;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}

button:hover {
background-color: #3e8e41;
}

input[type=”number”] {
width: 60px;
padding: 5px;
border: 1px solid #ccc;
border-radius: 3px;
}
“`

Simpan kode ini sebagai `style.css` dan hubungkan ke file `index.html` seperti yang ditunjukkan di atas. CSS ini akan memberikan tampilan dasar pada mesin slot Anda. Berikut adalah beberapa poin penting:

  • `body`:** Gaya body untuk memusatkan konten secara horizontal dan vertikal.
  • `.container`:** Gaya wadah utama dengan latar belakang putih, padding, dan shadow.
  • `.slot`:** Menggunakan `display: flex` untuk menempatkan gulungan berdampingan.
  • `.reel`:** Menentukan lebar dan tinggi gulungan, border, dan memusatkan konten di dalamnya.
  • `button`:** Styling dasar untuk tombol putar.
  • `input[type=”number”]`:** Styling untuk input taruhan.

Tips untuk Responsivitas:

Untuk membuat mesin slot Anda responsif, pertimbangkan untuk menggunakan media queries untuk menyesuaikan tata letak dan ukuran elemen pada berbagai ukuran layar. Contohnya:

“`css
@media (max-width: 600px) {
.slot {
flex-direction: column; /* Menumpuk gulungan pada layar yang lebih kecil */
}

.reel {
width: 100%; /* Membuat gulungan mengisi lebar pada layar yang lebih kecil */
}
}
“`

4. Logika JavaScript: Jantung Mesin Slot

Sekarang bagian yang paling penting: logika JavaScript! Kita akan menulis kode untuk memutar gulungan, menangani interaksi tombol, menentukan kemenangan, dan mengelola saldo pemain.

Berikut adalah langkah-langkah yang akan kita ikuti:

  1. Pengaturan Awal: Mendapatkan referensi ke elemen DOM yang kita butuhkan.
  2. Array Simbol: Membuat array simbol slot yang akan digunakan untuk memutar gulungan.
  3. Fungsi `spin()`: Membuat fungsi untuk memutar setiap gulungan secara acak.
  4. Penanganan Event: Menambahkan event listener ke tombol “Putar” untuk memicu fungsi `spin()`.
  5. Logika Kemenangan: Membuat fungsi untuk menentukan apakah pemain menang atau tidak.
  6. Pembaruan UI: Memperbarui saldo pemain, kemenangan, dan tampilan gulungan.

Berikut adalah kode JavaScript lengkap (simpan sebagai `script.js`):

“`javascript
// 1. Pengaturan Awal
const reel1 = document.getElementById(‘reel1’);
const reel2 = document.getElementById(‘reel2’);
const reel3 = document.getElementById(‘reel3’);
const balanceDisplay = document.getElementById(‘balance’);
const betInput = document.getElementById(‘bet’);
const winDisplay = document.getElementById(‘win’);
const spinButton = document.getElementById(‘spin’);

// 2. Array Simbol
const symbols = [‘🍎’, ‘🍌’, ‘🍒’, ‘🍇’, ‘🍉’, ‘🍋’];

// Variabel Global
let balance = 100;
let spinning = false; // Untuk mencegah putaran ganda

// Fungsi Acak untuk Memilih Simbol
function getRandomSymbol() {
return symbols[Math.floor(Math.random() * symbols.length)];
}

// 3. Fungsi spin()
function spin() {
if (spinning) return; // Jika sedang berputar, jangan lakukan apa-apa

let bet = parseInt(betInput.value);

if (isNaN(bet) || bet <= 0) { alert('Taruhan tidak valid. Masukkan angka yang valid.'); return; } if (balance < bet) { alert('Saldo tidak mencukupi.'); return; } spinning = true; // Setel spinning ke true balance -= bet; balanceDisplay.textContent = balance; winDisplay.textContent = 0; // Animasi Putaran (Simulasi) let spinCount = 0; const maxSpins = 30; // Jumlah "putaran" sebelum berhenti const spinInterval = setInterval(() => {
reel1.textContent = getRandomSymbol();
reel2.textContent = getRandomSymbol();
reel3.textContent = getRandomSymbol();

spinCount++;

if (spinCount >= maxSpins) {
clearInterval(spinInterval);
const result = [reel1.textContent, reel2.textContent, reel3.textContent];
const winAmount = checkWin(result, bet);
balance += winAmount;

balanceDisplay.textContent = balance;
winDisplay.textContent = winAmount – bet > 0 ? winAmount – bet : 0;

spinning = false; // Setel spinning kembali ke false
}
}, 50); // Kecepatan putaran. Semakin kecil, semakin cepat
}

// 4. Logika Kemenangan
function checkWin(result, bet) {
if (result[0] === result[1] && result[1] === result[2]) {
// Tiga simbol yang sama
return bet * 10; // Contoh: Kemenangan 10x lipat
} else if (
(result[0] === result[1] && result[0] !== result[2]) ||
(result[0] === result[2] && result[0] !== result[1]) ||
(result[1] === result[2] && result[1] !== result[0])
) {
// Dua simbol yang sama
return bet * 2; //Contoh: Kemenangan 2x lipat
} else {
// Tidak ada yang cocok
return bet;
}
}

// 5. Penanganan Event
spinButton.addEventListener(‘click’, spin);

// Inisialisasi tampilan saldo
balanceDisplay.textContent = balance;
“`

Mari kita telusuri kode ini:

  • Pengaturan Awal: Kita menggunakan `document.getElementById()` untuk mendapatkan referensi ke semua elemen yang kita butuhkan.
  • Array Simbol: Array `symbols` berisi daftar simbol yang akan kita gunakan dalam mesin slot. Anda dapat menyesuaikan ini dengan simbol apa pun yang Anda inginkan.
  • Variabel Global: Variabel `balance` menyimpan saldo pemain. Variabel `spinning` adalah flag yang mencegah putaran ganda.
  • `getRandomSymbol()` Function: Fungsi ini mengembalikan simbol acak dari array `symbols`.
  • `spin()` Function: Fungsi ini adalah inti dari logika permainan.
    • Pertama-tama, ia memeriksa apakah mesin sedang berputar. Jika ya, ia keluar dari fungsi.
    • Kemudian, ia mengambil nilai taruhan dari input dan memvalidasinya.
    • Selanjutnya, ia memeriksa apakah saldo pemain cukup untuk memasang taruhan.
    • Setelah validasi, ia mengurangi taruhan dari saldo pemain.
    • Kemudian, ia memulai animasi putaran dengan menggunakan `setInterval`. Setiap interval, ia memperbarui teks setiap reel dengan simbol acak.
    • Setelah jumlah putaran tertentu, interval dibersihkan, hasil putaran dianalisis dengan fungsi `checkWin`, dan saldo pemain diperbarui.
    • Akhirnya, flag `spinning` direset ke `false`.
  • `checkWin()` Function: Fungsi ini mengambil array hasil dan menentukan apakah pemain menang atau tidak. Logika kemenangan ini dapat disesuaikan sesuai keinginan Anda.
  • Penanganan Event: Kita menambahkan event listener ke tombol “Putar”. Ketika tombol diklik, fungsi `spin()` dieksekusi.
  • Inisialisasi tampilan saldo: Kita atur saldo awal pada saat halaman dimuat.

Sekarang, buka `index.html` di browser Anda. Anda akan melihat mesin slot yang berfungsi! Anda dapat memasukkan taruhan, menekan tombol “Putar”, dan melihat gulungan berputar. Saldo dan kemenangan Anda akan diperbarui sesuai dengan hasilnya.

5. Meningkatkan Pengalaman Pengguna

Mesin slot kita berfungsi, tetapi kita dapat membuatnya lebih menarik dengan menambahkan beberapa peningkatan pengalaman pengguna (UX).

  • Efek Suara: Menambahkan efek suara untuk putaran, kemenangan, dan kekalahan dapat meningkatkan pengalaman imersif.
  • Animasi: Animasi yang halus, seperti putaran gulungan yang lebih realistis, dapat membuat permainan lebih menarik secara visual.
  • Pesan: Menampilkan pesan yang jelas kepada pemain (misalnya, “Anda Menang!”, “Saldo Tidak Cukup”, atau “Taruhan Tidak Valid”) meningkatkan kegunaan.

Menambahkan Efek Suara:

Pertama, Anda memerlukan file suara (misalnya, `spin.wav`, `win.wav`, `lose.wav`). Anda dapat menemukan suara gratis secara online. Tempatkan file-file ini di direktori yang sama dengan file HTML dan JavaScript Anda.

Kemudian, tambahkan kode berikut ke file `script.js` Anda:

“`javascript
const spinSound = new Audio(‘spin.wav’);
const winSound = new Audio(‘win.wav’);
const loseSound = new Audio(‘lose.wav’);

function spin() {
// … (Kode spin Anda) …

spinning = true;

spinSound.play(); // Putar efek suara putaran

// … (Kode interval putaran Anda) …

if (spinCount >= maxSpins) {
// … (Kode setelah putaran Anda) …

if (winAmount > bet) {
winSound.play(); // Putar efek suara kemenangan
} else {
loseSound.play(); // Putar efek suara kekalahan
}

spinning = false;
}
}
“`

Menambahkan Animasi Sederhana:

Anda dapat menambahkan animasi sederhana menggunakan CSS transitions dan JavaScript. Berikut adalah contoh menambahkan kelas “spinning” ke setiap reel saat berputar:

“`javascript
function spin() {
// … (Kode spin Anda) …

spinning = true;

reel1.classList.add(‘spinning’);
reel2.classList.add(‘spinning’);
reel3.classList.add(‘spinning’);

// … (Kode interval putaran Anda) …

if (spinCount >= maxSpins) {
// … (Kode setelah putaran Anda) …

reel1.classList.remove(‘spinning’);
reel2.classList.remove(‘spinning’);
reel3.classList.remove(‘spinning’);

spinning = false;
}
}
“`

Dan tambahkan CSS berikut ke `style.css` Anda:

“`css
.reel.spinning {
animation: spinAnimation 0.5s infinite linear;
}

@keyframes spinAnimation {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
“`

Menampilkan Pesan:

Tambahkan elemen `

` ke HTML Anda untuk menampilkan pesan:

“`html

Saldo: 100

Taruhan:

Menang: 0

“`

Dan tambahkan kode JavaScript untuk memperbarui pesan:

“`javascript
const messageDisplay = document.getElementById(‘message’);

function spin() {
// … (Kode spin Anda) …

if (isNaN(bet) || bet <= 0) { messageDisplay.textContent = 'Taruhan tidak valid. Masukkan angka yang valid.'; return; } if (balance < bet) { messageDisplay.textContent = 'Saldo tidak mencukupi.'; return; } messageDisplay.textContent = ''; // Bersihkan pesan sebelumnya // ... (Kode interval putaran Anda) ... if (spinCount >= maxSpins) {
// … (Kode setelah putaran Anda) …

if (winAmount > bet) {
messageDisplay.textContent = ‘Anda Menang!’;
} else {
messageDisplay.textContent = ‘Anda Kalah.’;
}

spinning = false;
}
}
“`

6. Optimasi dan Debugging

Meskipun mesin slot kita berfungsi, selalu ada ruang untuk optimasi dan debugging. Berikut adalah beberapa tips:

  • Gunakan `console.log()` untuk Debugging: Gunakan `console.log()` untuk mencetak variabel dan nilai ke konsol browser Anda. Ini adalah cara yang bagus untuk melacak alur kode Anda dan mengidentifikasi masalah.
  • Gunakan Browser Developer Tools: Browser developer tools (biasanya diakses dengan menekan F12) menyediakan berbagai alat untuk debugging, termasuk debugger JavaScript, profiler kinerja, dan pemeriksa elemen.
  • Hindari Pekerjaan DOM yang Berlebihan: Memanipulasi DOM itu mahal. Minimalkan jumlah manipulasi DOM yang Anda lakukan dalam loop. Dalam kode kita, kita memperbarui tampilan gulungan di dalam interval, yang mungkin tidak optimal. Pertimbangkan untuk mengumpulkan pembaruan dan menerapkan semuanya sekaligus.
  • Optimalkan Logika Kemenangan: Logika kemenangan kita relatif sederhana. Jika Anda menambahkan lebih banyak simbol dan kombinasi kemenangan, Anda mungkin perlu mengoptimalkan fungsi `checkWin()` untuk kinerja.

Contoh Debugging:

Katakanlah Anda tidak mendapatkan hasil yang diharapkan. Anda dapat menambahkan `console.log()` untuk memeriksa variabel-variabel kunci:

“`javascript
function checkWin(result, bet) {
console.log(‘Hasil:’, result); // Menampilkan hasil putaran
if (result[0] === result[1] && result[1] === result[2]) {
// Tiga simbol yang sama
return bet * 10; // Contoh: Kemenangan 10x lipat
} else if (
(result[0] === result[1] && result[0] !== result[2]) ||
(result[0] === result[2] && result[0] !== result[1]) ||
(result[1] === result[2] && result[1] !== result[0])
) {
// Dua simbol yang sama
return bet * 2; //Contoh: Kemenangan 2x lipat
} else {
// Tidak ada yang cocok
return bet;
}
}
“`

Dengan memeriksa output konsol, Anda dapat melihat apakah hasilnya seperti yang diharapkan dan mengidentifikasi masalah dengan logika kemenangan Anda.

7. Peningkatan Lebih Lanjut: Memperluas Fungsionalitas

Setelah Anda memiliki mesin slot dasar yang berfungsi, Anda dapat menambahkan lebih banyak fitur untuk membuatnya lebih menarik dan kompleks.

  • Beberapa Baris Pembayaran: Izinkan pemain untuk bertaruh pada beberapa baris pembayaran. Ini akan meningkatkan peluang untuk menang tetapi juga meningkatkan kompleksitas logika kemenangan.
  • Simbol Bonus: Perkenalkan simbol bonus yang memicu putaran gratis, pengganda, atau fitur khusus lainnya.
  • Fitur “Auto Play”: Izinkan pemain untuk mengatur sejumlah putaran otomatis.
  • Grafik yang Lebih Baik: Ganti simbol teks sederhana dengan gambar atau animasi yang lebih detail.
  • Penyimpanan Data: Gunakan `localStorage` untuk menyimpan saldo pemain sehingga tetap ada di antara sesi.

Implementasi Fitur “Auto Play”:

Pertama, tambahkan tombol “Auto Play” ke HTML Anda:

“`html

“`

Kemudian, tambahkan kode JavaScript berikut:

“`javascript
const autoSpinButton = document.getElementById(‘autoSpin’);
let autoSpinCount = 0;

function autoSpin() {
if (spinning) return;

autoSpinCount = 5; // Jumlah putaran otomatis

const autoSpinInterval = setInterval(() => {
spin(); // Panggil fungsi spin()

autoSpinCount–;

if (autoSpinCount <= 0 || spinning) { clearInterval(autoSpinInterval); autoSpinCount = 5; // Reset jumlah putaran otomatis } }, 3000); // Jeda 3 detik antar putaran } autoSpinButton.addEventListener('click', autoSpin); ```

Kode ini akan secara otomatis memutar gulungan 5 kali, dengan jeda 3 detik antara setiap putaran. Anda dapat menyesuaikan jumlah putaran dan jeda sesuai keinginan Anda.

8. Kesimpulan: Mengapa Proyek Ini Penting untuk Pembelajaran JavaScript

Membuat mesin slot dengan Vanilla JavaScript adalah proyek yang sangat bermanfaat untuk mempelajari dan mempraktikkan konsep JavaScript dasar. Ini melibatkan manipulasi DOM, penanganan event, fungsi, array, dan banyak lagi. Dengan menyelesaikan proyek ini, Anda akan:

  • Memperkuat Pemahaman Dasar JavaScript: Anda akan mendapatkan pemahaman yang lebih dalam tentang bagaimana JavaScript bekerja di balik layar.
  • Meningkatkan Keterampilan Pemecahan Masalah: Anda akan menghadapi berbagai tantangan dan belajar bagaimana memecahkan masalah menggunakan alat dan teknik debugging.
  • Membangun Portofolio: Anda akan memiliki proyek yang berfungsi yang dapat Anda pamerkan di portofolio Anda.
  • Memperoleh Kepercayaan Diri: Menyelesaikan proyek yang kompleks seperti ini akan memberi Anda kepercayaan diri untuk mengambil proyek JavaScript yang lebih menantang di masa depan.

Langkah Selanjutnya:

  • Eksperimen dengan Fitur Baru: Tambahkan fitur-fitur baru ke mesin slot Anda, seperti beberapa baris pembayaran, simbol bonus, atau fitur “Auto Play”.
  • Pelajari Lebih Lanjut tentang Animasi: Jelajahi pustaka animasi JavaScript seperti GreenSock (GSAP) untuk membuat animasi yang lebih canggih.
  • Pelajari Kerangka Kerja JavaScript: Setelah Anda memiliki dasar yang kuat dalam Vanilla JavaScript, pertimbangkan untuk mempelajari kerangka kerja seperti React, Angular, atau Vue.js.

Selamat telah menyelesaikan tutorial ini! Saya harap Anda menikmati proses membangun mesin slot Anda sendiri dengan Vanilla JavaScript. Teruslah berlatih dan bereksperimen, dan Anda akan segera menjadi pengembang JavaScript yang mahir.

“`

omcoding

Leave a Reply

Your email address will not be published. Required fields are marked *