用木兰语言编写文字冒险游戏(十三、四章),又一个特性发现

栏目: 软件资讯 · 发布时间: 5年前

内容简介:继续改写 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(行数据)
    }
}

木兰语言相关注意点

  1. ? : 是表达式,不能单独作为声明使用。因此 print( 2<4 ? 3 : 4) 这样可以,if 2>1{ 2<4 ? print(3) : print(4) } 就不可以。
  2. 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 行为也相同。待研究,不知是否与之前发现的 引用机制 有何关联。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTML5秘籍(第2版)

HTML5秘籍(第2版)

[美] Matthew MacDonald / 李松峰、朱巍、刘帅 / 人民邮电出版社 / 2015-4 / 89.00元

不依赖插件添加音频和视频,构建适用于所有浏览器的播放页面。 用Canvas创建吸引人的视觉效果,绘制图形、图像、文本,播放动画,运行交互游戏。 用CSS3将页面变活泼,比如添加新奇的字体,利用变换和动画添加吸引人的效果。 设计更出色的Web表单,利用HTML5新增的表单元素更加高效地收集访客信息。 一次开发,多平台运行,实现响应式设计,创建适配桌面计算机、平板电脑和智能手机......一起来看看 《HTML5秘籍(第2版)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具