在Python提示符下玩巨洞冒险游戏
项目描述
这是一个将1977年Crowther和Woods撰写的原始FORTRAN代码“冒险”游戏忠实移植到Python 3的版本!它允许你探索巨洞,在这里其他人发现了财富和黄金,尽管有传言说有些人进入后就再也没有出来。
此页面
http://rickadams.org/adventure/e_downloads.html
在此链接提供了原始PHP源代码
http://www.ifarchive.org/if-archive/games/source/advent-original.tar.gz
为了鼓励使用Python 3,游戏被设计成可以直接在Python提示符下进行。可以单独输入单词命令,但双词命令应作为函数调用编写(因为双词命令在Python中不是有效的)
>>> import adventure >>> adventure.play() WELCOME TO ADVENTURE!! WOULD YOU LIKE INSTRUCTIONS? >>> no YOU ARE STANDING AT THE END OF A ROAD BEFORE A SMALL BRICK BUILDING. AROUND YOU IS A FOREST. A SMALL STREAM FLOWS OUT OF THE BUILDING AND DOWN A GULLY. >>> east YOU ARE INSIDE A BUILDING, A WELL HOUSE FOR A LARGE SPRING. THERE ARE SOME KEYS ON THE GROUND HERE. THERE IS A SHINY BRASS LAMP NEARBY. THERE IS FOOD HERE. THERE IS A BOTTLE OF WATER HERE. >>> get(lamp) OK >>> leave YOU'RE AT END OF ROAD AGAIN. >>> south YOU ARE IN A VALLEY IN THE FOREST BESIDE A STREAM TUMBLING ALONG A ROCKY BED.
原始冒险游戏只关注每个命令的前五个字母,所以像inventory这样的长命令可以直接输入为inven。这个包为每个长词定义了两个版本的符号,所以你可以随意输入长版本或短版本。
你可以通过调用带有文件名的save()命令在任何时候保存游戏,然后稍后可以恢复它
>>> save('advent.save') GAME SAVED >>> adventure.resume('advent.save') GAME RESTORED >>> look SORRY, BUT I AM NOT ALLOWED TO GIVE MORE DETAIL. I WILL REPEAT THE LONG DESCRIPTION OF YOUR LOCATION. YOU ARE IN A VALLEY IN THE FOREST BESIDE A STREAM TUMBLING ALONG A ROCKY BED.
你可以在其tests目录中找到两个完整的游戏攻略,你可以使用Python 3内置的discover模块运行它们
$ python3 -m unittest discover adventure
我大部分是在2010年圣诞节假期编写了这个包,为了更多地了解那个曾经让我着迷的童年的游戏的工作原理;这个项目还让我练习了编写Python 3。如果我不专心,我仍然会在编写 print() 时忘记括号。
传统模式
您还可以使用这个包在不需要输入有效Python的传统提示符下玩冒险游戏。使用您的操作系统命令行来运行此包
$ python3 -m adventure WELCOME TO ADVENTURE!! WOULD YOU LIKE INSTRUCTIONS? >
在出现的提示符中,两个词的命令可以简单地通过空格分隔
> get lamp OK
为了增加真实性,本模式下的冒险游戏输出将在1200波特率下打印到您的屏幕。您会注意到,尽管这比您阅读的速度要快,但您的游戏体验将大大提高,尤其是在移动导致惊喜时。
为什么游戏在1200波特率下更好?当一段文本可以一次性出现在屏幕上时,您的眼睛会扫描整个段落以寻找重要信息,这通常在您开始阅读之前就破坏了惊喜。但在1200波特率下,您将按顺序阅读出现的文本,正如冒险游戏的作者所期望的那样,按顺序展开叙事。
如果您在游戏中使用 save 命令创建了一个文件,您可以通过在命令行中命名它来稍后恢复它
> save mygame GAME SAVED > quit DO YOU REALLY WANT TO QUIT NOW? > y OK $ python3 -m adventure mygame GAME RESTORED >
注意事项
一些冒险命令与标准Python内置函数冲突。如果您想运行正常的Python函数 exit()、open()、quit() 或 help(),则导入 builtin 模块并运行那里存储的函数副本。
“break” 是Python的关键字,所以在游戏中无法使用它。相反,使用由冒险游戏的PDP版本定义的两个同义词:“粉碎”或“打碎”。
版权
与这个Python包一起分发的 advent.dat 游戏数据文件,就像冒险游戏的原始源代码的其余部分一样,是一个公共领域作品。从FORTRAN源代码(著名的短语“你让自己送命”等等)复制到我的源代码中的短语仍然是公共领域,可以不经署名使用。
我自己重新实现游戏引擎的Python代码是
版权所有 2010–2015 Brandon Rhodes
根据Apache License,版本2.0(“许可证”);除非适用法律要求或书面同意,否则不得使用此文件,除非遵守许可证。您可以在以下位置获取许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则在许可证下分发的软件是按“原样”分发的,不提供任何明示或暗示的保证或条件。有关许可证的具体语言管理权限和限制,请参阅许可证。
变更日志
项目详情
adventure-1.6.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8aac1f668257b27f9ed5f6faffdad411b9bc376ef48f6590d972c4e207d611e9 |
|
MD5 | a4edc0b64f72ae23560c77bb35de5c28 |
|
BLAKE2b-256 | a35cb5abdb0ad5dae6919d5a1d9837b11f505e170a04e5695bbe3562bc9fa073 |