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

Project1

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

[有事请教] 为啥许多人都会把一个判断方法搞得这么麻烦

[复制链接]

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
跳转到指定楼层
1
发表于 2011-1-7 16:43:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 英顺的马甲 于 2011-1-7 16:49 编辑

为啥许多人在判断一个是否数字在两个数字之间时,
都用了一个很麻烦的算法,就拿鼠标图片响应来做例子:
  if   if mx < lx or mx > rx or my < ty or my > by or
     self.bitmap.get_pixel(mx-lx,my-ty).alpha == 0
     @picture.name = @picture.name.split(/_/)[0]+"_"[email protected](/_/)[1]
     return
   end
为啥不更直接的用:
   if not mx.between?(lx,rx) or not my.between?(ty,by)  or
     self.bitmap.get_pixel(mx-lx,my-ty).alpha == 0
     @picture.name = @picture.name.split(/_/)[0]+"_"[email protected](/_/)[1]
     return
   end
难道用个.between?真比用这么长的算法还难?
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党

Lv4.逐梦者

梦石
0
星屑
7981
在线时间
1183 小时
注册时间
2007-7-29
帖子
2055
2
发表于 2011-1-7 16:47:01 | 只看该作者
between沒效率……(笑)

点评

我记得between多了一个东西...那个时候研究小湖那个矩形与线触碰发现到的。就好像max和min其实也是沒效率的...(笑)  发表于 2011-1-8 17:54
求解释,为啥没效率  发表于 2011-1-7 20:06
回复 支持 反对

使用道具 举报

Lv3.寻梦者

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

贵宾

3
发表于 2011-1-7 17:11:51 | 只看该作者
底层实现应该一样吧,不过between?和include?比较好理解罢了。
  1. C:\Documents and Settings\DeathKing>ri Integer#between?
  2. ---------------------------------------------------- Comparable#between?
  3.      obj.between?(min, max)    => true or false

  4.      From Ruby 1.9.1
  5. ------------------------------------------------------------------------
  6.      Returns +false+ if _obj_ +<=>+ _min_ is less than zero or if
  7.      _anObject_ +<=>+ _max_ is greater than zero, +true+ otherwise.

  8.         3.between?(1, 5)               #=> true
  9.         6.between?(1, 5)               #=> false
  10.         'cat'.between?('ant', 'dog')   #=> true
  11.         'gnu'.between?('ant', 'dog')   #=> false



  12. C:\Documents and Settings\DeathKing>ri Range#include?
  13. --------------------------------------------------------- Range#include?
  14.      rng.member?(val)  =>  true or false
  15.      rng.include?(val) =>  true or false

  16.      From Ruby 1.9.1
  17. ------------------------------------------------------------------------
  18.      Returns +true+ if _obj_ is an element of _rng_, +false+ otherwise.
  19.      If beg and end are numeric, comparison is done according magnitude
  20.      of values.

  21.         ("a".."z").include?("g")  # => true
  22.         ("a".."z").include?("A")  # => false
复制代码

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1302
在线时间
673 小时
注册时间
2009-11-11
帖子
2790
4
发表于 2011-1-7 21:17:38 | 只看该作者
看来只有提高CPU频率了

嘿。嘿。嘿
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1624
在线时间
1609 小时
注册时间
2007-8-28
帖子
3253

第3届短篇游戏大赛主流游戏组冠军第1届Title华丽大赛新人奖

5
发表于 2011-1-7 21:21:29 | 只看该作者
这个和难没有关系吧。
.between的算法估计和第一个差不多

写脚本其实越麻烦越好,到时候就明白了
“我推荐你一个游戏吧,avg的,剧情特感人”
“我擦,都是文字图片的游戏有啥好玩的,连个战斗都没有!”
“我推荐你一个游戏吧,rpg的,战斗也新颖”
“我擦,怎么米有作i弊器?“
”你不是喜欢战斗么?”
“不,我是剧情党!!”

继续阅读请点击
http://rpg.blue/blog-53316-10027.html
回复 支持 反对

使用道具 举报

Lv1.梦旅人

CHAOS

梦石
0
星屑
107
在线时间
245 小时
注册时间
2005-11-4
帖子
3521

贵宾

6
发表于 2011-1-8 00:16:29 | 只看该作者
为啥你不重载个mx.between?(lx,rx,ty,by)方法?
梦想世界,在你伸手!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
953 小时
注册时间
2007-4-25
帖子
805
7
发表于 2011-1-8 13:42:21 | 只看该作者
可能是:
1、这“许多人”并不知道有这么一个内置的方法;
2、这“许多人”是硬件消耗 minimalist,追求手动优化(实际上 Ruby 1.8 也确实只能手动优化)。
[email protected]:~> repeat 1 fortune
Matz is nice, so we are nice.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
41 小时
注册时间
2008-3-5
帖子
2072
8
发表于 2011-1-8 13:54:41 | 只看该作者
楼主真无聊。不会用的不会知道这个复杂的东西的。会用的也不会去用那个麻烦的东西的。比起翻说明书,自己创造个,岂不快哉。
  1.   #---------------------------------------------------------------------------
  2.   # ● 鼠标在一个区域内
  3.   #---------------------------------------------------------------------------
  4.   def onside(x0,y0,x1,y1)
  5.     if @mouse_x > x0 and @mouse_x < x0+x1 and @mouse_y > y0 and @mouse_y < y0+y1
  6.       return true
  7.     else
  8.       return false
  9.     end
  10.   end
复制代码

点评

潇洒!  发表于 2011-1-8 15:29
你它囧一字母君谁记得……
当时那把剑离我的喉咙只有0.01工分。可是一柱香之后,这个女主人会深深的爱上我,虽然本人平生说了无数的谎话,可是这句最有效:“你应该这么做,我也应该死。
曾经有一取ID的机会放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。你的剑在我的咽喉上割下去吧!不用再犹豫了!如果上天能够给我一个再来一次的机会,我绝对会取个汉字君。如果非要给这ID加点修饰的话,我希望是……红色加粗……

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
157 小时
注册时间
2007-12-16
帖子
3454
9
发表于 2011-1-8 23:09:50 | 只看该作者
就像PASCAL INC(i) 与 i:=i+1一样的…… 去看看汇编就知道了 工作原理完全不同

评分

参与人数 1星屑 +2 收起 理由
chaochao + 2 正解。

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-21 00:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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