Project1

标题: a==nil ? d=0 : c=0 这样可以省略D=0吗 [打印本页]

作者: yang1zhi    时间: 2016-3-2 22:05
标题: a==nil ? d=0 : c=0 这样可以省略D=0吗
本帖最后由 yang1zhi 于 2016-3-2 22:13 编辑

a==nil ?    : c=0 可以吗
  a1 == nil ? d=0 : a1 <= y ?  $game_party.actors[1].skill_effect(self.battler, $data_skills[action_id])

作者: 喵呜喵5    时间: 2016-3-2 22:19
  1. c=0 unless a==nil ?
复制代码

作者: cinderelmini    时间: 2016-3-2 22:47
a==nil ? d=0 : c=0 这样可以省略D=0吗

既然要省略d = 0,为何要这样写呢……
一般【判断式 ? a : b】这种就是为了处理两种结果才这样写的,
既然不要d = 0了,那就干脆【c=0 unless a == nil】嘛。
至于第二句,不怎么能看明白想做什么……
  1. if a == nil
  2.   d = 0
  3. else
  4.   if a1 <= y
  5.     $game_party.actors[1].skill_effect(self.battler, $data_skills[action_id])
  6.   end
  7. end
复制代码
是要这样么?
是的话,不推荐这么写,
  1. d = 0 if a == nil
  2. $game_party.actors[1].skill_effect(self.battler, $data_skills[action_id]) if a1 <= y and a != nil
复制代码
或者
  1. a == nil ? d = 0 : (a1 <= y ? $game_party.actors[1].skill_effect(self.battler, $data_skills[action_id]) : return)
复制代码

作者: yang1zhi    时间: 2016-3-2 22:54
cinderelmini 发表于 2016-3-2 22:47
既然要省略d = 0,为何要这样写呢……
一般【判断式 ? a : b】这种就是为了处理两种结果才这样写的,
既然 ...

              self.shoot(action_id)
   $game_system.friend_event_id[0]==nil ?    d=0 : a = $game_map.events[$game_system.friend_event_id[0]]
   $game_system.friend_event_id[1]==nil ?    d=0 : b = $game_map.events[$game_system.friend_event_id[1]]
   $game_system.friend_event_id[2]==nil ?    d=0 : c = $game_map.events[$game_system.friend_event_id[2]]
   
   zj = ($game_player.x - self.x).abs + ($game_player.y - self.y).abs
   a==nil ? d=0 :  a1 = (a.x - self.x).abs + (a.y - self.y).abs
   b==nil ? d=0 :  b1 = (b.x - self.x).abs + (b.y - self.y).abs
   c==nil ? d=0 :  c1 = (c.x - self.x).abs + (c.y - self.y).abs
   y = Database_Bullet::SUFLAGS[action_id]

  $game_party.actors[0].skill_effect(self.battler, $data_skills[action_id])  if zj <= 5
  if a1==nil
    else
   a1 <= y ? $game_party.actors[1].skill_effect(self.battler, $data_skills[action_id]) : nil
       end
   if b1==nil
    else

    b1 <= y ? $game_party.actors[2].skill_effect(self.battler, $data_skills[action_id]) : nil
      end
    if c1==nil
    else
    c1 <= y ? $game_party.actors[3].skill_effect(self.battler, $data_skills[action_id]) : nil
    end
是这样的,想缩短下
作者: cinderelmini    时间: 2016-3-2 23:23
本帖最后由 cinderelmini 于 2016-3-2 23:29 编辑
yang1zhi 发表于 2016-3-2 22:54
self.shoot(action_id)
   $game_system.friend_event_id[0]==nil ?    d=0 : a = $game_m ...


排除掉无用的d之后,整理了一下代码,变成这样:
  1.   self.shoot(action_id)

  2.   zj = ($game_player.x - self.x).abs + ($game_player.y - self.y).abs
  3.   $game_party.actors[0].skill_effect(self.battler, $data_skills[action_id]) if zj <= 5
  4.   
  5.   calc_y = Database_Bullet::SUFLAGS[action_id]
  6.   for i in 1...$game_party.actors.size
  7.     friend = $game_map.events[$game_system.friend_event_id[i - 1]]
  8.     if friend and ((friend.x - self.x).abs + (friend.y - self.y).abs) <= calc_y
  9.       $game_party.actors[i].skill_effect(self.battler, $data_skills[action_id])
  10.     end
  11.   end
复制代码





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