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 编辑
  1. class A
  2.   @@a = 1
  3.   
  4.   def initialize
  5.     @b = 2
  6.   end
  7.   
  8.   def a
  9.     return @@a
  10.   end
  11.   
  12.   def a=(n)
  13.     @@a = n
  14.   end
  15.   
  16.   def b
  17.     return @b
  18.   end
  19.   
  20.   def b=(n)
  21.     @b = n
  22.   end
  23.   
  24. end

  25. a1 = A.new
  26. a2 = A.new

  27. p a1.a

  28. a2.a = 10
  29. p a1.a

  30. a1.b = 15
  31. p a2.b

  32. exit
复制代码
[line]1[/line]
Bitmap:

属性font
使用draw_text方法描绘字符串时所使用的字体。(Font 字型类)。

[line]1[/line]
  1. fp = File.open("a.txt", "w")

  2. fp.write("123")

  3. fp.close
复制代码

作者: DeathKing    时间: 2011-2-14 20:47
@@是类变量,而@是实例变量,两个变量的作用范围不同。类变量就像这个地球一样,是大家(同一个类的实例)共有的,我如果改变了地球,对于别人来说,地球同样受到改变。而实例变量就只是对实例本身,也就是我手上有100元,你手上有200元,我花光了,你身上还是有200元。

  1. class Human
  2.   @@count = 0
  3.   attr_accessor :name
  4.   def initialize(name)
  5.     @name = name
  6.     @@count += 1
  7.   end
  8.   def count
  9.     return @@count
  10.   end
  11. end

  12. p lz = Human.new("945127391")
  13. p lz.count #=> 1
  14. p me = Human.new("DeathKing")
  15. p lz.name #=> 945127391
  16. p me.name #=> DeathKing
  17. p lz.count #=> 2
  18. 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方法:
  1. file = File.open("ABC/text.txt","w")    # 必须预先有ABC文件夹,否则出错
  2. file.puts("a")                          # 写入
  3. file.close                              # 结束写入
复制代码
上面这样会文件就会有a一个字符。
先说说这个语法:
File.open(路径,开启方式)
开启方式默认值为 "r"。
"r"  :以读取模式打开文件。
"w":以写入模式打开文件。打开时若文件已存在,则会删除文件内容。
"a" :以写入模式打开文件。输出写入的内容一定会附在文件的结尾部分。
使用 "+" 时就以读写模式(RDWR)打开文件:
"r+" :将读写的位置设置在文件开头的部分。
"w+":与"r+"相同,打开时若文件已存在,则会删除文件内容。
"a+" :与"r+"相同,打开时若文件已存在,则会将读写的位置设置在文件尾的部分。
如果用"rb"、"wb"、"ab"的话,会用了二进制模式打开文件,
就是"wb"的时候就会一行式储存数据。
而每次用"w"puts会换行,使用"wb"会一行式。

而在initialize里:
  1. @window = Window_Command
  2. @window.visible = false
复制代码
update里:
  1. @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