来自Imagine Cup的赫伯特游戏的cli版本。
herbert-python的Python项目详细描述
赫伯特是我第一次看到的游戏。
游戏要求你通过编写小程序来解决一系列的问题。 控制一个叫赫伯特的机器人。您的解决方案越简单、越优雅, 你得到更多的分数。
它挑战了您查看模式和创建算法的能力 这些模式。
这是我克隆的赫伯特。
享受吧!
用法
要运行herbert
,您需要一个level来求解和一个program
写,试图解决这个问题。
假设该级别存储在level.txt
中,并且您编写并保存了
你在sol.h
中的解决方案。然后,运行herbert
如下:
$ herbert level.txt sol.h
它将打开一个curses 基于文本的用户界面,允许您在 以确定它是否解决了级别以及您的解决方案值多少分。
n.b.第data/example 目录包含一个示例级别以及3个尝试的 水平。你可以用它来帮助你理解游戏的运作方式。
游戏概述
一个级别由空格(.
)、墙(*
)、白色组成
(w
)和灰色(g
)按钮,robot(u
)表示robot
面朝上,r
表示机器人面朝右边,
d
表示机器人面朝下,或者l
表示机器人面朝下
面朝左)。
n.b.您可以找到示例级别here。
每一层都有一些白色的按钮。要解决一个级别,你必须按所有 白色的纽扣。你的目标是用一种叫做 “H”,按下所有白色按钮,同时避开墙壁和 灰色按钮(墙挡住了赫伯特的路,灰色按钮重置了以前的任何一个 将白色按钮按到未按下状态)。
你只被分配了一定数量的“字节”(程序大小的单位)。 水平。程序使用的字节数不能超过此数目。
每按一个白色按钮就奖励积分,解决问题就奖励积分 对于使用少于 分配的最大字节数。
“h”语言
它是一种简单的语言,包含语句、零个或多个过程 参数和递归。查看教程here 为了更好地理解这门语言。
你可以找到正在使用的语言的例子here, here 以及here。
挑战
尝试求解以下级别(请参见data/levels):
开发
推荐工具:
克隆存储库并安装依赖项:
$ git clone git@github.com:dwayne/herbert-python.git
$ cd herbert-python
$ pipenv shell
$ pipenv install --dev
你们现在都准备好开始发展了。
测试
测试是使用内置的单元测试框架unittest编写的。
运行所有测试。
$ python -m unittest
运行特定的测试模块。
$ python -m unittest tests.test_interpreter
运行特定的测试用例。
$ python -m unittest tests.test_interpreter.ExamplesTestCase.test_example10