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

Project1

 找回密码
 注册会员
搜索

游戏起名器【小周实践系列第一季第三弹】

查看数: 2902 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-5-25 12:24

正文摘要:

【小周实践系列第一季第三弹】 游戏起名器的制作方法。 这次教大家如何制作一个最简单的游戏起名器。 首先介绍一个方法 rand(n) 它的功能是取随机数。 rand(5)有可能是0、1、2、3、4,注意不包括5。 然后可以开始 ...

回复

fux2 发表于 2014-5-25 13:14:40

这种东西就不要用全局变量了,全局污染什么的……而且没有管理你自己的命名,像$one$two这种名字
很多脚本都在用的,到时候冲突发生用户还不知道怎么回事。
另外最好不要在方法里就指定给一个变量赋值,这样这个方法局限性太大。
用返回值好了。
给你示范一下,就用正气君作为命名空间。

RUBY 代码复制
  1. module ZhengQi
  2.   NAME_PART1 = ["疾风","烈焰","狂雷","飞天","旋风"]
  3.   NAME_PART2 = ["升龙","裂空","惊涛","三连","圣灵"]
  4.   NAME_PART3 = ["斩","击","拳","刺","爪"]
  5.  
  6.   def self.get_weapon_name
  7.     ret = NAME_PART1[rand(NAME_PART1.size)]
  8.     ret += NAME_PART2[rand(NAME_PART2.size)]
  9.     ret += NAME_PART3[rand(NAME_PART3.size)]
  10.     return ret
  11.   end
  12. end


以上是送给正气君的命名空间

用法
RUBY 代码复制
  1. $game_variables[1] = ZhengQi.get_weapon_name

点评

无示范性。  发表于 2014-5-25 13:22
我以前写过一个就是用模块,果然这次用全局变量误导了 - -  发表于 2014-5-25 13:21
不过我还是喜欢collect{...}.join,能少打很多重复代码  发表于 2014-5-25 13:20

评分

参与人数 2星屑 +160 收起 理由
怪蜀黍 + 150 参与讨论奖励+module ZhengQi(Tai)
taroxd + 10 我很赞同

查看全部评分

taroxd 发表于 2014-5-25 13:43:19
本帖最后由 taroxd 于 2014-5-25 13:59 编辑

补充上那些1.8没有的方法的简化版~

RUBY 代码复制
  1. class Symbol
  2.   # Ruby1.9 之后自带这个定义,并且比这个更加完善,支持带参数的调用
  3.   def to_proc
  4.     Proc.new {|obj| obj.send(self) }
  5.   end
  6. end
  7.  
  8. class Array
  9.   # 随机取出一个元素。默认脚本中的sample(n)可以随机取出n个元素
  10.   def sample
  11.     slice rand size
  12.   end
  13. end
  14.  
  15. module ZhengQi
  16.  
  17.   NAME_LIST = [
  18.     %w[疾风 烈焰 狂雷 飞天 旋风],
  19.     %w[升龙 裂空 惊涛 三连 圣灵],
  20.     %w[斩 击 拳 刺 爪]
  21.   ]
  22.  
  23.   # 将之后定义的方法设为private,并复制成一个模块方法
  24.   # 这方法1.8有没有呢………………
  25.   module_function
  26.  
  27.   def make_name
  28.     NAME_LIST.collect(&:sample).join
  29.   end
  30.  
  31. end
  32.  
  33. # 这样一来,事件脚本里就可以省略“ZhengQi.”了
  34. # 参考Ruby的Math模块
  35. class Game_Interpreter
  36.   include ZhengQi
  37. end

评分

参与人数 1星屑 +150 收起 理由
怪蜀黍 + 150 补充奖励

查看全部评分

taroxd 发表于 2014-5-25 13:02:17
本帖最后由 taroxd 于 2014-5-25 13:07 编辑

为啥用全局变量不用常量
为啥不用Array#sample方法(不知道Ruby1.8.2有这个方法没有)

我一定会这么写

RUBY 代码复制
  1. # class...
  2. NAME_LIST = [
  3.   ["疾风","烈焰","狂雷","飞天","旋风"],
  4.   ["升龙","裂空","惊涛","三连","圣灵"],
  5.   ["斩","击","拳","刺","爪"]
  6. ]
  7. def make_name
  8.   NAME_LIST.collect(&:sample).join
  9. end


就是ruby版本是个问题啊……支持Symbol#to_proc好像就得1.9

另外,标题建议改为“通用发布”

点评

没有sample但是我一直都是自己定义了sample  发表于 2014-5-25 22:27
RMXP里面没用collect!5555 忽然想起来以前在书上见过collect,不过忘了怎么用 ------------  发表于 2014-5-25 13:26
反正都是我代码强迫症的错  发表于 2014-5-25 13:25
咳咳,collect这个方法默认脚本一直在用的吧……数组最常用方法之一啊。 悄悄的说一声,平时为了省字数我一般会用map  发表于 2014-5-25 13:24
........还是ruby书看的太少,都不知道有collect这个方法  发表于 2014-5-25 13:23

评分

参与人数 1星屑 +175 收起 理由
怪蜀黍 + 175 参与讨论奖励+为了省字数map点赞.

查看全部评分

日月星辰 发表于 2014-5-25 12:55:55
起名无能的表示:

我就是连“疾风”“烈焰”这种都起不出来啊!= =
chd114 发表于 2014-5-25 12:45:40
如果数组太大···岂不是要逆天···不能用txt导入吗?

点评

好主意 !  发表于 2014-5-25 12:52
蓝儿 发表于 2014-5-25 12:42:17
事实上。。。能用来干什么!

点评

起名……  发表于 2014-5-25 12:43
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2025-6-11 02:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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