World Of Zull
Nama : Hafidz Panji Ashari
NRP : 5025231278
Kelas : PBO-A
"World of Zuul" adalah permainan petualangan berbasis teks yang sederhana, di mana pemain menjelajahi berbagai ruangan dan berinteraksi dengan objek serta karakter melalui perintah teks.
1. Kelas Item
- Deskripsi: Kelas ini digunakan untuk merepresentasikan objek atau barang dalam permainan yang dapat diambil oleh pemain.
- Fungsi Utama:
- Menyimpan nama dan deskripsi dari suatu item (misalnya, "kunci" dengan deskripsi "kunci untuk membuka pintu taman").
- Struktur Dasar:
- Properti:
nama,deskripsi. - Metode:
getNama(),getDeskripsi().
public class Item {
private String nama;
private String deskripsi;
public Item(String nama, String deskripsi) {
this.nama = nama;
this.deskripsi = deskripsi;
}
public String getNama() {
return nama;
}
public String getDeskripsi() {
return deskripsi;
}
}
2. Kelas Ruangan
- Deskripsi: Kelas ini merepresentasikan setiap ruangan dalam permainan. Ruangan memiliki deskripsi, pintu keluar ke ruangan lain, item yang mungkin ada, dan rintangan yang harus diselesaikan untuk mengaksesnya.
- Fungsi Utama:
- Menyimpan deskripsi ruangan.
- Menentukan arah pintu keluar (
utara,timur, dll.). - Menyimpan item yang ada di ruangan.
- Menentukan rintangan yang harus diselesaikan sebelum memasuki ruangan tertentu.
- Struktur Dasar:
- Properti:
deskripsi,pintuKeluar,rintangan,item. - Metode:
setPintuKeluar()untuk menentukan pintu keluar.setItem()untuk menambahkan item ke ruangan.setRintangan()untuk menetapkan rintangan.
- Properti:
import java.util.HashMap;
public class Ruangan {
private String deskripsi;
private HashMap<String, Ruangan> pintuKeluar;
private String rintangan;
private Item item;
public Ruangan(String deskripsi) {
this.deskripsi = deskripsi;
pintuKeluar = new HashMap<>();
}
public void setPintuKeluar(String arah, Ruangan tetangga) {
pintuKeluar.put(arah, tetangga);
}
public void setRintangan(String rintangan) {
this.rintangan = rintangan;
}
public void setItem(Item item) {
this.item = item;
}
public String getDeskripsiSingkat() {
return deskripsi;
}
public String getDaftarPintuKeluar() {
StringBuilder daftarPintu = new StringBuilder("Pintu keluar:");
for (String arah : pintuKeluar.keySet()) {
daftarPintu.append(" ").append(arah);
}
return daftarPintu.toString();
}
public Ruangan getPintuKeluar(String arah) {
return pintuKeluar.get(arah);
}
public String getRintangan() {
return rintangan;
}
public Item getItem() {
return item;
}
public boolean adaRintangan() {
return rintangan != null;
}
}
3. Kelas Permainan
- Deskripsi: Kelas utama yang menangani logika permainan. Kelas ini memungkinkan pemain untuk menjelajahi ruangan, mengambil item, menyelesaikan rintangan, dan memenangkan permainan.
- Fungsi Utama:
- Mengatur alur permainan, termasuk perintah pengguna seperti
pergi,ambil,inventaris, dankeluar. - Memeriksa apakah pemain memenuhi syarat untuk melewati rintangan (misalnya, memiliki kunci untuk membuka pintu taman).
- Menentukan kemenangan pemain ketika mereka mencapai taman.
- Mengatur alur permainan, termasuk perintah pengguna seperti
- Struktur Dasar:
- Properti:
ruanganSaatIni,inventaris(item yang dimiliki pemain). - Metode:
mainkan()untuk memulai permainan.prosesPerintah()untuk membaca dan mengeksekusi input pengguna.pergiKeRuangan()untuk memindahkan pemain antar ruangan.ambilItem()untuk mengambil item di ruangan saat ini.tampilkanInventaris()untuk memeriksa barang yang dimiliki pemain.
- Properti:
import java.util.HashMap;
import java.util.Scanner;
public class Permainan {
private Ruangan ruanganSaatIni;
private HashMap<String, Item> inventaris;
public Permainan() {
inventaris = new HashMap<>();
buatRuangan();
}
private void buatRuangan() {
Ruangan ruangTamu, dapur, kamarTidur, taman;
Item kunci;
ruangTamu = new Ruangan("di ruang tamu");
dapur = new Ruangan("di dapur");
kamarTidur = new Ruangan("di kamar tidur");
taman = new Ruangan("di taman");
kunci = new Item("kunci", "Sebuah kunci yang dapat membuka pintu taman.");
ruangTamu.setPintuKeluar("utara", dapur);
ruangTamu.setPintuKeluar("timur", kamarTidur);
dapur.setPintuKeluar("selatan", ruangTamu);
kamarTidur.setPintuKeluar("barat", ruangTamu);
kamarTidur.setPintuKeluar("utara", taman);
kamarTidur.setItem(kunci);
taman.setRintangan("Pintu taman terkunci. Anda membutuhkan kunci untuk membukanya.");
ruanganSaatIni = ruangTamu; // Pemain mulai di ruang tamu
}
public void mainkan() {
tampilkanSelamatDatang();
boolean selesai = false;
Scanner scanner = new Scanner(System.in);
while (!selesai) {
System.out.print("> ");
String perintah = scanner.nextLine();
selesai = prosesPerintah(perintah);
}
System.out.println("Terima kasih sudah bermain. Sampai jumpa!");
scanner.close();
}
private void tampilkanSelamatDatang() {
System.out.println("Selamat datang di Dunia Zuul!");
System.out.println("Ini adalah permainan petualangan berbasis teks dengan teka-teki.");
System.out.println("Ketik 'bantuan' jika Anda membutuhkan bantuan.");
System.out.println();
System.out.println(ruanganSaatIni.getDeskripsiSingkat());
System.out.println(ruanganSaatIni.getDaftarPintuKeluar());
}
private boolean prosesPerintah(String perintah) {
String[] kata = perintah.split(" ");
String kataPerintah = kata[0];
switch (kataPerintah) {
case "pergi":
if (kata.length < 2) {
System.out.println("Pergi ke mana?");
} else {
pergiKeRuangan(kata[1]);
}
break;
case "ambil":
ambilItem();
break;
case "bantuan":
tampilkanBantuan();
break;
case "inventaris":
tampilkanInventaris();
break;
case "keluar":
return true;
default:
System.out.println("Saya tidak mengerti apa yang Anda maksud...");
}
return false;
}
private void tampilkanBantuan() {
System.out.println("Perintah yang tersedia:");
System.out.println(" pergi <arah> ambil inventaris bantuan keluar");
}
private void pergiKeRuangan(String arah) {
Ruangan ruanganBerikutnya = ruanganSaatIni.getPintuKeluar(arah);
if (ruanganBerikutnya == null) {
System.out.println("Tidak ada pintu di arah tersebut!");
} else if (ruanganBerikutnya.adaRintangan() && !inventaris.containsKey("kunci")) {
System.out.println(ruanganBerikutnya.getRintangan());
} else {
ruanganSaatIni = ruanganBerikutnya;
System.out.println(ruanganSaatIni.getDeskripsiSingkat());
System.out.println(ruanganSaatIni.getDaftarPintuKeluar());
// Tambahkan logika untuk memeriksa kemenangan
if (ruanganSaatIni.getDeskripsiSingkat().equals("di taman")) {
System.out.println("Selamat, Anda berhasil menyelesaikan permainan!");
}
}
}
private void ambilItem() {
Item item = ruanganSaatIni.getItem();
if (item != null) {
inventaris.put(item.getNama(), item);
System.out.println("Anda mengambil: " + item.getDeskripsi());
ruanganSaatIni.setItem(null);
} else {
System.out.println("Tidak ada item di ruangan ini.");
}
}
private void tampilkanInventaris() {
System.out.println("Inventaris Anda:");
if (inventaris.isEmpty()) {
System.out.println("Kosong.");
} else {
for (String namaItem : inventaris.keySet()) {
System.out.println("- " + namaItem);
}
}
}
public static void main(String[] args) {
Permainan permainan = new Permainan();
permainan.mainkan();
}
}
Contoh Permainan :

Comments
Post a Comment