World of Zuul

 Nama: Valensio Arvin Putra Setiawan
Kelas: PBO G
Nrp: 5025231273


1. Room.java

Fungsi Utama:

  • Mewakili ruangan dalam permainan.
  • Menyimpan informasi seperti deskripsi ruangan, pintu keluar, dan item yang ada di dalamnya.

Penjelasan Kode

  1. Atribut:

    • description: Deskripsi ruangan.
    • northExit, southExit, eastExit, westExit: Menyimpan referensi ke ruangan lain di setiap arah.
    • items: Daftar item yang ada di ruangan.
  2. Metode Penting:

    • setExits(Room north, Room east, Room south, Room west):
      • Menentukan ruangan mana yang terhubung ke ruangan saat ini di setiap arah.
    • addItem(String item):
      • Menambahkan item ke ruangan.
    • takeItem(String item):
      • Menghapus item dari ruangan dan mengembalikannya ke pemain jika ada.
    • getItems():
      • Mengembalikan daftar item di ruangan.
    • getDescription():
      • Mengembalikan deskripsi ruangan beserta daftar item.
    • getExit(String direction):
      • Mengembalikan referensi ke ruangan yang ada di arah tertentu.

Cara Kerja:

  • Ruangan saling terhubung melalui metode setExits.
  • Pemain dapat berpindah antar ruangan melalui atribut pintu keluar.
  • Pemain bisa mengambil item dari ruangan menggunakan takeItem.

2. Command.java

Fungsi Utama:

  • Mewakili perintah yang dimasukkan oleh pemain.
  • Menyimpan kata kerja (misalnya, go) dan objek (misalnya, north) perintah.

Penjelasan Kode

  1. Atribut:

    • commandWord: Kata pertama dari perintah (misalnya, go).
    • secondWord: Kata kedua dari perintah (misalnya, north).
  2. Metode Penting:

    • getCommandWord(): Mengembalikan kata kerja dari perintah.
    • getSecondWord(): Mengembalikan objek dari perintah.
    • isUnknown(): Mengecek apakah perintah dikenali.
    • hasSecondWord(): Mengecek apakah perintah memiliki kata kedua.

Cara Kerja:

  • Perintah seperti go north diproses menjadi objek Command dengan commandWord = go dan secondWord = north.
  • Program menggunakan informasi ini untuk mengeksekusi aksi yang sesuai.

3. CommandWords.java

Fungsi Utama:

  • Menyimpan daftar semua perintah yang valid.
  • Memastikan hanya perintah yang valid diterima oleh sistem.

Penjelasan Kode

  1. Atribut:

    • validCommands: Array string yang berisi semua perintah yang valid.
  2. Metode Penting:

    • isCommand(String aString):
      • Memeriksa apakah sebuah string adalah perintah yang valid.
    • showAll():
      • Menampilkan semua perintah yang valid.

Cara Kerja:

  • Ketika pemain mengetik perintah, program memeriksa apakah perintah tersebut termasuk dalam daftar validCommands.

4. Parser.java

Fungsi Utama:

  • Membaca input dari pemain.
  • Memproses input menjadi objek Command.

Penjelasan Kode

  1. Atribut:

    • commands: Objek CommandWords untuk memvalidasi perintah.
    • reader: Objek Scanner untuk membaca input dari pemain.
  2. Metode Penting:

    • getCommand():
      • Membaca input pemain.
      • Memisahkan input menjadi dua kata (jika ada).
      • Memvalidasi kata pertama menggunakan CommandWords.isCommand.
      • Mengembalikan objek Command.
    • showCommands():
      • Menampilkan semua perintah yang valid.

Cara Kerja:

  • Pemain mengetik perintah, misalnya go north.
  • Parser memecah input menjadi go dan north, memvalidasi go, lalu membuat objek Command.

5. Game.java

Fungsi Utama:

  • Mengontrol logika permainan.
  • Memproses perintah dari pemain.
  • Menyimpan keadaan permainan, seperti ruangan saat ini dan inventori pemain.

Penjelasan Kode

  1. Atribut:

    • parser: Objek Parser untuk membaca input pemain.
    • currentRoom: Ruangan tempat pemain berada saat ini.
    • inventory: Daftar item yang dimiliki pemain.
  2. Metode Penting:

    • createRooms():
      • Membuat semua ruangan dan menghubungkannya dengan pintu keluar.
      • Menambahkan item ke ruangan.
    • play():
      • Memulai permainan dan mengelola loop utama.
    • processCommand(Command command):
      • Memproses perintah dari pemain.
      • Mengarahkan perintah ke metode terkait (goRoom, look, takeItem, dll.).
    • goRoom(Command command):
      • Memindahkan pemain ke ruangan lain berdasarkan arah yang diberikan.
    • look():
      • Menampilkan deskripsi ruangan saat ini dan item yang tersedia.
    • takeItem(Command command):
      • Mengambil item dari ruangan dan menambahkannya ke inventori pemain.
    • showInventory():
      • Menampilkan daftar item yang dimiliki pemain.

Cara Kerja:

  1. Inisialisasi:

    • Semua ruangan dibuat, diberi deskripsi, dan dihubungkan.
    • Item ditambahkan ke beberapa ruangan.
  2. Loop Utama:

    • Pemain mengetik perintah.
    • Program membaca dan memproses perintah.
    • Program memberikan respons sesuai aksi pemain.
  3. Navigasi:

    • Pemain mengetik go [direction] untuk berpindah ruangan.
    • Program memeriksa apakah ada pintu di arah tersebut.
    • Jika ada, pemain dipindahkan ke ruangan baru.
  4. Interaksi dengan Item:

    • Pemain mengetik take [item] untuk mengambil item.
    • Item dihapus dari ruangan dan ditambahkan ke inventori pemain.
    • Pemain dapat melihat inventori dengan inventory.

Alur Kerja Program

  1. Pemain memulai permainan di ruangan awal.
  2. Pemain dapat mengetik:
    • go [direction] untuk berpindah ruangan.
    • look untuk melihat deskripsi ruangan.
    • take [item] untuk mengambil item.
    • inventory untuk melihat item yang dimiliki.
    • quit untuk keluar dari permainan.
  3. Program memproses perintah dan memberikan respons sesuai aksi pemain.

Comments

Popular posts from this blog

Implementasi Rental Kendaraan

Latihan Ticket Machine