Pertemuan 6 PWEB - Membuat Game Wordle

Nama : Kadek Fajar Pramartha Yasodana
NRP : 5025231185
Kelas : PWEB E

Membuat Game Wordle Dengan Fitur HTML 5, dan JS

Dalam tugas kali ini, setelah saya membuat website menu dengan fitur HTML 5 pada pertemuan 5, kali ini pada pertemuan 6 saya membuat sebuah game yang mirip dengan game Wordle. Anda bisa melihat source codenya dan link untuk bermain pada link dibawah ini. Fitur HTML 5 yang dipakai adalah element element tambahan seperti footer, main, dll.
Source Code : GitHub
Link Hosting Game : Vercel

Screenshot
Screenshot Menang


Screenshot Lose



index.html
Berisi DOM template agar memudahkan saat menambahkan element

script.js

Script ini akan mengontrol alurnya permainan dan mengontrol cara menambahkan dan mengurankan elemen. Permainan ini memungkinkan pemain untuk menebak kata yang dipilih secara acak dari daftar kata yang diambil dari file JSON eksternal. Berikut adalah penjelasan dari setiap bagian script:

  1. Deklarasi Elemen HTML: Script ini dimulai dengan mengambil referensi ke beberapa elemen HTML menggunakan document.getElementById. Elemen-elemen ini termasuk elemen utama (mainElement), elemen untuk menampilkan pesan kemenangan (winElement), kekalahan (loseElement), tombol ulang (retryElement), elemen untuk menampilkan pesan "enter a key" (enterAKeyElement), dan elemen untuk menampilkan kata yang benar (wordElement).
  2. Deklarasi Variabel: Beberapa variabel global dideklarasikan untuk menyimpan status permainan, seperti daftar kata (words), status apakah kata sudah dimuat (loadFinished), tahap permainan saat ini (currentStage), baris input saat ini (currentRow), kata yang dipilih (choosenWord), panjang kata (wordLength), dan array untuk menyimpan input pemain (inputs). Konstanta maxTries juga dideklarasikan untuk menentukan jumlah maksimal percobaan.
  3. Event Listener: Event listener ditambahkan untuk mendengarkan input dari keyboard (keydown) dan klik pada tombol ulang (retry). Fungsi handleKeyPress akan dipanggil saat ada input dari keyboard, dan fungsi retryLevel akan dipanggil saat tombol ulang diklik.
  4. Fungsi Utama: Fungsi main adalah fungsi utama yang memuat kata-kata dari file JSON dan memulai permainan dengan memanggil startGame.
  5. Memuat Kata-Kata: Fungsi loadWords menggunakan fetch untuk mengambil data dari file data.json, kemudian mengubahnya menjadi format JSON dan menyimpan daftar kata ke dalam variabel words. Jika terjadi kesalahan saat memuat kata, pesan kesalahan akan ditampilkan di konsol.
  6. Memulai Permainan: Fungsi startGame menginisialisasi ulang status permainan, memilih kata secara acak dari daftar kata, dan membuat baris input untuk setiap percobaan. Elemen-elemen untuk pesan kemenangan, kekalahan, tombol ulang, dan kata yang benar disembunyikan.
  7. Membersihkan Baris dan Input: Fungsi clear menghapus semua elemen baris dari DOM dan mengosongkan array rows. Fungsi clearInput mengosongkan array inputs.
  8. Memperbarui Elemen Input: Fungsi updateItems memperbarui elemen DOM untuk mencerminkan input pemain saat ini. Setiap karakter dalam input pemain akan ditampilkan di elemen yang sesuai.
  9. Mengirim Kata: Fungsi submitWord memeriksa apakah input pemain cocok dengan kata yang dipilih. Jika cocok, permainan berakhir dengan kemenangan. Jika tidak, permainan berlanjut ke baris berikutnya. Jika pemain telah mencapai jumlah percobaan maksimal tanpa menebak kata dengan benar, permainan berakhir dengan kekalahan.
  10. Menghilangkan Pesan "Enter a Key": Fungsi enterKeyFirst menghilangkan elemen pesan "enter a key" jika masih terlihat.
  11. Menangani Input Keyboard: Fungsi handleKeyPress menangani input dari keyboard. Jika pemain menekan huruf, huruf tersebut akan ditambahkan ke input saat ini. Jika pemain menekan Backspace, huruf terakhir akan dihapus. Jika pemain menekan Enter, kata saat ini akan dikirim untuk diperiksa.
  12. Mengulang Permainan: Fungsi retryLevel memulai ulang permainan dengan memanggil startGame.

Comments

Popular posts from this blog

Pertemuan 13 OOP - Abstraksi & Simulasi Fox & Rabit

Pertemuan 11 PWEB - Membuat Website CRUD PHP MySQL

Pertemuan 11 PBO - Studi Kasus Network Project (Inheritance)