3.3主控制程序
完成story.和背景部分,理论上我们已经可以通过切换状态变量B.story name和e.bac来实现播放剧情、选项、切换背景和BGM了。
然而,这样的操作实在过于繁琐。我们可以使用面向对象编程的思路,把复杂的程序封装成方法(自制积木),方便其他人轻松使用模板。
知识点:面向对象编程
如果把编程比作搭积木,每一块积木都是一行代码,那么面向对象编程中的“对象”则是由多个积木拼成的特定的结构,比如车轮。
在拼一辆货车时,面向过程编程会重复拼很多轮子,而面向对象编程则会制作一个名为“车轮”的对象,然后复制粘贴/调用它。
“在脚本中多次使用相同的对象以节省时间”只是面向对象编程的初级玩法。高级的“对象”允许通过修改参数来调整它具体的功能特点,实现相似但不同的效果。
除了“面向对象编程”,还有“面向过程编程”。“面向过程编程”注重每一步该怎么做,把笼统的命令拆成多个具体的命令,比如把“洗衣服”拆成“打开洗衣机”+“放入衣服”+“倒洗衣液”+“设定洗衣机程序”。
对比“面向对象编程”和“面向过程编程”:
回到main.的代码区。还记得如何切换背景(和BGM)吗?是更改e.bac。
记得添加等待,堵住线程,为背景和BGM切换预留时间。
回忆一下,用文字框播放剧情和选项的时候,使用的状态变量为B.story name。 如果它包含“select”后缀,就播放选项,否则播放剧情。
e.d.storyrepeat用来记录剧情有几段,e.d.select.num记录选项数,e.story return记录选择了哪一项。 e.a-story over?记录剧情是否播放完毕/选项是否已被选择。
由此,完成播放剧情和播放选项的方法。
完成对象的封装以后,写一个主控制程序的开头,并将其初始化。
在下面写一段演示,便于其他人了解如何在主线中调用方法:
最终效果:
此外,由于Gandi的部分源代码与Turbowarp相同,我们可以在背景的代码区创建一个注释,并将下面的内容粘贴在注释中,刷新作品,以实现补帧、高清画笔、无限克隆、角色可穿过边缘、移除音效范围限制和画笔大小限制的效果:
{"runtimeOptions":{"maxClones":Infinity,"miscLimits":false,"fencing":false},"interpolation":true,"hq":true} // _twconfig_
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=Oscar-novel/Oscar/lec03c&type=comment"
title="{Oscar的文字互动小说 03c}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>