Mini-project Part 5: Petualangan Teks
Proyek terbesar sejauh ini. Ia menggunakan semua ide Part 5 —
function, list, dictionary, module — untuk membangun petualangan teks
kecil: seorang player berjalan melalui ruangan dengan mengetik perintah
seperti go north dan take torch.
Apa yang harus dibangun
Sebuah program yang, ketika dijalankan:
- Menempatkan player di ruangan awal.
- Melakukan loop:
- Mencetak deskripsi ruangan saat ini beserta item yang ada di dalamnya.
- Meminta perintah.
- Menjalankan perintah tersebut:
look— deskripsikan ruangan saat ini lagi.go <direction>— bergerak melalui sebuah exit (north, south, east, west, up, down).take <item>— ambil item dari lantai.inv— tampilkan apa yang dibawa player.quit— hentikan game.
- Menang ketika player mengambil
gold coin: cetak pesan kemenangan dan keluar.
Contoh sesi:
-- Forest Path --
You are on a moss covered forest path. Birdsong drifts on the air.
Exits: north
> go north
-- Clearing --
A small clearing of wildflowers.
Items here: torch
Exits: east, south
> take torch
You pick up the torch.
> go east
-- Cave Entrance --
A cool, damp cave mouth opens to the east. A rope lies coiled on the floor.
Items here: rope
Exits: down, west
> quit
Goodbye.
Susunan file
Dua file Python berada berdampingan. Karena
main.py memuat world.py dengan
import world, cd ke folder mereka sebelum
menjalankan. Untuk memainkan versi yang sudah jadi:
cd projects/04-text-adventure/finished
python main.py
File-file:
world.py— mendefinisikan dictionary rooms. Setiap ruangan adalah dictionary dengan"name","description","exits", dan"items".main.py— loop game dan function perintah.
Kedua versi ada di bawah
projects/04-text-adventure/:
starter/
world.py
main.py
finished/
world.py
main.py
Untuk mengerjakan versi starter:
cd projects/04-text-adventure/starter
python main.py
Petunjuk
Dictionary rooms memetakan id ruangan (angka) ke sebuah ruangan. Exits memetakan string arah ke id ruangan yang dituju. Item ruangan adalah list of string.
Player memiliki dua bagian state:
current_room_id(angka) daninventory(list of string).Untuk mem-parse
go north, pisahkan menjadi kata kerja dan argumen:words = command.split() verb = words[0] arg = words[1] if len(words) > 1 else ""Pengecekan menang setelah
takeyang berhasil adalah satuif: apakah itugold coin? Jika ya, cetak pesan menang danbreakkeluar dari loop utama.Di
world.py, definisikan dictionary rooms di level atas. Dimain.py, gunakanimport worldlalu aksesworld.rooms.
Yang belum bisa kamu gunakan
- Class dan
self(bab 26). Function menerima data yang mereka kerjakan sebagai argumen biasa —take(item, room, inventory), bukanroom.take(item). - Inheritance (bab 27). Dict biasa dan function sudah cukup.
Tantangan tambahan (opsional)
- Tambahkan perintah
readuntuk tanda atau surat. - Kunci satu exit sampai item tertentu dibawa (misalnya
gold coinhanya bisa dicapai jika player membawatorch). - Tambahkan musuh yang menghalangi exit sampai player menggunakan
sword.
Tidak ada yang wajib untuk menyelesaikan proyek.
Selesai?
Ketika kamu bisa menelusuri setiap ruangan, mengambil item secara berurutan, dan memicu kemenangan pada gold coin, proyek selesai. Lanjutkan ke Bab 26 — Methods dan self, bab pertama yang memperkenalkan class Python secara langsung.