PHP, yang sering diasosiasikan dengan pengembangan web dinamis, database, dan sistem manajemen konten (CMS), juga dapat digunakan untuk membangun logika dasar dari permainan sederhana. Meskipun PHP bukanlah pilihan utama untuk grafis intensif atau permainan real-time (di mana JavaScript/WebGL lebih dominan), ia sangat cocok untuk permainan berbasis teks, tebak-tebakan, atau permainan kartu berbasis giliran yang logikanya dikelola di sisi server.
Tujuan artikel ini adalah menunjukkan bagaimana arsitektur dasar server-side PHP dapat mengelola status permainan, menerima input pengguna, dan menampilkan hasil selanjutnya. Kita akan fokus pada permainan tebak angka sederhana.
Kekuatan PHP terletak pada kemampuannya mengelola sesi (state management) antar permintaan HTTP. Setiap kali pengguna berinteraksi dengan permainan (misalnya, mengirimkan tebakan), PHP membaca sesi yang tersimpan, memproses logika, memperbarui status permainan dalam sesi tersebut, dan mengirimkan halaman HTML baru kembali ke browser. Ini berbeda dengan JavaScript yang biasanya mengelola status di sisi klien.
Setiap permainan memerlukan kondisi awal. Dalam PHP, kita menggunakan superglobal $_SESSION untuk menyimpan variabel yang perlu diingat antar permintaan. Sebelum menggunakan sesi, pastikan Anda selalu memanggil session_start(); di awal skrip Anda.
Untuk permainan tebak angka, kita perlu menyimpan angka rahasia dan jumlah percobaan.
// index.php
session_start();
if (!isset($_SESSION['angka_rahasia'])) {
// Inisialisasi jika ini adalah sesi pertama
$_SESSION['angka_rahasia'] = rand(1, 100);
$_SESSION['percobaan'] = 0;
$_SESSION['pesan'] = "Selamat datang! Tebak angka antara 1 sampai 100.";
}
Setelah sesi dimulai, kita perlu memeriksa apakah pengguna telah mengirimkan formulir tebakan (biasanya melalui metode POST). Logika inti permainan berada di sini: membandingkan tebakan pengguna dengan angka rahasia dan memberikan umpan balik.
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST['tebakan'])) {
$tebakan = (int)$_POST['tebakan'];
$_SESSION['percobaan']++;
$rahasia = $_SESSION['angka_rahasia'];
if ($tebakan === $rahasia) {
$_SESSION['pesan'] = "Selamat! Anda berhasil menebak angka " . $rahasia . " dalam " . $_SESSION['percobaan'] . " percobaan.";
// Reset game agar bisa dimainkan lagi
unset($_SESSION['angka_rahasia']);
} elseif ($tebakan < $rahasia) {
$_SESSION['pesan'] = "Terlalu rendah. Coba lagi.";
} else {
$_SESSION['pesan'] = "Terlalu tinggi. Coba lagi.";
}
}
Langkah terakhir adalah menampilkan status permainan saat ini kepada pengguna, termasuk formulir untuk input berikutnya. PHP bertugas menyuntikkan data dari variabel sesi ke dalam template HTML.
Di bagian HTML, kita menampilkan pesan status dan mengizinkan pemain untuk memasukkan tebakan baru (kecuali permainan sudah selesai).
<!DOCTYPE html>
<html>
<head>
<title>Tebak Angka PHP</title>
</head>
<body>
<h2>Game Tebak Angka</h2>
<p><?= $_SESSION['pesan'] ?></p>
<p>Percobaan ke: <?= $_SESSION['percobaan'] ?></p>
Permainan selesai. Silakan muat ulang halaman untuk memulai permainan baru.
</body>
</html>
Mengembangkan game sederhana menggunakan PHP memanfaatkan arsitektur server-side yang sudah kita kenal. Dengan mengandalkan mekanisme sesi, PHP mampu mempertahankan 'memori' permainan antar permintaan HTTP yang terpisah. Meskipun keterbatasan grafis tetap ada, logika kompleks untuk permainan berbasis teks, manajemen skor, atau permainan kartu sangat efektif diimplementasikan menggunakan PHP dan database pendukung.
Untuk meningkatkan skala, Anda dapat mengintegrasikan MySQL untuk menyimpan papan peringkat (leaderboards) atau menyimpan progres pemain secara permanen, mengubah game sederhana ini menjadi pengalaman yang lebih berkelanjutan.
Implementasi ini memerlukan server web yang mendukung PHP (seperti Apache atau Nginx dengan modul PHP-FPM).