Це подальше запитання щодо друку лабіринту . Якщо вам подобається це питання, будь ласка, додайте більше алгоритмів генерації лабіринту;).
Для цього вам потрібно буде реалізувати ігровий движок для одного гравця, який повинен знайти скарб у лабіринті та вийти з підземелля.
Двигун запускається зчитуванням лабіринту зі стандартного вводу, а потім рядком, що містить файл поданий як аргумент у командному рядку. Далі гравець .
(крапка),@
розміщується у випадковому місці на карті. Потім двигун починає взаємодіяти з програвачем через стандартні io:
Команди від двигуна до гравця :
continue
: Гра не закінчена. Навколишнє середовище друкується з написом.
. Гравець представлений@
символом. Клітини, що не спостерігаються, представлені символами?
.finished
: Гра закінчена. Надрукується кількість кроків і гра припиняється.
Команди від гравця до двигуна :
north
: Переміщення гравця вгору.south
: Переміщує програвача вниз.west
: Переміщення гравця вліво.east
: Переміщення гравця вправо.
Будь-яка недійсна команда (наприклад, удари об стіну) від гравця ігнорується, але все ж рахується. Ви можете визначити околиці на свій смак.
- Бали за найкоротший код.
- Точки для складного оточення (наприклад, надрукуйте великі регіони та замініть комірки, які не видно
?
). - Немає балів для коду, який не відповідає формату io
Приклад :
У цьому прикладі оточення визначається як осередок 3х3 з програвачем посередині.
$ cat maze
+-+-+
|#|
| |
+---+
$ python engine.py maze
|#
@
---
.
east
|#|
@|
--+
.
north
+-+
|@|
|
.
south
|#|
@|
--+
.
west
|#
@
---
.
west
|
|@
+--
.
north
+-+
@|
|
.
west
finished
7