楼主: 喵呜喵5

[胡扯] 【用代码说话】#2.史莱姆巢穴

[复制链接]
梦石
0
星屑
3557
在线时间
2337 小时
注册时间
2015-8-25
回帖
928

开拓者

发表于 2016-8-5 00:34:48 | 显示全部楼层
可以請教一下吗。。假如想要写史莱姆们的生命值是共用的话,按照对象化的思想应该是怎么样写呢?

我只会用@hp = $hp这种低级的写法。。。

[pre lang="ruby"]#像是rpg游戏里面,高级的粘液怪物假如不全部消灭的话又会不断再生。

#那么假想出一种所有史莱姆共用一条生命值的情况。

$hp = 10  #所有史莱姆共用10血

class Slime
  def appear; @hp = $hp; end  #即使是新出现的史莱姆,生命值也是和共用生命值相同的。
  def die; @hp = 0 $hp = 0; end
  def bark
    if @hp == 0
      p 'Uuuu...'
    else
      p 'GaO!!'
    end
  end
end[/pre]

点评

恩,是的,现在我也学会用这个了。  发表于 2016-9-27 16:30
有一种变量叫类变量,@@hp  发表于 2016-9-27 16:24
回复

使用道具 举报

梦石
0
星屑
127
在线时间
48 小时
注册时间
2016-2-9
回帖
27
发表于 2016-8-5 06:47:02 | 显示全部楼层
{:2_249:}顶一个
回复

使用道具 举报

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2016-8-5 07:47:16 | 显示全部楼层
七重 发表于 2016-8-5 00:34
可以請教一下吗。。假如想要写史莱姆们的生命值是共用的话,按照对象化的思想应该是怎么样写呢?

我只会用 ...

[pre lang="ruby"]class Slime
  @hp = 10
  class << self
    attr_accessor :hp
  end

  def hp
    Slime.hp
  end

  def appear
    Slime.hp = 10
  end

  def die
    Slime.hp = 0
  end

  def bark
    if hp == 0
      # ...
    end
  end
  
end[/pre]

评分

参与人数 1星屑 +15 收起 理由
七重 + 15 谢谢你的解答!

查看全部评分

回复

使用道具 举报

梦石
0
星屑
55
在线时间
67 小时
注册时间
2010-8-12
回帖
24
发表于 2016-8-5 11:06:27 | 显示全部楼层

面向对象的道理我都懂,然而我就是习惯面向过程怎么办
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部