来自Imagine Cup的赫伯特游戏的cli版本。

herbert-python的Python项目详细描述


赫伯特是我第一次看到的游戏。

游戏要求你通过编写小程序来解决一系列的问题。 控制一个叫赫伯特的机器人。您的解决方案越简单、越优雅, 你得到更多的分数。

它挑战了您查看模式和创建算法的能力 这些模式。

这是我克隆的赫伯特。

https://raw.githubusercontent.com/dwayne/herbert-python/master/data/images/herbert.png

享受吧!

安装

要安装,只需使用pip(或pipenv):

$ pip install herbert

用法

要运行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 为了更好地理解这门语言。

你可以找到正在使用的语言的例子herehere 以及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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用jaxb2annotateplugin和XJC工具的java自定义注释   java组织。xeustechnologies。jcl无法加载WstxInputFactory类   java JUnit在格式化字符串上比较失败   java Bukkit配置部分getKeys   如何关闭Java流?   java Struts2正则表达式配置   链式事务注释的java奇怪行为   java在两个JButton之间使用变量   java签署APK时内容会发生什么变化?   java LWJGL:Slick:3D世界中的绘图字体   如何分解Java数组?   在Java MySql中处理多个过滤器   java如何在Firebase数据库中跳过初始OnChildaded事件触发   java如何在PreviewView中使用CameraX?   在子类#中重写父类后访问父类原始方法的java已解决   java找不到类型的属性   游戏框架游戏!框架+Java