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

Project1

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

[已经解决] 自己写了一段配方类的脚本,MS有错自己又找不出来求改正

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2008-6-13
帖子
99
跳转到指定楼层
1
发表于 2011-2-9 20:55:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
话说那个recipe似乎是食谱= =
主代码在下面
  1. class TCItem
  2.   attr_accessor :kind
  3.   attr_accessor :num
  4.   attr_accessor :amount
  5.   def initialize(kind, num, amount)
  6.     @kind = kind
  7.     @num = num
  8.     @amount = amount
  9.   end
  10.   def kind
  11.     return @kind
  12.   end
  13.   def kind=(newkind)
  14.     @kind = newkind
  15.   end
  16.   def num
  17.     return @num
  18.   end
  19.   def num=(newnum)
  20.     @num = newnum
  21.   end
  22.   def amount
  23.     return @amount
  24.   end
  25.   def amount=(newamount)
  26.     @amount = newamount
  27.   end
  28.   def gain
  29.     if @kind = 1
  30.       $game_party.gain_item(@num, @amount)
  31.     elsif @kind = 2
  32.       $game_party.gain_weapon(@num, @amount)
  33.     elsif @kind = 3
  34.       $game_party.gain_armor(@num, @amount)
  35.     elsif @kind = 0
  36.       $game_party.gain_gold(@amount)
  37.     end
  38.   end
  39.   def lose
  40.     if @kind = 1
  41.       $game_party.lose_item(@num, @amount)
  42.     elsif @kind = 2
  43.       $game_party.lose_weapon(@num, @amount)
  44.     elsif @kind = 3
  45.       $game_party.lose_armor(@num, @amount)
  46.     elsif @kind = 0
  47.       $game_party.lose_gold(@amount)
  48.     end
  49.   end  
  50.   def to_string
  51.     if @kind = 1
  52.       return $data_item[@num].name + "(物品) × " + @amount.to_s
  53.     elsif @kind = 2
  54.       return $data_weapon[@num].name + "(武器) × " + @amount.to_s
  55.     elsif @kind = 3
  56.       return $data_armor[@num].name + "(防具) × " + @amount.to_s
  57.     elsif @kind = 0
  58.       return "金钱 " + @amount.to_s + " " + $data_system.words.gold
  59.     end   
  60.   end
  61.   def is_had
  62.     if @kind = 1
  63.       return $game_party.item_number(@num) >= @amount
  64.     elsif @kind = 2
  65.       return $game_party.weapon_number(@num) >= @amount
  66.     elsif @kind = 3
  67.       return $game_party.armor_number(@num) >= @amount
  68.     elsif @kind = 0
  69.       return $game_party.gold >= @amount
  70.     end
  71.   end
  72. end

  73. class TCRecipe
  74.   attr_accessor :materialkinds
  75.   attr_accessor :material
  76.   attr_accessor :productkinds
  77.   attr_accessor :product
  78.   attr_accessor :name
  79.   def initialize(name, ms, ps)
  80.     @name = name
  81.     @material = ms
  82.     @product = ps
  83.     @materialkinds = ms.length
  84.     @productkinds = ps.length
  85.   end
  86.   def name
  87.     return @name
  88.   end
  89.   def list_of_material
  90.     if @materialkinds = 0
  91.       return "无"
  92.     elsif @materialkinds = 1
  93.       return @material[1].to_string
  94.     else
  95.       q = ""
  96.       @material.each{|unit| q << (unit.to_string + " ")}
  97.       return q.strip
  98.     end
  99.   end
  100.   def list_of_product
  101.     if @productkinds = 0
  102.       return "无"
  103.     elsif @productkinds = 1
  104.       return @product[1].to_string
  105.     else
  106.       q = ""
  107.       @product.each{|unit| q << (unit.to_string + " ")}
  108.       return q.strip
  109.     end
  110.   end
  111.   def is_can_use
  112.     q = true
  113.     @material.each{|unit| q = q and unit.is_had}
  114.     return q
  115.   end
  116.   def use_it
  117.     @material.each{|unit| unit.lose}
  118.     @product.each{|unit| unit.gain}
  119.   end
  120. end
复制代码
测试时的代码是这样
  1. a1 = TCItem.new(1, 1, 3)
  2. a2 = TCItem.new(1, 2, 1)
  3. a3 = TCItem.new(0, 0, 1000)
  4. b1 = TCItem.new(1, 3, 1)
  5. b2 = TCItem.new(2, 1, 1)
  6. b3 = TCItem.new(3, 1, 1)
  7. a = [a1, a2, a3]
  8. b = [b1, b2, b3]
  9. $reci = TCRecipe.new("test", a, b)
  10. p $reci.name
  11. p $reci.is_can_use
  12. p $reci.list_of_material
  13. p $reci.list_of_product
复制代码
结果打印出来的结果是
"test"
true
"无"
"无"
也就是说"原料"数组和“成品”数组没有被读入

求高手挑刺,到底是哪里出了问题
美工是什么?我没听说过。
音乐是什么?我没听说过。
动画设计是什么?我没听说过。
地图修饰是什么?我没听说过。
横版战斗是什么?我没听说过。
属性平衡是什么?我没听说过。
我所做的只是用我这整天只考及格的语文水平写剧本而已。

Lv1.梦旅人

虱子

梦石
0
星屑
121
在线时间
1782 小时
注册时间
2010-6-19
帖子
3597
2
发表于 2011-2-9 22:10:23 | 只看该作者
本帖最后由 Wind2010 于 2011-2-9 22:11 编辑

既然已经写了
  1.   attr_accessor :kind
  2.   attr_accessor :num
  3.   attr_accessor :amount
复制代码
那个下面的那串
  1.   def kind
  2.     return @kind
  3.   end
  4.   def kind=(newkind)
  5.     @kind = newkind
  6.   end
  7.   def num
  8.     return @num
  9.   end
  10.   def num=(newnum)
  11.     @num = newnum
  12.   end
  13.   def amount
  14.     return @amount
  15.   end
  16.   def amount=(newamount)
  17.     @amount = newamount
  18.   end
复制代码
就不用了
其他的需要再看看XD

http://rpg.blue/thread-175056-1-2.html
PVZ型塔防物一个
http://rpg.blue/thread-155199-1-2.html
RMXP技术讨论区手动认可帖,得到答案请认可
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1185
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

3
发表于 2011-2-9 23:22:13 | 只看该作者
楼主之前是VB的程序员?代码没什么问题,不过有一个很严重,很容易被忽视的错误:

在Ruby里,判断相等应该是 == 方法,而不是 = 操作符。

比如,如果1等于1就应该写作 if 1 == 1 而不是if 1 = 1。否则,无论if后面的condition是什么,都会认为是true而执行then(此关键字通常被省略)后面的语句块

点评

在学Pascal……也学过VB……Ruby只是兴趣爱好= =  发表于 2011-2-10 09:22

评分

参与人数 1星屑 +222 收起 理由
fux2 + 222 认可答案

查看全部评分


See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
37 小时
注册时间
2008-6-13
帖子
99
4
 楼主| 发表于 2011-2-10 09:23:07 | 只看该作者
明白了……ORZ
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 19:19

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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