Ini adalah tindak lanjut dari Mencetak pertanyaan labirin . Jika Anda menyukai pertanyaan ini, silakan tambahkan lebih banyak algoritma pembuatan labirin;).
Untuk tugas ini Anda harus menerapkan mesin permainan untuk satu pemain yang harus menemukan harta karun di labirin dan keluar dari penjara bawah tanah.
Mesin mulai dengan membaca labirin dari input standar diikuti oleh baris yang berisi file yang diberikan sebagai argumen di baris perintah. Selanjutnya pemain .
(titik)@
ditempatkan di lokasi acak di peta. Kemudian engine mulai berinteraksi dengan pemain melalui standar io:
Perintah dari mesin ke pemain :
continue
: Game belum selesai. Lingkungan dicetak diikuti oleh a.
. Pemain diwakili oleh@
karakter. Sel yang tidak dapat diobservasi diwakili oleh?
.finished
: Game selesai. Jumlah langkah dicetak dan permainan berhenti.
Perintah dari pemain ke mesin :
north
: Memindahkan pemain ke atas.south
: Memindahkan pemain ke bawah.west
: Pindahkan pemain ke kiri.east
: Pindahkan pemain ke kanan.
Perintah yang tidak valid (seperti menabrak dinding) dari pemain diabaikan, tetapi masih dihitung. Anda bebas menentukan lingkungan yang Anda sukai.
- Poin untuk kode terpendek.
- Poin untuk lingkungan yang kompleks (mis. Cetak wilayah besar dan ganti sel yang tidak terlihat oleh
?
). - Tidak ada poin untuk kode yang tidak menghormati format io
Contoh :
Dalam contoh ini, lingkungan didefinisikan sebagai sel 3x3 dengan pemain di tengah.
$ cat maze
+-+-+
|#|
| |
+---+
$ python engine.py maze
|#
@
---
.
east
|#|
@|
--+
.
north
+-+
|@|
|
.
south
|#|
@|
--+
.
west
|#
@
---
.
west
|
|@
+--
.
north
+-+
@|
|
.
west
finished
7
Jawaban:
C99, 771 karakter
Membutuhkan dan memanfaatkan ncurses. Hanya satu makroisasi panjang, dan makro N dan M adalah untuk menggantikan opperator minimum dan maksimum yang hilang, dan saya tidak berpikir ada banyak yang harus dilakukan tentang itu.
Ini mengasumsikan labirin masukan tidak melebihi 80 karakter lebar, dan bahwa labirin nama file telah disahkan pada baris perintah, dan bahwa jumlah parameter yang cukup rendah bahwa nilai awal c bukan perintah gerakan.
Menyimpang dari standar karena dibutuhkan perintah arah karakter tunggal seperti huruf kecil pertama dari yang disarankan.
Apakah menampilkan wilayah yang tidak dikenal sebagai '?'
Lebih mudah dibaca dengan komentar:
sumber