-*- 做都做了,那就做到底吧。 -*-
前言:
项目的话,在莫盘里,在贴吧原帖下我有发具体地址。
这里是Doki Doki Mods Maker,是用来做DDLC Mods的小工具。
说是“Mods”,实则不然,这个是我从零仿的DDLC,使用的是Python3与Cython3语言。
因为DDLC,我才选择的计算机专业,那肯定是要“返璞归真”一下啊。当然,如果能帮助到大家那就更好了。
这篇文章,就是DDMM的操作手册,毕竟个人作品,未定义行为是比较多的,所以需要讲述正规的使用方法。
我相信,根据这个小指南,是几乎不可能出错的!
目录:
我将以以下顺序缓缓道来: 重要程度
(1)、DDMM的基本操作⭐⭐⭐⭐⭐
(2)、DDMM的基础语法⭐⭐⭐⭐⭐
(3)、DDMM的特殊语法⭐⭐⭐
(4)、DDMM的用户接口⭐⭐⭐
(5)、DDMM的模式转换⭐⭐⭐⭐
(6)、DDMM的底层实现⭐⭐
(7)、DDMM的其它功能⭐⭐⭐⭐⭐
(8)、DDMM的清空内存⭐
(9)、DDMM的案例讲解⭐⭐⭐⭐
前言:
目录:
Ⅰ、DDMM的基本操作
Ⅱ、DDMM的基础语法
【语法一】:?与?在?说?
第一个问号,代表着说话者的名字:
第二个问号,代表着谁出现在场景里:
第三个问号,代表现在的场景图片:
第四个问号,代表着现在说的话:
【语法二】:?是?
【语法三】:选择语句
【语法四】:音乐起停
【语法五】:出现时【可用】、消失时【建议不用】
Ⅲ、DDMM的特殊语法
【语法六】:Magic Words
【语法七】:在场人物的小规模移动
【代码八】:调用子项目,强强联合为一个强大的整体
【语法九】:修改运行走向,单行代码灌注
【语法十】:最终结局走向
Ⅳ、DDMM的用户接口
Ⅴ、DDMM的模式转换
Ⅵ、DDMM的底层实现
Ⅶ、DDMM的其它功能
Ⅷ、DDMM的清空内存
Ⅸ、DDMM的案例讲解
DDOK代码:
DDOK1代码:
后记:
Ⅰ、DDMM的基本操作
(务必小心操作,没有撤退的选项可言;多点《保存》有好处)
点击DDMM.exe,映入眼帘的是图标与启动按钮,所以万年不变的第一步就是点击《启动》按钮。
之后,会出现三个按钮,从上到下分别是《以下是已创建的项目!》《DDOK》《DDOK1》。
其中,第二个与第三个按钮则是我给大家的示范案例,第二个包含于第三个。
假如大家想看其中一个,那就请点击相应的按钮,点击后会发现按钮都消失了,这时候不要慌,请找到上面的《已打开的项目》,点击这里面相应的菜单即可出现文本框。
现在大家看到的就是你选择的这个项目的源程序了,之后再点击上面《<运行>》里面的《以上全部》,即可进入游戏。
(为什么是以上全部?因为在新设备上需要重新编译来重新确定路径)
进入游戏后就点击开始游戏了,但需要提醒的是,本DDLC支持中文命名了,打错名字可以点击BackSpace键撤回,点Enter键也可以进入游戏。
-*- -*- -*- 等待大家看完后 -*- -*- -*-
看完后就可以退出游戏了,毕竟等待我们的则是属于自己的新邂逅。
关键来了,我们想要打开新项目(非切换已有项目),必须先点击上面《<文件>》的《关闭项目》,这时候你会发现之前的按钮都回来了;以此类推。
这时候就要建立属于自己的项目了,请点击上面《<文件>》的《新建项目》,选择一个地方来承载这美好的开始(建议选择DDMM根文件夹自带的project文件夹,方便管理嘛)
名字嘛,建议一锤定音,尽挥洒,填入自己深思熟虑的项目名。
这时候,故技重施嘛 —— 点击后会发现按钮都消失了,请找到上面的《已打开的项目》,点击这里面相应的菜单即可出现文本框。
看到文本框,就代表着你已经学会了五分之一了,真棒。
累了的话,点击退出即可,无论是里面的《退出》,还是《x》都可以的。
修改了的话,别忘了点《保存》哦。
后面回来了,就是故技重施啊。
Ⅱ、DDMM的基础语法
(都是中文的程序语言,简单简单;连标点符号都是中文的呀)
进入了文本框,就来到了语法的世界了。
【语法一】:?与?在?说?
这是最基本的语法,代表着一个场景的发生。
第一个问号,代表着说话者的名字:
名字嘛,都可以的。如纱世里也好,Monika也好,夏树也好,Yuri也好,MC也好,甚至蔡徐坤也行;中英文没限制、大小写没限制。
特殊之处的话:
(1)、特定的名字有特定的字体颜色与对话框颜色,就如:Natsuki(大小写无限制)和夏树都会被自动的变为粉色,对话框也会变化(出自Salvation);
现在有特定颜色就五个人,分别是莫妮卡、纱世里、夏树、尤里和纱妮卡(Sayonika 出自其它Mod)。
(2)、有一种场景,是自言自语的,为了适应这种场景,可以写?来表示这种情况,此时就是说话框还在,但名字框就没了。
第二个问号,代表着谁出现在场景里:
一个人的话直接写就行了,多个人的话中间要以、分开。
这里面又有【三】个小语法。不急不急,先给大家普及一下DDLC原版放置人物图片的【三】种操作:
(1)、人物头像+人物下左半身+人物下右半身
(2)、人物头像+人物下半身
(3)、人物立绘
所以,这【三】个小语法就对应着这三种情况。
这时候请点击DDMM上面的《<帮助>》里面的《快捷词-人物》,这时会出现一个小窗口,里面每个图片左下角的编号就是每个图片的编号。
所以说,这三个小语法分别是(这里的人物名字只能是中文):
(1)、人物头像编号+人物下左半身编号+人物下右半身编号+人物名字(2)、人物头像编号+人物下半身编号+人物名字(3)、人物立绘编号+人物名字
就比如
a+1l+2r+莫妮卡
2th+3+夏树、d2+3+尤里
3c+纱世里、b+2l+1r+莫妮卡、d2+3+尤里
3e+纱妮卡
因为是算法自动根据出现的人物数量规划空间,所以尽量不要同时放超过五个人,因为这样她们会互相重叠。
当然,人物这里也可以用?所代替,这时候代表着人物图片不刷新【可以与第三个问号联用达到特定效果】
第三个问号,代表现在的场景图片:
就和人物一样,场景图片(背景图片)也有对应的编号。
请点击DDMM上面的《<帮助>》里面的《快捷词-背景》,这时会出现一个小窗口,里面每个图片上面的快捷词就是每个图片的编号。
如大家所见,CG也算背景,同时我也把Salvation里面的一些图片拿进来了。
一个场景只能有一个背景图片,所以直接写背景图片对应的关键词即可。
当然,背景这里也可以用?所代替,这时候代表着背景图片不刷新【可以与第二个问号联用达到特定效果】
第四个问号,代表着现在说的话:
这就没什么好说的了。
这里也可以用?所代替,这时候无论是对话框还是名字框都会消失【请区分于第一个问号】
四个问号灵活运用,会出现很多神奇的效果。
就比如吧:
Monika与a+1l+2r+莫妮卡在文学部说 你好!欢迎来到DDMM!
?与e+1l+1r+纱世里在文学部说
?与?在文学部说 这是自言自语。
【语法二】:?是?
上面的尤其是第二个来说,是不是每次写那么多字母会很麻烦?
这个时候,我们就可以给她们起别名了。
如:
微笑校服的老莫是a+1l+1r+莫妮卡
害羞的私服小夏是p+1bl+1br+夏树
害羞的私服尤里是e2+3b+尤里
嘟嘴的纱纱是3d+纱世里
当然,也可以多定义:
害羞的两人是p+1bl+1br+夏树、e2+3b+尤里
......
值得注意的是,这个语句是全文语句+简单替换,也就是说,只要符合《是》左边定义的,就是单纯的替换,所以写的时候最好把别名写长点,难以有重名为好。
多说一句,无论在哪里起名,最好避免《与》《在》《说》此三字的出现,毕竟是关键字。
就比如吧:
害羞的两人是p+1bl+1br+夏树、e2+3b+尤里?与害羞的两人在cafe说
【语法三】:选择语句
因为我们肯定是需要有分支的,所以我加了选择语句。
选择语句的基本模式是:
选择有【几】 【大标题】
1、【选择1描述】
【可以多个语句】
2、【选择2描述】
【可以多个语句】
【......以此类推......】
选择结束
其中值得注意的是:
(1)、【几】,是个位阿拉伯数字,所代表的是下面有几个分支
(2)、【大标题】,这个大标题是给我们编码的人看的,游戏中不会显示出来,所以建议不写,直接空着就行
(3)、每个分支前面的数字都是阿拉伯数字,之后都是中文的顿号
(4)、【选择描述】,就是会呈现在屏幕上的文字
(5)、一定要写最后的 选择结束
(6)、不允许分支嵌套分支,也就是说,不允许选择里面写选择
例如:
选择有4
1、莫妮卡
Monika与b+1l+1r+莫妮卡在文学部说 好耶,你终于看到我了!
Monika与confess+莫妮卡在文学部说 谢谢你!我爱你!
2、纱世里
Sayori与3a+纱世里在文学部说 好耶我就知道,话说。。
Sayori与3b+纱世里在文学部说 能先陪我去买点面包吗?
3、夏树
Natsuki与2bt+1l+1r+夏树在文学部说 我,我才没有想和你回家呢!
4、尤里
Yuri与d+2l+2r+尤里在文学部说 嗯,先陪我去一趟书店吧!
选择结束
还有就是,在每次选择前,都需要让玩家知道选择什么啊。
那么,如果我们需要统计每次不同的选择来达成结局分支呢?这属于特殊语法,之后再讲。
就比如:就拿Monika线举例子吧
?与b+1l+1r+莫妮卡、a+1l+1r+纱世里、a+1l+2r+夏树、a+1l+1r+尤里在文学部说 我究竟回家呢?选择有4
1、莫妮卡
Monika与b+1l+1r+莫妮卡在文学部说 好耶,你终于看到我了!
Monika与confess+莫妮卡在文学部说 谢谢你!我爱你!
2、纱世里
Sayori与3a+纱世里在文学部说 好耶我就知道,话说。。
Sayori与3b+纱世里在文学部说 能先陪我去买点面包吗?
3、夏树
Natsuki与2bt+1l+1r+夏树在文学部说 我,我才没有想和你回家呢!
4、尤里
Yuri与d+2l+2r+尤里在文学部说 嗯,先陪我去一趟书店吧!
选择结束
【语法四】:音乐起停
请点击DDMM上面的《<帮助>》里面的《快捷词-音乐》,这时会出现一个小窗口,里面是一个小小的播放器,里面所对应的名字就是歌的快捷词。
可以试听,听完记得暂停关闭。
如:
音乐起早上好
【一些代码后】
音乐停
还有特殊的是:
如果在歌曲名前面加*,会变成音效来播放。
如:
音乐起*select
区别是,背景音乐一次只能播放一个,但音效可以一次播放多个。
【语法五】:出现时【可用】、消失时【建议不用】
简单地说,就是场景转换。
仅仅是支持以下:
(1)、黑、白、粉、绿、蓝、黄、紫、红、橙,9种颜色互转
(2)、浮现
如:
出现时黑转白
【一些代码后】
出现时粉转蓝
【一些代码后】
出现时浮现
这个的话,仁者见仁智者见智吧,我自己也就是用用《出现时浮现》,仅此而已。
Ⅲ、DDMM的特殊语法
(奇妙的语法,为程序添彩)
倘若前五个都是白魔法,那么,下面便是黑魔法的世界。
【语法六】:Magic Words
Magic Words,顾名思义是魔法词,它可以嵌入代码里,它可以映射到现实,是为Meta元素爱好者举办的盛宴。
当然,里面也有我们需要常用的。
魔法词的语法规则是:需要被中文书名号包裹着。
有以下几个:
《年》
《月》
《日》
《时》
《分》
《秒》
《玩家名》
《用户名》
《主机名》
《IP地址》
《?-?》
值得注意的有:
(1)大家常用的可能也就是:《玩家名》,就是我们在游戏里输入的。
(2)《用户名》,是电脑的用户的名字,理论上原版DDLC就是获取的这个。
(3)《主机名》,就是这台电脑的名字,我的电脑主机名是我的名字,反而电脑名不是。
(4)《?-?》,这两个问号都代表着数字,表示这里在运行时会嵌入随机数字,这个数字的区间是?-?。
举例子:
莫妮卡与confess+莫妮卡在文学部说 其实,你在现实生活中是叫《用户名》吧?
《玩家名》与confess+莫妮卡在文学部说 NoNoNo,其实我叫《主机名》。
【语法七】:在场人物的小规模移动
为了使人物表达更加生动形象,就添加了人物的小规模移动,暂仅支持上下。
很简单,举个例子就懂了。
例子1:
*2Natsuki与2bt+1l+1r+夏树在文学部说 我,我才没有想和你回家呢!
*2代表的就是让人物下移,如果下一幕没有继续添加*2的话,人物自动上移回复原位置。
例子2:
*1Monika与b+1l+1r+莫妮卡在文学部说 好耶,你终于看到我了!
只能添加在《与...在...说》语句的最前面。
*1代表的就是让人物上移,如果下一幕没有继续添加*1的话,人物自动下移回复原位置。
(这些自动上下移来回复的,我可能之后会修改,但文章里没有修改说辞)
注意:场上的所有角色都会被影响!
【代码八】:调用子项目,强强联合为一个强大的整体
就是假设你有点小小的强迫,就是必须分篇分块来写程序,那么就可以使用这个。
之前给大家的演示,就是DDOK调用了DDOK1的程序。
语法规则就是:
调用【子项目名】
例如在DDOK出现的:
调用DDOK1
【语法九】:修改运行走向,单行代码灌注
这个是给有Python基础的用户准备的,我提供了一些接口,可以在运行时改变程序走向。
相关原代码如下:
def exec(Screen self, str code) -> NoReturn:cdef object this = self.screenexec(code, globals(), {"screen": this,"image": '/'.join([basepath, "game", "images", "{}.png"]),"basepath": basepath,"font": "/".join([basepath, "game", "fonts", "{}.TTF"]),"monika": '/'.join([basepath, "game", "images", "monika", "{}.png"]),"sayori": '/'.join([basepath, "game", "images", "sayori", "{}.png"]),"natsuki": '/'.join([basepath, "game", "images", "natsuki", "{}.png"]),"yuri": '/'.join([basepath, "game", "images", "yuri", "{}.png"])})
所以说,我们可以就可以利用这些接口,包括pygame。
如:
(1)在屏幕原点上放置一张图片pic1.png,这张图片你放在了game/images/other/:
screen.blit(pygame.image.load('/'.join([basepath, "game", "images", "other", "pic1.png"])).convert_alpha(), (0, 0))
(2)让屏幕刷新为黑:
screen.fill((0, 0, 0))
......
当然,以上这些需要配合一些语法来使用。
其实用的不多,有些需求完全可以被一些语法所代替。
【语法十】:最终结局走向
这个语法的模式是绝对固定的。
并且,必须是之前有多个分支才能使用(至少两个分支)
就是:
选择有【几】 历史选择
1、【之前的选择顺序,下标从0开始,中间以+相连】
......
2、【之前的选择顺序,下标从0开始,中间以+相连】
......
......
给大家举一个“计算器”例子,如下: (就走一条线举例)
微笑的莫妮卡是a+1l+1r+莫妮卡莫妮卡与微笑的莫妮卡在文学部说 MC,你先从下面选一个数字。
选择有2
1、我选3
莫妮卡与微笑的莫妮卡在文学部说 好的,第一个数你选的是3
2、我选6
莫妮卡与微笑的莫妮卡在文学部说 好的,第一个数你选的是6
选择结束莫妮卡与微笑的莫妮卡在文学部说 MC,你再从下面选一个数字吧。
选择有2
1、我选1
莫妮卡与微笑的莫妮卡在文学部说 好的,第二个数你选的是1
2、我选5
莫妮卡与微笑的莫妮卡在文学部说 好的,第二个数你选的是5
选择结束选择有4 历史选择
1、0+0
莫妮卡与微笑的莫妮卡在文学部说 答案是4!
2、0+1
莫妮卡与微笑的莫妮卡在文学部说 答案是8!
3、1+0
莫妮卡与微笑的莫妮卡在文学部说 答案是7!
4、1+1
莫妮卡与微笑的莫妮卡在文学部说 答案是11!
选择结束
Ⅳ、DDMM的用户接口
(放置自己的图片,大胆创造自己的故事)
点开DDMM的根文件夹,就是DDMM.exe的那个文件夹,是不是有个文件夹叫mod?
点进去,是不是里面又分为bgm与photo两个文件夹?
对的,放进去的音乐可以直接被识别到,图片亦然。
那怎么用呢?
我在mod/bgm下放置了一个叫做DaisyMo.mp3的音乐,就拿这个演示:
音乐起DaisyMo.mp3
即可。
图片也是,都是必须写上后缀名的。
对于图片,我需要多说几句,
原DDLC的背景图片的规格是1280x720,人物图片的规格是960x960的。
所以建议大家如果需要的话,最好把自己的图片变成这两种规格。
Ⅴ、DDMM的模式转换
(工作台和游戏的转换)
点开DDMM的根文件夹,就是DDMM.exe的那个文件夹,是不是有个文件叫启动.txt?
是的,如果大家想把这个DDMM变成一个游戏Mod发出去,直接在启动.txt里写上自己的项目名就行了,再点进去发现就是游戏了;
反之,把里面的文本都清空,就变成了工作台。
例如假设将我的DDOK项目变成游戏,直接在启动.txt里写上DDOK即可。
Ⅵ、DDMM的底层实现
(就姑且讲一讲实现吧,对下一部分起到承接作用)
本项目用的是Python3 + Cython3。
Python3是主语言;Cython3是Python的C语言拓展,属于Python的超集语言。
所以我使用静态编译来把这个项目分成了三大动态链接库。
分别是screen.pyd、window.pyd、parser.pyd
screen.pyd是游戏的实现;
window.pyd是编码环境的实现;
parser.pyd是语法解析器的实现。
其中,
对于screen,主要用pygame实现的;pygame是renpy的底层的一部分。
对于window,主要用tkinter实现的。
对于parser,主要用正则式实现的。
其实我最想说的是基础的数据结构,就是json里面的数据结构。
它有多种形态,通过适配器转换。
在window.pyd,原型如下:
cdef dict[str, object] proj_json = {"proj": proj_name,"backup": '/'.join([basepath, "game", "project", os_path.basename(proj_name)]),"file": proj_name.replace(".json", ".py"),"path": '/'.join(proj_name.split('/')[:-1]),"obj" : proj_name.replace(".json", ".pkl"),"script": [],"icon": "","action text": "","message back": "",
}
其中:
proj - 项目选择的json文件路径
backup - 项目的备用路径
file - 用于编码保存的文件
path - 项目选择的保存路径
obj - 是废弃的项目文件格式的路径
script - 是剧本,单独的数据结构
icon - 图标文件路径
action text - 就是开场会出现的那句话
message back - 是最基础的对话框(区别于每个角色的独特对话框)
在screen.pyd,原型如下:
self.setup = {"title": "Doki Doki Literature Club","icon": '/'.join([basepath, "game", "icon.png"]),"action text": "Welcome To Doki Doki Literature Club","message back": '/'.join([basepath, "game", "images", "other", "talk_bar.png"]),"player name": "","script": []
}
其中:
title - 游戏名字
icon - 游戏图标
action text - 就是开场会出现的那句话
message back - 是最基础的对话框(区别于每个角色的独特对话框)
player name - 玩家名字,对应Magic Words的《玩家名》
script - 和上面的一样
而在parser.pyd里,也就是script的数据结构,则是:
cdef dict[str, object] dt = {"who": None,"where": None,"say": {"name": None,"text": None},"bgm": None,"show": None,"if": {"ok": None,"title": None,"select num": None,"selects": None,"select": None,"if": None},"magic": 0,"python": '',"wsad": ''
}
其中:
who - 谁出现在屏幕上
where - 场景图片
say - name: 说话者的名字text: 说的话
bgm - 要播放的背景音乐
show - 转场方式
if - ok: 是否有支线title: 支线的描述,就是供编码者看的select num: 有几个支线选择selects: 支线的选项select: 我的支线选择if: 支线剧情
magic - 出现的魔法词
python - 出现的代码
wsad - 人物小移动
⭐所以说,只要符合这些形式,就可以被游戏所读取,也就是有特殊想法的用户可以根据这个数据结构自创编码环境。
⭐但是,我们最终的游戏模式,是每次都需要现场编译的,因为如果要发给别人的话,本来json里面存储的静态数据就用不了了。
⭐所以,.py文件实质上比.json文件重要;在工作模式,都是读取py文件;在游戏模式,也是读取py文件;.json文件就是个中间文件。
Ⅶ、DDMM的其它功能
(有些小按钮还未被提及)
在《<文件>》里:
《打开项目》:建议弃用,因为主界面已经有加载项目的按钮了,点这个很可能有未知的bug。
在《<帮助>》里:
《查看结构》:在打开一个项目后,点击查看结构,可以看见上述所说的数据结构,用以排查错误,以及预测运行状态。
《添加开场语》:就是开场会出现的那句话,大家有特殊需求可以修改。
在《<运行>》里:
《保存》:第一步,就是保存代码,一定要勤点!!!真的!!!
《解析》:第二步,就是把代码转换成数据结构,使之可以被screen识别。会检测一定的错误,检测出错误会出现弹框,然后请改正;没有弹框一般是对了。
《测试》:第三步,如果点前两步都没动静,那就可以点这个了,运行游戏mod。
《以上全部》:类似于依次点《保存》-《解析》-《测试》。不建议用,因为一旦前面的一步有错误,那就不可预知了。
在《已打开的项目》里:
建议:要先关闭当前项目,再切换项目!
在游戏里:
Tab键 -> 返回最近上次的选择点的前一幕。
Ⅷ、DDMM的清空内存
随着项目与存档的不断增多,有可能DDMM可能会占不必要的内存,这时候就要手动管理存档了。
请大家来到game/save这个文件夹里,里面就是每个项目所对应的存档点。
里面的不同编号对应的不同的存档点。
有需求清空即可。
Ⅸ、DDMM的案例讲解
主要就是DDOK1与DDOK的代码讲解。
DDOK代码:
# -*- coding: utf-8 -*- 讲解:井号之后的都是注释,注释就是不会被识别的东西
# -*- proj: DDOK -*-微笑说话的纱妮卡是3b+纱妮卡音乐起8*1Sayonika与3b+纱妮卡在morningclub说 大家好,我是纱妮卡,就让我来为大家介绍一下我们的文学部...
Sayori与p+2l+2r+纱世里、3e+纱妮卡在morningclub说 停停停!!!
*1Sayori与3a+纱世里在morningclub说 我还没点录像!
Sayori与3b+纱世里在morningclub说 哎嘿嘿。
Sayonika与c+1+纱妮卡在morningclub说 啊,好尴尬啊。
?与?在morningclub说 就这样,两个人慌慌张张地录了一上午。 #这里的两个问号的配合,#形成的效果是:自述
?与?在morningclub说 #这里的最后是没有文字的,说明对话框消失,为后来的场景转换做铺垫
音乐起6
出现时浮现Sayori与m+1l+2r+纱世里、a+1+纱妮卡在文学部说 啊,已经到中午了,要不然我们去吃点饭吧!
Sayonika与a+1l+1r+纱世里、b+2+纱妮卡在文学部说 好啊,最近新开了一家咖啡厅呢,我们去看看吧!
Sayori与r+2l+2r+纱世里、3a+纱妮卡在文学部说 好啊!
*1Sayori与r+2l+2r+纱世里在文学部说 Go Go Go!?与?在文学部说 #这里的最后是没有文字的,说明对话框消失,为后来的场景转换做铺垫出现时浮现
音乐起*dooropen
Sayonika与q+2l+1r+纱世里、e+2+纱妮卡在cafe说 就是这家了。
?与?在cafe说 放眼望去,好像看到了熟悉的身影。
音乐起natsuki
*1Sayori与s+2l+2r+纱世里在cafe说 夏树!
Sayori与s+2l+2r+纱世里在cafe说 怎么看见你在这摸鱼!
Natuski与p+1bl+2br+夏树、q+2l+2r+纱世里在cafe说 我我我
Natuski与v+1bl+1br+夏树、q+2l+2r+纱世里在cafe说 我才没有摸鱼呢!
Sayonika与o+1bl+1br+夏树、e+2+纱妮卡在cafe说 夏树真的好可爱!
*2Natuski与v+1bl+1br+夏树在cafe说 我才不可爱呢!
?与?在cafe说 真是美好的下午。
?与?在cafe说 饱餐一顿,就要回到文学部了。?与?在cafe说 #这里的最后是没有文字的,说明对话框消失,为后来的场景转换做铺垫出现时浮现
?与?在courtyard说 #这里的最后是没有文字的,说明对话框消失,为后来的场景转换做铺垫,但显示当前背景
出现时浮现
?与?在学校走廊说
?与?在文学部说 就这样又过了一个下午。
?与?在文学部说 但在上午的时候,那一边做了什么呢?调用DDOK1 #联合DDOK1的剧情。
DDOK1代码:
# -*- coding: utf-8 -*-
# -*- proj: DDOK1 -*-发呆的尤里是e+1l+1r+尤里音乐起8?与发呆的尤里、lam5+莫妮卡在mall_exterior_day说?
Monika与发呆的尤里、lam2+莫妮卡在mall_exterior_day说 一个小时了,夏树那小子怎么还不来。。
Monika与发呆的尤里、lam3+莫妮卡在mall_exterior_day说 你说对不对,尤里?
?与发呆的尤里、lam6+莫妮卡在mall_exterior_day说?
Monika与发呆的尤里、l+1l+2r+莫妮卡在mall_exterior_day说 哈哈哈尤里。
Yuri与d2+3+尤里、l+1l+2r+莫妮卡在mall_exterior_day说 我是不是错过了什么?!
Yuri与c2+3+尤里、l+1l+2r+莫妮卡在mall_exterior_day说 。
Yuri与c2+3+尤里、l+1l+2r+莫妮卡在mall_exterior_day说 。。
Yuri与c2+3+尤里、l+1l+2r+莫妮卡在mall_exterior_day说 。。。
?与?在mall_exterior_day说出现时浮现
?与?在mall_interior说 这个时候的夏树。
Natsuki与f+1l+1r+夏树在mall_interior说 莫妮卡和尤里那两个小子。
Natsuki与w+1l+2r+夏树在mall_interior说 居然整整迟到了一个小时!
Natsuki与h+2l+1r+夏树在mall_interior说 那我该怎么办呢?选择有3
1、去附近的咖啡店摸会鱼
Natsuki与d+1l+2r+夏树在mall_interior说 真是个好主意!
2、去商场外找她们
Natsuki与c+2l+1r+夏树在mall_interior说 感觉有点小累了。
3、不知道啊!
选择结束Natsuki与d+1l+2r+夏树在mall_interior说 那我姑且去咖啡厅坐着继续等吧!?与?在mall_interior说出现时浮现
?与?在cafe说
Natsuki与d+1l+1r+夏树在cafe说 一时摸鱼一时爽,一直摸鱼一直爽啊!
Natsuki与m+2l+1r+夏树在cafe说 等等。。。
Natsuki与p+1l+1r+夏树在cafe说 那个身影不是纱世里吗?
后记:
可惜的就是给我的自由时间不多,因为我回校之后要考非常多的证书和竞赛一个接一个,所以抽出这十多天的时间已经是一笔非常多的自由时间了。
正因为时间不是很多,所以只能做到这种程度了。我相信写个简简单单的mod是完全没问题的。
写的这个小工具,确实是让我学到了不少东西,也让我挑战了自己的小技术的极限。
还请多多理解。
这段时间也是我比较开心的时间,因为没有被任何功利的事务所烦恼。
我非常珍惜这段时间。
如果有人用的话,我也会根据反馈来更新程序。
如果之后还有大规模的自由时间的话,我是想更新一下游戏技术,可能以后就不用pygame来写东西了(pygame的限制太多了,想写个人视觉小说的话还是用renpy吧)。
ALL OVER
window.pyd: 800+ Line
screen.pyd: 2000+ Line
parser.pyd: 600+ Line
from 2025.01.19 to 2025.02.01
DDMM END
我们的色彩永远留在彼此的花园里