继续改写 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 行为也相同。待研究,不知是否与之前发现的 引用机制 有何关联。

Java写文字冒险类游戏_用木兰语言编写文字冒险游戏(十三、四章),又一个特性发现...相关推荐

  1. 类似冒险岛这类游戏是用什么语言编写?或者说它的制作流程是什么?

    类似冒险岛这类游戏是用什么语言编写?或者说它的制作流程是什么? 一.总结 1.多种语言混合,VS(C++)和JAVA都是非常可取的 2.注重编写脚本 3.游戏引擎很多大公司都是自己开发 二.简介 应该 ...

  2. c语言文字冒险类游戏,课内资源 - 基于C语言和easyx实现的巧虎划船大冒险游戏...

    1 需求分析 1.1 功能需求 游戏性:通过键盘方向键的←.→.↑.↓来控制巧虎(船)的移动,躲避暗礁,碰撞宝物(特殊宝物),来增加积分,在倒计时结束前(到达终点前)争取得到更多分数.为提高可玩性,宝 ...

  3. 文字冒险类游戏的制作

    1.首先我用的是橙光游戏制作网页 在橙光游戏官网就可以下到软件,注册账号后就可以做了. 打开软件 之后可以看看视频讲解挺详细的,不需要美术编程基础就可以做出自己的故事啦! 希望能为小伙伴们服务!arc ...

  4. java写潜艇大作战游戏_基于Java实现的潜艇大战游戏

    一.需求分析 本次游戏课程设计小组成员团队合作的方式,通过游戏总体分析设计,场景画面的绘制,游戏事件的处理,游戏核心算法的分析实现,游戏的碰撞检测,游戏的反复测试,游戏的打包运行等一个完整的游戏设计编 ...

  5. c写成php的扩展_用C语言编写PHP扩展

    1:预定义 vi myfunctions.def string self_concat(string str, int n) 2:到PHP源码目录的ext目录 #cd /usr/local/php-5 ...

  6. python语言程序设计基础答案第四章_《Python语言程序设计基础》第四章笔记

    4.1 程序的分支结构 4.1.1 单分支结构 if : if True: print("条件正确") 4.1.2 二分支结构 if : else : if True: print ...

  7. java设计游戏_用java设计实现一个简单的动作冒险类游戏

    用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...

  8. java动作游戏教程_用java设计实现一个简单的动作冒险类游戏

    用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...

  9. 用java设计实现一个简单的动作冒险类游戏

    用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...

最新文章

  1. python将空格变成换行_python之路(2)
  2. python统计并输出文件的行数_python实用统计文件行数 类似wc命令
  3. 理解一下jQuery.extend()和jQuery.fn.extend()方法
  4. android webview实例,android WebView 使用实例
  5. 安全测试===Mysql 注入练习网站(3)
  6. unicodedata模块
  7. Javascript函数作为参数——JS学习笔记
  8. H5分享到微信朋友圈与好友实现思路
  9. 摩托罗拉Android 7寸,3.7寸屏600MHz处理器 摩托罗拉MT710评测
  10. 冰蝎v4.0已经更新,在Java18下也能启动冰蝎。
  11. 英特尔发布第三代全新可扩展处理器,加速5G网络转型
  12. 创建群晖共享文件夹,并进行电脑访问
  13. nuc element i5-8265U黑苹果配置
  14. vue如何实现在页面上画画_vue组件:canvas实现图片涂鸦功能
  15. 深度关注 | 元宇宙如何改写人类社会生活
  16. 50天用JavaScript完成50个web项目,我学到了什么?
  17. ArduinoMega2560 引脚表
  18. Firebase常用功能和官方Demo简介
  19. 反射是什么,以及作用
  20. 麒麟OS V10 设置开机自启动

热门文章

  1. 圆是由原子构成的吗?
  2. jsp企业财务管理系统设计与实现(论文+PPT+源码
  3. nodejs实现批量裁剪图片功能
  4. JAVA高级开发工程师面试系列——RocketMQ
  5. JS 定时器的2种写法及介绍
  6. 学点简单的Django之第一个Django程序
  7. 15个Python兼职接单平台!利用业余时间赚钱
  8. Magick++ 6.8.5在MFC中的使用
  9. 《STM32从零开始学习历程》——I2C协议层
  10. RootExplorer怎么样获取root权限的——续