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

Project1

 找回密码
 注册会员
搜索

如何用脚本或事件做个算术判定

查看数: 1828 | 评论数: 9 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2012-8-5 17:26

正文摘要:

我想用脚本做个类似于太阁的 学习算术技能的事件,就是师傅(太阁里的老板)出一个数,规定加减乘除符号,让你在规定时间,用规定符号,从0——9这些数字算出结果,对了有奖。如:□+□*□=6(注意先乘除后加减的顺 ...

回复

灯笼菜刀王 发表于 2012-8-7 10:40:17
上面的那个脚本我重新编辑了,直接换那个新的就行了,

点评

两位前辈,俺实在拿不出更多的经验来了……  发表于 2012-8-7 13:28
柳之一前辈好~, 这么多年啦,积分早是浮云了呵呵,自己的坑已经没有精力和时间完成了,挑个感兴趣的东东做一做而已,借此学点东西吧  发表于 2012-8-7 11:25
即使你答對了,也就100積分獎勵而已  发表于 2012-8-7 11:21
灯笼菜刀王 发表于 2012-8-7 10:24:48
本帖最后由 灯笼菜刀王 于 2012-8-7 10:43 编辑
z121310 发表于 2012-8-7 09:59
我想问是这样吧……但为什么我用了之后停不下来,一直出算式……


加上return就行了- - ,

是可以获得负数..... 只要不是浮点数就行

重新编辑完成

因为玩四则运算游戏是上个世纪的事了... 我只是把所有的运算式子都列出来而已~~ 除了考虑被除数不能为0外没有其他的考虑-v-

如果觉得算式不合适,可以删掉那个判定, 让随机数少一位就可以了, 另外因为不会判定浮点数, 所以除法的话会有很囧的情况出现, 比如, 8/3 = 2 判定是true 这个自己想办法解决了,,比如可以多个判定 % == 0 的情况下.才是正确的. 或者,算数后面乘上1.0应该也可以

算数游戏N年前就不玩了 - - 做个简单的计算式就出一堆问题, 老了老了...

点评

在哪加?  发表于 2012-8-7 10:37
z121310 发表于 2012-8-7 09:22:04
灯笼菜刀王 发表于 2012-8-6 23:45
那也不难~  只要用随机数case就行了,, 就是有点麻烦,以及可能会出现不能解答的情况 -v-

事件设置起来太 ...

这个算法根本就是错的……怎么能用一个数单独除以100,除以10,除以1(不变)来算加减乘除。比如222,222/100=2.22,/10=22.2,/1=222,222+22.2+2.22=244.42≠6

点评

应该是,一个三位数除100得到第一个数, 除余100后再除10得到第二个数, 除余10得到第三个数才对,之前没考虑分节问题- -  发表于 2012-8-7 09:47
哈哈, 之前那个是有问题, 重新编辑了下, 现在经过测试已经OK, 只是需要借助公共事件- -  发表于 2012-8-7 09:44
灯笼菜刀王 发表于 2012-8-6 23:45:20
本帖最后由 灯笼菜刀王 于 2012-8-7 10:17 编辑
z121310 发表于 2012-8-6 12:20
难道随机指定数字,要用变量里的随机数?我是想随机出现不同符号与运算结果……不仅是6. ...


那也不难~  只要用随机数case就行了,, 就是有点麻烦,以及可能会出现不能解答的情况 -v-

事件设置起来太麻烦了,直接上脚本- -...
  1. class Interpreter
  2.   def suanshu(he1 = 0,he2 = 1,vi = 1,si = 1)
  3.     $textis = rand(15)
  4.     $vi = vi
  5.     $si = si
  6.     case $textis
  7.     when 0
  8.       text = "□+□+□="
  9.     when 1
  10.       text = "□+□-□="
  11.     when 2
  12.       text = "□+□X□="
  13.     when 3
  14.       text = "□+□÷□="
  15.     when 4
  16.       text = "□-□+□="
  17.     when 5
  18.       text = "□-□-□="
  19.     when 6
  20.       text = "□-□X□="
  21.     when 7
  22.       text = "□-□÷□="
  23.     when 8
  24.       text = "□X□+□="
  25.     when 9
  26.       text = "□X□-□="
  27.     when 10
  28.       text = "□X□X□="
  29.     when 11
  30.       text = "□X□÷□="
  31.     when 12
  32.       text = "□÷□+□="
  33.     when 13
  34.       text = "□÷□-□="
  35.     when 14
  36.       text = "□÷□X□="
  37.     when 15
  38.       text = "□÷□÷□="
  39.     end
  40.     j = []
  41.     for i in he1..he2
  42.       j.push i
  43.     end
  44.     $kyri = j[rand(j.size)]
  45.     @message_waiting = true
  46.     $game_temp.message_proc = Proc.new { @message_waiting = false }
  47.     $game_temp.message_text = "在三个□里填上数字使等式成立" + "\n"
  48.     $game_temp.message_text += text + $kyri.to_s + "\n"
  49.     $game_temp.num_input_start = 2
  50.     $game_temp.num_input_variable_id = vi  
  51.     $game_temp.num_input_digits_max = 3
  52.     $game_switches[$si] = false
  53.     return
  54.     end
  55.   def suanshu1
  56.     a = $game_variables[$vi] / 100
  57.     b = $game_variables[$vi] % 100 / 10
  58.     c = $game_variables[$vi] % 10
  59.     case $textis
  60.     when 0
  61.       k = a + b + c
  62.     when 1
  63.       k = a + b - c
  64.     when 2
  65.       k = a + b * c
  66.     when 3
  67.       k = a + b / c if c != 0
  68.     when 4
  69.       k = a - b + c
  70.     when 5
  71.       k = a - b - c
  72.     when 6
  73.       k = a - b * c
  74.     when 7
  75.       k = a - b / c if c != 0
  76.     when 8
  77.       k = a * b + c
  78.     when 9
  79.       k = a * b - c
  80.     when 10
  81.       k = a * b * c
  82.     when 11
  83.       k = a * b / c if c != 0
  84.     when 12
  85.      if b != 0
  86.       k = a / b + c
  87.      end
  88.     when 13
  89.       k = a / b - c if b != 0
  90.     when 14
  91.       k = a / b * c if b != 0
  92.     when 15
  93.       k = a / b / c if b != 0 and c != 0
  94.     end
  95.     $game_switches[$si] = true if k == $kyri
  96.     $game_variables[$vi] = 0
  97. end
  98. end
复制代码
插到main前面就可以了, 要使用的时候在事件脚本输入 suanshu(答案A,答案B,输入数值用的变量ID,最后结果的开关ID)  答案A和B是两个数字, 表示等式的运算结果会在这两个数字之间的数随机抽一个. 比如,suanshu(9,18) 那等式的运算结果就可能是9...18之间的数, 使用的是1号公共变量和1号开关,

设置方法
脚本 suanshu(2,3)
公共事件(公共事件里就一句脚本"suanshu1")
条件分歧 开关X打开的时候

最后得到的结果是正确的话,会打开"公共开关[si]号" ,  默认1号,  然后可以用这个开关分歧,做奖金事件什么的就行了

至于为什么要用公共事件, 因为我发现不能写在一起 否则会直接判断原来变量的值而不是输入后的值, 只用用公共事件把判断句分开,这样才能判断输入的数值.先这样用着XD,等我找个方法在一段里可以区分再合并一起 = =..

评分

参与人数 2星屑 +600 梦石 +2 收起 理由
hcm + 2 认可答案
z121310 + 600 辛苦了……

查看全部评分

z121310 发表于 2012-8-6 12:20:13
灯笼菜刀王 发表于 2012-8-6 10:09
这个很简单呗, _ + _ X _ = 6

直接这样设置

难道随机指定数字,要用变量里的随机数?我是想随机出现不同符号与运算结果……不仅是6.
灯笼菜刀王 发表于 2012-8-6 10:09:29
这个很简单呗, _ + _ X _ = 6

直接这样设置
"显示文章:
来做道题吧, ( )+( )X( ) = 6
三个空格应该填什么数字? "
数值输入 [变量1]--3位
事件脚本
a = $game_variables[1] / 100
b = $game_variables[1] / 10
c = $game_variables[1]
if a + b * c == 6
$game_switches[1] = true
else
$game_switches[1] = false
end
条件分歧
当[开关1]打开的时候
显示文章" 你答对了"
除此之外
显示文章" 你错了"
end
z121310 发表于 2012-8-5 22:36:20
chd120 发表于 2012-8-5 22:20
数字是自己定还是随机给?

系统指定运算符号和结果,中间的空(一般是3到4个自己填)
chd120 发表于 2012-8-5 22:20:24
数字是自己定还是随机给?
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-9-22 06:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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