Project1
标题:
问题又来了,写脚本时遇到的问题
[打印本页]
作者:
945127391
时间:
2011-2-14 20:15
标题:
问题又来了,写脚本时遇到的问题
本帖最后由 945127391 于 2011-2-15 20:53 编辑
最近正在努力学习脚本当中,有些问题查过F1找不到答案,就只好来论坛发帖提问了。
1.“@@"开头的变量和"@"开头的变量有什么不同?
2.可以在场景中随时更改窗口的长和宽吗?
3.怎样去更改游戏中的字体?如我的游戏默认是宋体,但我想在窗口描绘的时候把字体改为其他的字体,该怎么做?
4.怎样去判断是否已经有某个文件夹?
5.怎样把一些文字写进一个记事本文档中?
6.怎样做出一开始只是一个窗口,按下回车键后出现一个Window_Command的选项窗口?
暂时就只有这么多了,辛苦大家了,谢谢啦!
作者:
蕾米莉亚·斯卡雷特
时间:
2011-2-14 20:40
本帖最后由 蕾米莉亚·斯卡雷特 于 2011-2-14 20:45 编辑
class A
@@a = 1
def initialize
@b = 2
end
def a
return @@a
end
def a=(n)
@@a = n
end
def b
return @b
end
def b=(n)
@b = n
end
end
a1 = A.new
a2 = A.new
p a1.a
a2.a = 10
p a1.a
a1.b = 15
p a2.b
exit
复制代码
[line]1[/line]
Bitmap:
属性font
使用draw_text方法描绘字符串时所使用的字体。(Font 字型类)。
[line]1[/line]
fp = File.open("a.txt", "w")
fp.write("123")
fp.close
复制代码
作者:
DeathKing
时间:
2011-2-14 20:47
@@是类变量,而@是实例变量,两个变量的作用范围不同。类变量就像这个地球一样,是大家(同一个类的实例)共有的,我如果改变了地球,对于别人来说,地球同样受到改变。而实例变量就只是对实例本身,也就是我手上有100元,你手上有200元,我花光了,你身上还是有200元。
class Human
@@count = 0
attr_accessor :name
def initialize(name)
@name = name
@@count += 1
end
def count
return @@count
end
end
p lz = Human.new("945127391")
p lz.count #=> 1
p me = Human.new("DeathKing")
p lz.name #=> 945127391
p me.name #=> DeathKing
p lz.count #=> 2
p me.count #=> 2
复制代码
2、只要开放了width=方法和height=方法就行,通常的,设置x=或y=都可以。因为Window类里面把这些都给弄好了,因此,只要是继承自Window类或其子类,都可更改。
3、self.contents.font.name = "" 确保是在窗体对象中操作。
在Window_MenuStatus的refresh方法的self.contents.clear后面加上这句:self.contents.font.name = "宋体" ,并运行游戏,点开菜单,看看变化。
其他的之前都有讨论,我这里还有点事,就不一一解答了。下次不要一贴多问了,而且提问之前最好先检索一下看有没有类似的讨论。
作者:
一箭烂YiJL
时间:
2011-2-14 23:06
其他的上面两位前辈答了,于是答其他的:
写入txt方法:
file = File.open("ABC/text.txt","w") # 必须预先有ABC文件夹,否则出错
file.puts("a") # 写入
file.close # 结束写入
复制代码
上面这样会文件就会有a一个字符。
先说说这个语法:
File.open(路径,开启方式)
开启方式默认值为 "r"。
"r" :以读取模式打开文件。
"w":以写入模式打开文件。打开时若文件已存在,则会删除文件内容。
"a" :以写入模式打开文件。输出写入的内容一定会附在文件的结尾部分。
使用 "+" 时就以读写模式(RDWR)打开文件:
"r+" :将读写的位置设置在文件开头的部分。
"w+":与"r+"相同,打开时若文件已存在,则会删除文件内容。
"a+" :与"r+"相同,打开时若文件已存在,则会将读写的位置设置在文件尾的部分。
如果用"rb"、"wb"、"ab"的话,会用了二进制模式打开文件,
就是"wb"的时候就会一行式储存数据。
而每次用"w"puts会换行,使用"wb"会一行式。
而在initialize里:
@window = Window_Command
@window.visible = false
复制代码
update里:
@window.visible = true if Input.trigger?(Input::C)
复制代码
作者:
summer92
时间:
2011-2-15 11:58
- -变量,我试试
@开头的话是 局部变量 就是使用范围是类的内部
@@开头的是 全局变量 就是只要程序运行了 被创建之后就一直存在
作者:
一箭烂YiJL
时间:
2011-2-15 17:55
回复
summer92
的帖子
哎~:
1.无任何符号的是局部变量,
2.带@是实例变量,
3.带@@的是类变量,
4.带$的才是全局变量!
5.而伪变量中最常见的是self。
让我说说他们的特性:
1.最普通的局部变量可以说是哪里建立就哪里使用,函数(方法)里建立就限于该函数(方法)。
2.实例变量比如@x配合attr_accessor :x/attr_reader :x/attr_writer :x使用,
就能在类中一小圆点"."中传达、提取、使用。
3.类变量是在一个类(class)得到名字后,如:
a_a = a.new;a_b = a.new
那么a_a和a_b都有控制a类里类变量的权利,而a_a和a_b所控制的类变量是同一个变量。
就是类变量是所有被创建出来的a类都拥有的"同一个"变量。
4.全局变量$可被应用于任何地方,但不要乱取名,以免覆盖情况。
5.伪变量只说最常见的self,self是代替本体的意思,就是"伪"的意思(代替)。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1