设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2165|回复: 8
打印 上一主题 下一主题

[胡扯] 封装

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3570
在线时间
3064 小时
注册时间
2011-11-17
帖子
980
跳转到指定楼层
1
发表于 2014-1-11 21:53:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
刚接触脚本很容易写出这样的代码
  1.    xx = "aaaa"     
  2.    self.contents.draw_text(27, 20, 100, 32, xx)
  3.    xx = "bbbb"
  4.    self.contents.draw_text(27, 40, 100, 32, xx)
  5.    xx = "cccc"
  6.    self.contents.draw_text(27, 60, 100, 32, xx)
  7.    xx = "dddd"
  8.    self.contents.draw_text(27, 80, 100, 32, xx)
复制代码
如果东西再多点 脚本会无比长的赶脚 观察下这脚本好多重复的地方 于是乎把关键的地方抽出来可以写成这样
  1. tex =["aaaa","bbbb","cccc","dddd"]
  2. for i in 0..tex.size
  3.   self.contents.draw_text(27, 20*i+20, 100, 32, tex[i])
  4. end
复制代码
但发现后面很多地方要调用类似的功能 比如
  1.    xx = "aaaa"     
  2.    self.contents.draw_text(33, 10, 110, 32, xx)
  3.    xx = "bbbb"
  4.    self.contents.draw_text(33, 40, 110, 32, xx)
  5.    xx = "cccc"
  6.    self.contents.draw_text(33, 70, 110, 32, xx)
  7.    xx = "dddd"
  8.    self.contents.draw_text(33, 100, 110, 32, xx)
复制代码
这样每次写个for循环也很烦 于是就要写个函数
  1. def drawtex(tex,x,y,w,h,starty)
  2.   for i in 0..tex.size
  3.     self.contents.draw_text(x, y*i+starty, w, h, tex[i])
  4.   end
  5. end
复制代码
现在用起来调用函数 方便多了 又不小心遇到了如下的情况 y变随机了
  1.    xx = "aaaa"     
  2.    self.contents.draw_text(33, 33, 110, 32, xx)
  3.    xx = "bbbb"
  4.    self.contents.draw_text(33, 40, 110, 32, xx)
  5.    xx = "cccc"
  6.    self.contents.draw_text(33, 20, 110, 32, xx)
  7.    xx = "dddd"
  8.    self.contents.draw_text(33, 70, 110, 32, xx)
复制代码
还是老样子 抽出关键的地方
y= [33,40,20,70]
  1. def drawtex(tex,x,y,w,h)
  2.   for i in 0..tex.size
  3.     self.contents.draw_text(x, y[i], w, h, tex[i])
  4.   end
  5. end
复制代码
调用drawtex(tex,33,y,110,32)

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
2
发表于 2014-1-11 21:56:40 | 只看该作者
脚本盲表示头疼

点评

这貌似是很初级的api  发表于 2014-1-11 21:59
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
20
星屑
1840
在线时间
6925 小时
注册时间
2012-12-14
帖子
11485

短篇十战斗者组别冠军开拓者贵宾短篇九勇士组亚军

3
发表于 2014-1-11 22:11:55 | 只看该作者
请问这个脚本有什么作用吗?
输出文本,封装内容?

点评

没实际作用 只是举个例子 写脚本的一种习惯  发表于 2014-1-11 22:13
大家好,这里是晨露的说。请多多指教。
刚入门RM软件制作,请大家多多帮助我哦。
落雪君的欢乐像素教程,欢迎查阅。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

4
发表于 2014-1-12 00:14:14 | 只看该作者
这脚本是用来演示用的,目的是告诉我们什么叫封装并且提供一种写代码的思路,就是更简洁,更容易,更实用
lz提供的思路是:1.寻找已知代码重复的地方,利用它做成方法
2.无顺序怎么办,数组来帮忙
个人补充:3.就示范脚本的方法来说,真正有用的参数是x,y,tex,而w,h可以通过已知方法得到(具体我忘了 要翻f1 或者直接str.length*32←_←),还有for可以换成each,具体如下:(参数什么的)
def drawtexs(*aaaaa)
  raise ArgumentError,"好像有什么不对" if  *aaaaa.empty?
  # 参数规定: 数组形式[x,y,tex]不限制个数
  # 你可以drawtexs([1,1,"a"],[33,33"b"])往后写无数个 注意引号不能少
  *aaaaa.each do |aaa|
    self.contents.draw_text(aaa[0],aaa[1],w,h,aaa[2])#这里的w,h是我不清楚那个预制方法 所以直接复制运行会引发未知方法错误哟(pia
  end
end
这样就完成了

点评

*aaaaa.empty?卖的一手好萌……  发表于 2014-1-12 18:59

  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2744
在线时间
2630 小时
注册时间
2013-1-16
帖子
5657

贵宾

5
发表于 2014-1-12 00:58:09 | 只看该作者
直接说"自顶而下,逐步求精"不是更简单一些(虽然很多人不知道这是什么意思)
(Created by @喵kano)


施工现场:hotege.github.io
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
6
发表于 2014-1-12 19:05:39 | 只看该作者
最后脚本er逐渐变得丧心病狂,最后……
  1. text=RGSSTextWriter.new(0,0,10,10,"1","258"...)
  2. text.binding = self.contents
  3. text.show(0)
  4. text.showall_inorder(0,20)
  5. text.showall_inorder do |str,i|
  6.   [0,[40,70,90,30].[](i),*TextMeasure.call(str),str]
  7. end
  8. #......
复制代码
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

7
发表于 2014-1-12 21:16:51 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

  /) /)<

梦石
0
星屑
4212
在线时间
4890 小时
注册时间
2009-2-16
帖子
8434

开拓者短篇七成年组季军

8
发表于 2014-1-12 21:57:05 | 只看该作者
这头像真鬼畜……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3846
在线时间
1966 小时
注册时间
2013-1-3
帖子
9536
9
发表于 2014-1-13 08:52:19 | 只看该作者
受教了,以前一直以为第3个是最简的,原来定义函数就可以
《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-10-1 01:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表