Project1

标题: [RM中级技术] 如何实现字体自动变色[教学翻译] [打印本页]

作者: frantice    时间: 2006-8-4 17:50
标题: [RM中级技术] 如何实现字体自动变色[教学翻译]
教学翻译
说明:因为超过本人能力范围,所以翻译错误的个别字句请自行更正。

作者: slipknot
国籍:哥斯达黎加
翻译:frantice


我们都知道要改变文章字体颜色的时候,我们只需要输入\c[#] 就行了。
但是问题来了,当我们在游戏中要经常要使用某个字,比如说,stone, 它的颜色一直要是蓝色的, 那总不能总是插入\c[1]stone\c[0], 这样吧,那真得会累死人的。
好,这样我们就来学习怎么样让这个恐怖的工作变得轻松有效^0^我们来看Window_Message的这行:
大约在84-86行左右有这样的句子:
text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
我们在它下面插入下面这行:
text.gsub!(/(stone)/) { "\\c[1]#{$1}\\c[0]" }

好了,这样就达到效果了~

解释:
Text是变量, 包含当前信息
gsub! 是用来替换子字符的字符串方法
/(stone)/ 是正则表达(Regular Expression.原来一直没改过来), 一个正则表达必须在符号'/'里面. 括号用来指示字符串里面的内容在后面会用到.
"\\c[1]#{$1}\\c[0]" 是双重引用的字符串
第一部分(\\c[1]) 代表文字编辑窗口的\C[1] . 第二部分 (#{$1}) 用来在字符串中插入变量. 这个例子中是变量$1, 这个变量包括了匹配的最后一个字符串.
第三部分和第一部分一样, 但是它返回到了普通文字颜色.

这样每次我们在文章中输入stone, 它都会显示蓝色. 不过我们如果用Stone的话,它就不会有任何变化了.  
那怎么办呢?
把刚才的替换为:
text.gsub!(/([Ss]tones?)/) { "\\c[1]#{$1}\\c[0]" }

看下这个[Ss], 它的作用就是当ruby找到一个"S" 或"s" ,后面跟着tone 或 tones, 它就会匹配它们并描绘他们的颜色.
这个?(问号)就是用来处理匹配或者不匹配先前的文字.

为了证明,我们来输入文章: Stones, stones, stone, Stone. 我们就能看到:
截图略!!


我们也可以用这样的表达来匹配不同的单词.
text.gsub!(/([Ss]tr?o[kn]es?)/) { "\\c[3]#{$1}\\c[0]" }

它可以延伸出stone stones Stone Stones Stroke Stoke stokes... 等等单词,并都给它们描上兰色.



翻译的话:
为了测试中文是否依然有效, 我也专门测试了一遍, 谢天谢地, 能用^0^
代码: text.gsub!(/(石头)/) { "\\c[3]#{$1}\\c[0]" }

截图略!!
作者: frantice    时间: 2006-8-4 17:50
标题: [RM中级技术] 如何实现字体自动变色[教学翻译]
教学翻译
说明:因为超过本人能力范围,所以翻译错误的个别字句请自行更正。

作者: slipknot
国籍:哥斯达黎加
翻译:frantice


我们都知道要改变文章字体颜色的时候,我们只需要输入\c[#] 就行了。
但是问题来了,当我们在游戏中要经常要使用某个字,比如说,stone, 它的颜色一直要是蓝色的, 那总不能总是插入\c[1]stone\c[0], 这样吧,那真得会累死人的。
好,这样我们就来学习怎么样让这个恐怖的工作变得轻松有效^0^我们来看Window_Message的这行:
大约在84-86行左右有这样的句子:
text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
我们在它下面插入下面这行:
text.gsub!(/(stone)/) { "\\c[1]#{$1}\\c[0]" }

好了,这样就达到效果了~

解释:
Text是变量, 包含当前信息
gsub! 是用来替换子字符的字符串方法
/(stone)/ 是正则表达(Regular Expression.原来一直没改过来), 一个正则表达必须在符号'/'里面. 括号用来指示字符串里面的内容在后面会用到.
"\\c[1]#{$1}\\c[0]" 是双重引用的字符串
第一部分(\\c[1]) 代表文字编辑窗口的\C[1] . 第二部分 (#{$1}) 用来在字符串中插入变量. 这个例子中是变量$1, 这个变量包括了匹配的最后一个字符串.
第三部分和第一部分一样, 但是它返回到了普通文字颜色.

这样每次我们在文章中输入stone, 它都会显示蓝色. 不过我们如果用Stone的话,它就不会有任何变化了.  
那怎么办呢?
把刚才的替换为:
text.gsub!(/([Ss]tones?)/) { "\\c[1]#{$1}\\c[0]" }

看下这个[Ss], 它的作用就是当ruby找到一个"S" 或"s" ,后面跟着tone 或 tones, 它就会匹配它们并描绘他们的颜色.
这个?(问号)就是用来处理匹配或者不匹配先前的文字.

为了证明,我们来输入文章: Stones, stones, stone, Stone. 我们就能看到:
截图略!!


我们也可以用这样的表达来匹配不同的单词.
text.gsub!(/([Ss]tr?o[kn]es?)/) { "\\c[3]#{$1}\\c[0]" }

它可以延伸出stone stones Stone Stones Stroke Stoke stokes... 等等单词,并都给它们描上兰色.



翻译的话:
为了测试中文是否依然有效, 我也专门测试了一遍, 谢天谢地, 能用^0^
代码: text.gsub!(/(石头)/) { "\\c[3]#{$1}\\c[0]" }

截图略!!
作者: frantice    时间: 2006-8-4 18:06
暑假教学翻译系列基本结束了{/ka}

转载挺没意思的……全部学来成为自己的知识要紧。



作者: mcangel    时间: 2006-8-4 18:45
这个很简单又很实用~赞~{/qiang}
作者: 柳柳    时间: 2006-12-14 21:10
其实很有用
正则表达式也可以直接把一个字符串换成另一个
比如游戏快完成了想更换主角性命,不妨用这个方法{/tp}
作者: duzhi5368    时间: 2006-12-15 21:04
请问可以进行字符串数组的自定义么{/fd}
作者: friday5xue    时间: 2006-12-19 00:21
要是有原连接就好了~~~{/se}
看看原文~~~也可以锻炼下,自己的英文词汇




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1