内容简介:继续改写 Python 文字冒险游戏,第十三章的主要添加了玩家在每格的行动限制: func 选择命令(位置, 玩家) { 行动 = nil while !行动 { 可选行动 = 取可选行动(位置, 玩家) 选择 = ...
继续改写 Python 文字冒险游戏,第十三章的主要添加了玩家在每格的行动限制:
func 选择命令(位置, 玩家) {
行动 = nil
while !行动 {
可选行动 = 取可选行动(位置, 玩家)
选择 = input("行动: ")
行动 = 可选行动.get(选择)
if 行动 {
// 为避免如此特殊处理, 其他行动也需加"环境"参数
if (行动 == 玩家.攻击) {
行动(位置.敌人)
} else {
行动()
}
} else {
println("选择无效!")
}
}
}
另外地图改成表示如下,连同对应解析方法:
地图描述 =
"| |VT| |\n" +
"| |EN| |\n" +
"|EN|ST|EN|\n" +
"| |EN| |\n"
十四章又添加了一个商贩角色,可以购买装备。另外,将地图解析方法改进为可以读取起始位置:
func 解析地图描述 {
if !检查无误(地图描述) {
throw SyntaxError("描述 is invalid!")
}
各行 = 地图描述.splitlines()
各行 = list(filter(x -> x, 各行))
for y, 行 in enumerate(各行) {
行数据 = []
各块 = 行.split("|")
各块 = list(filter(c -> c, 各块))
for x, 块 in enumerate(各块) {
地块类型 = 地块类型表[块]
if 地块类型 == 起始位置 {
extern 起始点
起始点 = tuple(x, y)
}
行数据.append(地块类型 ? 地块类型(x, y) : nil)
}
地图.append(行数据)
}
}
木兰语言相关注意点
? :
是表达式,不能单独作为声明使用。因此print( 2<4 ? 3 : 4)
这样可以,if 2>1{ 2<4 ? print(3) : print(4) }
就不可以。- python 的 global 对应木兰的 extern,发现在引用时有个奇特之处。简化演示如下:
如下声明 x,函数 a 对其作修改:
x = 1
func a() {
extern x
x = x * 3
}
println("原值:`x`")
如果这样引用:
using * in 原值
a()
println("修改后:`x`")
输出如下,可见修改未果:
原值:1
修改后:1
这样调用才修改有效:
using 原值
原值.a()
println("修改后:`原值.x`")
输出:
原值:1
修改后:3
Python 行为也相同。待研究,不知是否与之前发现的 引用机制 有何关联。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 基于顺丰同城接口编写sdk,java三方sdk编写思路
- 使用 Clojure 编写 OpenWhisk 操作,第 1 部分: 使用 Lisp 方言为 OpenWhisk 编写简明的代码
- 编写一个Locust文件
- 编写现代 JavaScript 代码
- 性能测试报告编写技巧
- 为vscode编写扩展
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Ruby on Rails电子商务实战
Christian Hellsten、Jarkko Laine / 曹维远 / 人民邮电出版社 / 2008-4 / 49.00元
《Ruby on Rails电子商务实战》全面讲解了使用Ruby on Rails创建产品级应用程序的过程。书中通过演示构建网上书店的全过程,先后介绍如何使用如TDD的敏捷实践,启动一个项目并建立良好稳定的基础,如何深入Ruby on Rails,实现诸如将应用程序翻译成各种语言对产品进行调试等的普遍需求。其中用到的主要技术包括Ajax、聚合、设置标签和国际化等,还介绍了如何使用ActiveRec......一起来看看 《Ruby on Rails电子商务实战》 这本书的介绍吧!