Project1

标题: 那个,能不能帮我看看这段代码,出问题了 [打印本页]

作者: 1390959782    时间: 2021-3-22 13:54
标题: 那个,能不能帮我看看这段代码,出问题了
本帖最后由 1390959782 于 2021-3-24 11:28 编辑

  def jjns
    if 1<=level<=10
      jjns = 10
    end
    if 11<=level<=20
      jjns = 30
    end
    if 21<=level<=30
      jjns = 60
    end
    if 31<=level<=40
      jjns = 100
    end
    if 41<=level<=50
      jjns = 150
    end
  end

Project1.rar

181.08 KB, 下载次数: 63


作者: 1390959782    时间: 2021-3-22 13:55
就是if那一行出问题了,程序说是这样
作者: ppspssss    时间: 2021-3-22 14:18
要and和括号
    if (1<=level) and (level<=10)
      jjns = 10
    end
    if (11<=level) and (level<=20)
      jjns = 30
    end
   
作者: alexncf125    时间: 2021-3-22 14:41
本帖最后由 alexncf125 于 2021-3-22 14:56 编辑

class Game_Interpreter
  def jjns(level = 23.3)
    result = [10, 30, 60, 100, 150]
    index = (level.to_i - 1) / 10
    jjns = result[index]
  end
end

p jjns            #=>60
p jjns(44)     #=>150

咦...这里是xp区不是va区啊...
那么代码可能不通用...当我没来过好了...
作者: 1390959782    时间: 2021-3-22 22:38
alexncf125 发表于 2021-3-22 14:41
class Game_Interpreter
  def jjns(level = 23.3)
    result = [10, 30, 60, 100, 150]

哥,你这
作者: 1390959782    时间: 2021-3-22 22:39
ppspssss 发表于 2021-3-22 14:18
要and和括号
    if (1

啊,谢谢大哥
作者: 1390959782    时间: 2021-3-22 22:43
ppspssss 发表于 2021-3-22 14:18
要and和括号
    if (1

还是不行,那个end错报了,哥
作者: enghao_lim    时间: 2021-3-22 23:17
1. 运算符只有左边与右边,不是左边,中间,右边。
2. ruby括号非必要,主要问题还是出在(1)。

当要判断level介于1到10必须拆分成两个语句:level大过或等于1,level小过或等于10,两个表达式用and做合并判断。

错误写法 1 <= level <= 10
正确写法:1 <= level and level <= 10

作者: 1390959782    时间: 2021-3-23 12:40
试了一下,各位大佬的说法都是正确的,原来是这样
作者: 1390959782    时间: 2021-3-23 12:44
enghao_lim 发表于 2021-3-22 23:17
1. 运算符只有左边与右边,不是左边,中间,右边。
2. ruby括号非必要,主要问题还是出在(1)。

那个,哥,能不能帮我看一下,这段代码又错了
    n = [[(base_maxhp + @maxhp_plus)*((level+jjns)*0.1+1), 1].max, 9999].min
作者: 1390959782    时间: 2021-3-24 12:30
enghao_lim 发表于 2021-3-22 23:17
1. 运算符只有左边与右边,不是左边,中间,右边。
2. ruby括号非必要,主要问题还是出在(1)。

怪我怪我,忘记发附件了,现在补上了,大佬
作者: enghao_lim    时间: 2021-3-24 20:55
本帖最后由 enghao_lim 于 2021-3-24 21:01 编辑

首先,函数必须返回值不然调用会返回nil。
def jjns
    if 1<=level and level<=10
      jjns = 10
    end
    if 11<=level and level<=20
      jjns = 30
    end
    if 21<=level and level<=30
      jjns = 60
    end
    if 31<=level and level<=40
      jjns = 100
    end
    if 41<=level and level<=50
      jjns = 150
    end
    return jjns
  end

其次,比起把jjns放在game_batller,它更适合game_actor。
game_enemy和game_actor都是game_battler的子类,可是game_enemy不具有level变脸。

还有LZ,下次提问更建议你把问题详细描述而不是一句话一个工程。工程起码要告知如何触发问题,更何况你的工程还素材缺失,要不是当下有空通常我看到这类工程都会直接无视。
从楼主提问和写法,我猜你没有编程经验,更简易百度一些ruby的基本菜鸟教程,搞懂一些基本语法这样才事半功倍,不求马上学会解决问题的能力,但是察觉问题的能力是编程非常重要的一环。
作者: 1390959782    时间: 2021-3-24 23:07
enghao_lim 发表于 2021-3-24 20:55
首先,函数必须返回值不然调用会返回nil。

其次,比起把jjns放在game_batller,它更适合game_actor。

好的好的,对不住,谢谢小哥哥,谢谢鸭哥
作者: 1390959782    时间: 2021-3-24 23:09
enghao_lim 发表于 2021-3-24 20:55
首先,函数必须返回值不然调用会返回nil。

其次,比起把jjns放在game_batller,它更适合game_actor。

谢谢鸭哥,我也打算从基础学起,只不过高三了,没时间,又不知从何学起,没有头绪,谢谢鸭哥建议
作者: 1390959782    时间: 2021-3-25 12:26
enghao_lim 发表于 2021-3-24 20:55
首先,函数必须返回值不然调用会返回nil。

其次,比起把jjns放在game_batller,它更适合game_actor。

那个,鸭哥,就是在RPG XP里面那个帮助书里面包含了所有的ruby语言语法了吗?可以在那里面学吗?
作者: 1390959782    时间: 2021-3-25 12:54
enghao_lim 发表于 2021-3-22 23:17
1. 运算符只有左边与右边,不是左边,中间,右边。
2. ruby括号非必要,主要问题还是出在(1)。

鸭哥,我看了一下帮助里面的Ruby语法,感觉和c#的语法好像,是不是像网上说的编程语言都是互通的,如果我学会了ruby,是不是c语言也就会了




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