Membuat permainan sederhana adalah salah satu cara terbaik untuk belajar coding dengan lebih menyenangkan. Salah satu project yang sangat cocok untuk pemula adalah Tic Tac Toe. Permainan ini sederhana, mudah dipahami, tetapi tetap cukup menantang untuk melatih logika dasar dalam JavaScript.
Dengan membuat Tic Tac Toe, kamu tidak hanya belajar tentang tampilan website, tetapi juga mulai memahami bagaimana sebuah game bekerja. Kamu akan belajar bagaimana HTML digunakan untuk membuat struktur papan permainan, CSS untuk mempercantik tampilannya, dan JavaScript untuk mengatur giliran pemain, mendeteksi pemenang, serta mengulang permainan dari awal.
Project seperti ini sangat bagus karena membuat kamu melihat langsung hasil dari kode yang kamu tulis. Setiap klik memberi reaksi. Setiap langkah punya konsekuensi. Dan dari sana, kamu mulai memahami bahwa coding bukan hanya tentang menulis syntax, tetapi tentang membangun interaksi.
Pada tutorial ini, kita akan membuat permainan Tic Tac Toe yang simpel dengan fitur berikut:
- Papan 3x3
- Dua pemain bergantian: X dan O
- Menampilkan giliran pemain
- Mendeteksi pemenang
- Menampilkan hasil seri
- Tombol reset permainan
1. Struktur File Project
Agar project rapi, kita akan memakai 3 file:
-
index.html -
style.css -
script.js
Dengan memisahkan file seperti ini, kode akan lebih mudah dibaca dan dikembangkan di kemudian hari.
2. Membuat Struktur HTML
Buat file index.html, lalu isi dengan kode berikut:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Tic Tac Toe Sederhana</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="game-container">
<h1>Tic Tac Toe</h1>
<p id="status">Giliran: X</p>
<div class="board" id="board">
<div class="cell" data-index="0"></div>
<div class="cell" data-index="1"></div>
<div class="cell" data-index="2"></div>
<div class="cell" data-index="3"></div>
<div class="cell" data-index="4"></div>
<div class="cell" data-index="5"></div>
<div class="cell" data-index="6"></div>
<div class="cell" data-index="7"></div>
<div class="cell" data-index="8"></div>
</div>
<button id="restartBtn">Main Lagi</button>
</div>
<script src="script.js"></script>
</body>
</html>
Penjelasan HTML
Pada bagian ini, kita membuat sebuah wadah utama dengan class game-container. Di dalamnya ada judul game, teks status untuk menunjukkan giliran pemain, papan permainan, dan tombol reset.
Papan permainan dibuat dengan 9 div kecil yang masing-masing memiliki class cell. Setiap kotak juga diberi atribut data-index agar JavaScript bisa mengenali posisi kotak yang diklik.
Struktur ini sederhana, tetapi sangat penting karena semua logika game akan berjalan berdasarkan elemen-elemen ini.
3. Membuat Tampilan dengan CSS
Sekarang buat file style.css, lalu isi dengan kode berikut:
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: Arial, sans-serif;
}
body {
background: #f4f4f4;
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
}
.game-container {
text-align: center;
background: white;
padding: 30px;
border-radius: 16px;
box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1);
}
h1 {
margin-bottom: 15px;
}
#status {
margin-bottom: 20px;
font-size: 18px;
color: #333;
}
.board {
display: grid;
grid-template-columns: repeat(3, 100px);
gap: 10px;
justify-content: center;
margin-bottom: 20px;
}
.cell {
width: 100px;
height: 100px;
background: #e9e9e9;
border-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
font-size: 36px;
font-weight: bold;
cursor: pointer;
transition: 0.2s;
}
.cell:hover {
background: #dcdcdc;
}
button {
padding: 12px 20px;
border: none;
border-radius: 10px;
background: #333;
color: white;
font-size: 16px;
cursor: pointer;
}
button:hover {
background: #555;
}
Penjelasan CSS
CSS di atas digunakan untuk membuat permainan terlihat bersih dan nyaman dilihat. Papan permainan menggunakan display: grid agar 9 kotak bisa tersusun rapi menjadi 3 kolom dan 3 baris.
Setiap kotak dibuat berukuran sama agar tampilan lebih simetris. Kita juga menambahkan hover effect supaya saat mouse diarahkan ke kotak, pengguna merasa ada interaksi.
Tujuan dari styling ini bukan hanya agar game terlihat bagus, tetapi juga agar user merasa nyaman saat memainkannya.
4. Menambahkan Logika dengan JavaScript
Sekarang buat file script.js, lalu isi dengan kode berikut:
const cells = document.querySelectorAll('.cell');
const statusText = document.getElementById('status');
const restartBtn = document.getElementById('restartBtn');
let currentPlayer = 'X';
let gameActive = true;
let gameState = ['', '', '', '', '', '', '', '', ''];
const winningConditions = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6]
];
function handleCellClick(event) {
const clickedCell = event.target;
const clickedIndex = clickedCell.getAttribute('data-index');
if (gameState[clickedIndex] !== '' || !gameActive) {
return;
}
gameState[clickedIndex] = currentPlayer;
clickedCell.textContent = currentPlayer;
checkWinner();
}
function checkWinner() {
let roundWon = false;
for (let i = 0; i < winningConditions.length; i++) {
const [a, b, c] = winningConditions[i];
if (
gameState[a] &&
gameState[a] === gameState[b] &&
gameState[a] === gameState[c]
) {
roundWon = true;
break;
}
}
if (roundWon) {
statusText.textContent = `Pemenang: ${currentPlayer}`;
gameActive = false;
return;
}
if (!gameState.includes('')) {
statusText.textContent = 'Hasil: Seri!';
gameActive = false;
return;
}
currentPlayer = currentPlayer === 'X' ? 'O' : 'X';
statusText.textContent = `Giliran: ${currentPlayer}`;
}
function restartGame() {
currentPlayer = 'X';
gameActive = true;
gameState = ['', '', '', '', '', '', '', '', ''];
statusText.textContent = 'Giliran: X';
cells.forEach(cell => {
cell.textContent = '';
});
}
cells.forEach(cell => {
cell.addEventListener('click', handleCellClick);
});
restartBtn.addEventListener('click', restartGame);
5. Penjelasan JavaScript
Bagian ini adalah inti dari permainan. Di sinilah game mulai hidup.
Mengambil elemen dari HTML
const cells = document.querySelectorAll('.cell');
const statusText = document.getElementById('status');
const restartBtn = document.getElementById('restartBtn');
Kode ini digunakan untuk mengambil semua elemen kotak, teks status, dan tombol reset agar bisa dikontrol oleh JavaScript.
Menyimpan data permainan
let currentPlayer = 'X';
let gameActive = true;
let gameState = ['', '', '', '', '', '', '', '', ''];
Di sini kita menyimpan siapa pemain saat ini, apakah game masih berjalan, dan isi dari semua kotak pada papan.
Kombinasi kemenangan
const winningConditions = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8],
[0, 3, 6],
[1, 4, 7],
[2, 5, 8],
[0, 4, 8],
[2, 4, 6]
];
Array ini berisi semua kemungkinan menang, baik horizontal, vertikal, maupun diagonal.
Fungsi saat kotak diklik
Ketika pemain menekan salah satu kotak, program akan mengecek apakah kotak itu masih kosong dan apakah permainan masih aktif. Jika iya, simbol pemain akan dimasukkan ke kotak tersebut.
Fungsi cek pemenang
Setelah setiap langkah, program akan memeriksa semua kombinasi kemenangan. Jika ada tiga simbol yang sama dalam satu garis, maka permainan selesai dan pemenang ditampilkan.
Jika tidak ada pemenang dan semua kotak sudah terisi, maka hasilnya seri.
Fungsi reset game
Saat tombol “Main Lagi” ditekan, semua kotak akan dikosongkan, giliran kembali ke X, dan permainan dimulai dari awal.
6. Cara Menjalankan Project
Simpan semua file dalam satu folder seperti ini:
tic-tac-toe/
│── index.html
│── style.css
│── script.js
Setelah itu, buka file index.html di browser. Game Tic Tac Toe sederhana kamu sudah siap dimainkan.
7. Kenapa Project Ini Bagus untuk Pemula
Project ini terlihat kecil, tetapi sebenarnya mengajarkan banyak hal penting. Kamu belajar bagaimana menangani klik dari user, menyimpan data permainan, mengubah tampilan halaman secara langsung, dan membuat logika menang atau seri.
Ini adalah latihan yang sangat bagus karena menggabungkan tampilan dan logika dalam satu project yang menyenangkan. Saat kamu melihat game buatanmu berjalan, rasa percaya diri akan naik. Dan itu penting, karena belajar coding bukan hanya soal teori, tetapi juga soal membangun keyakinan bahwa kamu memang bisa.
8. Ide Pengembangan Selanjutnya
Setelah versi sederhana ini berhasil, kamu bisa mengembangkannya lagi menjadi lebih menarik. Misalnya:
- Menambahkan warna berbeda untuk X dan O
- Memberi efek saat ada pemenang
- Menambahkan skor pemain
- Membuat mode lawan komputer
- Membuat tampilan lebih modern dan responsif
Dari project kecil seperti ini, kamu sedang melatih dasar yang akan sangat berguna saat membuat aplikasi yang lebih besar.
9. Kesimpulan
Membuat permainan Tic Tac Toe dengan HTML, CSS, dan JavaScript adalah latihan yang sangat cocok untuk pemula. Project ini sederhana, tidak terlalu rumit, tetapi cukup lengkap untuk melatih pemahaman dasar tentang struktur halaman, desain tampilan, dan logika interaksi.
Setiap project kecil seperti ini membentuk fondasi. Dan fondasi yang kuat akan membuat langkah berikutnya terasa lebih mudah. Jadi jangan remehkan project sederhana. Kadang justru dari sinilah kemampuan besar mulai tumbuh.

Comments
Post a Comment