Project1

标题: 在窗口中读取TXT文件,如何把txt内容输出在窗口中? [打印本页]

作者: new1984    时间: 2008-10-13 21:23
标题: 在窗口中读取TXT文件,如何把txt内容输出在窗口中?
类似于字幕脚本吧,不过要循环txt内容,而且是打开菜单自动在窗口中出现,不需要scene吧?


刚看了主站上的读取 txt 教程,可惜范例不能下... 就是那个单词游戏{/dk}


  1. f = File.open("*.txt")
  2. ls=f.readlines

  3. for i in 0...ls.size

  4. end
复制代码


在这个循环中,怎么把读到的内容输出在窗口 并且 读完再执行这个循环???{/gg} [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: trentswd    时间: 2008-10-13 21:53
……没研究过file类

不过如果是在窗口中显示的话,假设f是保存文本的字符串,那么就用slice!(/./m)每次取一个字符,然后在0,0处显示,显示完增加x坐标【假设c是取的字符,那么就增加contents.text_size(c).width】,让第二个字在第一个字后面显示,当每行的像素接近contents的宽度时就换行,加y值,遇到/n时也换行……这样循环……大概就是这样…… [LINE]1,#dddddd[/LINE]版主对此帖的认可:『与先前被删帖子中补回100积分。』,积分『+100』。 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: new1984    时间: 2008-10-13 22:18
谢谢回答,如果字符较多,这样处理会不会有点....

我琢磨得换一种做法....但是似乎本事不够,把字幕改了很多遍 都不行.
菜单界面下方 会有一个小窗口,显示游戏帮助(window_help?)...这个样子{/dk}
作者: trentswd    时间: 2008-10-13 22:26
Window_help默认只有一行……所以……不需要考虑换行……自然不用一个一个提取……
txt过大的话,就分段读取吧……

其实http://rpg.blue/web/htm/news790.htm这个比较好……
作者: new1984    时间: 2008-10-13 22:36
书馆这个我试过.....问题还在于自动输出在窗口......


  突然冒出个想法,不知道行不行:{/gg}就是在呼出菜单的时候同时呼出书馆界面(当然会修改成我要的窗口大小),这个如果可行的话,难度就不大了.......{/dk}
作者: trentswd    时间: 2008-10-13 23:13
如果你只是要help_window来显示帮助的话……2l的方法就可以了……脚本效率足够处理完

书馆不要用它的窗口啊……把他提取文本的方法弄下来就可以……不过看了看貌似也是那方法……
作者: new1984    时间: 2008-10-13 23:26
把字幕的脚本改了, 把透明设了,字幕却不出?
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================

  4. #——————————————————————————————————————
  5. # Scene_Credit 制作人员名单
  6. #——————————————————————————————————————


  7. #——使用注意:默认会返回地图,如果需要返回开头,请将本脚本中的
  8. #return_scene = Scene_Map.new改为return_scene = Scene_Title.new

  9. class Scene_Credit
  10.   CREDIT=<<_END_
  11. -----Cast------

  12. 制作工具:RPG Maker XP

  13. 先帝创业未半而中道崩殂
  14. 今天下三分,益州疲弊
  15. 此诚危急存亡之秋也
  16. 然侍卫之臣不懈于内,忠志之士忘身于外者
  17. 盖追先帝之殊遇,欲报之于陛下也
  18. 诚宜开张圣听,以光先帝遗德,恢弘志士之气
  19. 不宜妄自菲薄,引喻失义,以塞忠谏之路也

  20. 宫中府中,俱为一体,陟罚臧否,不宜异同
  21. 若有作奸犯科及为忠善者
  22. 宜付有司论其刑赏,以昭陛下平明之理
  23. 不宜偏私,使内外异法也。
  24. 侍中侍郎郭攸之、费祎、董允等
  25. 此皆良实,志虑忠纯,是以先帝简拔以遗陛下
  26. 愚以为宫中之事,事无大小,悉以咨之,然后施行
  27. 必能裨补阙漏,有所广益。


  28. _END_
  29. end

  30. class Scene_Credit

  31.   def initialize(return_scene = nil)
  32.     @bh = Window_Bh.new
  33.     if return_scene.nil?
  34.       return_scene = Scene_Map.new
  35.     end
  36.     @return_scene = return_scene
  37.   end
  38.   
  39.   def scene_start
  40.     credit_lines = CREDIT.split(/\n/)
  41.     credit_bitmap = Bitmap.new(640,32 * credit_lines.size)
  42.     credit_lines.each_index do |i|
  43.       line = credit_lines[i]
  44.       credit_bitmap.draw_text(0,i * 32,640,32,line,1)
  45.     end
  46.     @credit_sprite = Sprite.new(Viewport.new(0,50,640,380))
  47.     @credit_sprite.bitmap = credit_bitmap
  48.     @credit_sprite.oy = -430
  49.     @frame_index = 0
  50.     @last_flag = false
  51.   end

  52.   def scene_end
  53.     @credit_sprite.dispose
  54.   end
  55.   
  56.   def last?
  57.     return (@frame_index >= @credit_sprite.bitmap.height + 480)
  58.   end
  59.   
  60.   def last
  61.     if not @last_flag
  62.       Audio.bgm_fade(10000)
  63.       @last_flag = true
  64.       @last_count = 0
  65.     else
  66.       @last_count += 1
  67.     end
  68.     if @last_count >= 300
  69.       $scene = @return_scene
  70.     end
  71.   end
  72.   
  73.   def update
  74.     @frame_index += 1
  75.     return if cancel?
  76.     last if last?
  77.     @credit_sprite.oy += 1
  78.   end

  79.   def cancel?
  80.     if Input.trigger?(Input::B)
  81.       $scene = @return_scene
  82.       return true
  83.     end
  84.     return false
  85.   end

  86.   def main
  87.     scene_start
  88.     # 过渡
  89.     Graphics.transition
  90.     # 主循环
  91.     loop do
  92.       Graphics.update
  93.       Input.update
  94.       update
  95.       if $scene != self
  96.         break
  97.       end
  98.     end
  99.     # 准备过渡
  100.     @bh.dispose
  101.     Graphics.freeze
  102.     scene_end
  103.   end
  104.   class Window_Bh < Window_Base
  105.     def initialize
  106.       super(100,246,480,235)
  107.       self.contents = Bitmap.new(width - 32, height - 32)
  108.       self.opacity =0
  109.       refresh
  110.     end
  111.     def refresh
  112.     end
  113.   end
  114. end
复制代码








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