用scratch制作《仙剑奇侠传95》(09)

Scratch 少儿编程 1742浏览 0评论
仙剑奇侠传95

友情提示:视频教程观看时请手动设置清晰度。

用scratch制作《仙剑奇侠传95》(09)

《仙剑奇侠传Windows95版》、《仙剑奇侠传98柔情篇》:也就是真正的“仙剑95版”,1997年出品。仙剑98柔情篇是大宇于同年在大陆推出的仙剑Win95版之相应简体版,首发于1997年10月,这一版本也是在中国大陆流传得最广的仙剑一。游戏画面看上去和DOS版并无太多区别;增加了数个AVI动画;增加了四首CD音轨,背景音乐由DOS内默认的FM音源(即RIX格式)变为MIDI格式。部分迷宫地图作了一定简化,少量对白被更改,我方法术习得等级降低、BOSS生命降低。此外,所有道具加入了文字说明,这一点是非常实用的改进。

想再次重温、怀旧的朋友可在后台回复‘游戏下载’获取游戏下载链接

以上内容可以忽略,本期的副标题:《NPC对话内容存储与显示

 

用scratch制作《仙剑奇侠传95》(09)

如何实现与不同的NPC对话,显示不同的内容呢?用什么数据结构来实现呢?我采用的是链表。用每一个链表来存储每一组对话内容。

首先用一个列表来存放所有NPC的对话内容,顺序没有要求,这个列表作为链表节点的值域(value

用scratch制作《仙剑奇侠传95》(09)

接下来用一个列表来存放链表节点的指针域(next),none表示空值,它与对话文本列表是一一对应的。

用scratch制作《仙剑奇侠传95》(09)

最后还要构建一个列表用来存放链表的头指针(head),这个列表1~100用来存放静止NPC的对话链接的头指针,从101开始存放移动NPC的对话内容链接的头指针,以#用来分割在某一事件下的头指针,也就是说在普通情况下对话的头指针是#左边的值,如果触发了一个故事情节事件,NPC的对话内容会发生改变,那么头指针就会是#右边的值。

用scratch制作《仙剑奇侠传95》(09)

当我们触发一个NPC对话事件后,先得到当前NPC的前缀名称,然后调用对话方法获取两个参数:NPC_name(用来确定大头贴)和NPC_dialog_index(存放当前NPC对话内容链表的头指针,当然了这个数据需要再次解析才能获取到真正的对话内容的头指针)

用scratch制作《仙剑奇侠传95》(09)

用scratch制作《仙剑奇侠传95》(09)

解析获取到真正的对话内容链表的头指针_head

用scratch制作《仙剑奇侠传95》(09)

接下来通过_head的指向读取到第一句对话内容的索引号,显示出来,根据这个节点其对应的next指针获取到下一句话的索引号,以此类推,直到next为none时,对话结束。在这个过程中还要及时的将每一句话的人的前缀名称传递给大头贴角色用来即时显示相关的大头贴造型。

 

用scratch制作《仙剑奇侠传95》(09)

大头贴角色的代码呢,首先将该角色下的所有造型名称写入列表

用scratch制作《仙剑奇侠传95》(09)

根据传递过来的NPC_name替换相应的大头贴造型,没有的显示空(none)造型

 

用scratch制作《仙剑奇侠传95》(09)

本期内容有点多,尤其是在创建数据结构上有点绕,但创建一个好的数据结构对于解决复杂问题的确有很大的益处。

本系列只提供素材分享,不分享源代码,抱歉!~

素材链接: https://pan.baidu.com/s/1vaYrN0UKi3EeapRL9mH0hQ 提取码: vyh1

指导视频:

转自公众号:
嘻嘻哈哈学编程

您必须 登录 才能发表评论!