对象是Ruby作为编程语言的基石。 几乎所有事物都是一个对象,并且对象很容易处理。 它们具有基类模板,可让您创建新对象,允许对象具有属性并允许在其上调用方法。
以下是汽车课的例子
- Zdygitalizowaneświadectwaprzeszłościw grach wideo
- 为什么视频游戏值得更多尊重(或:为什么我们要构建Dbljump,第1部分)
- 我在2017年玩过的游戏
- 关于视频游戏角色
- 蛇通证明蛇生活艰难
类车
attr_reader:color,:name
@@ all = []
def initialize(名称,颜色)
@name =名称
@color =颜色
@@ all <<自我
结束
def self.all
@@所有
结束
def驱动器
放置“#{self.name}消失。”
结束
def self.find_car_by_name(名称)
self.all.select做|汽车|
car.name ==名称
结束
结束
结束
使用ObjectClass.new方法创建一个对象(通常带有属性)
car1 = Car.new(“ Lightning McQueen”,“ red”)
这将创建car类的实例,即car对象。 它的属性可以称为
car.name ==>“闪电麦昆”
并可以在其上调用方法(例如上述方法属性,也可以是自定义方法)
car1.drive ==>“闪电麦奎因正在清理。”
也可以在类中定义类方法,这些方法可以在整个类本身上运行,而不是在类的实例上运行。
car1 = Car.new(“ Lightning McQueen”,“ red”)
car2 = Car.new(“ Doc Hudson”,“ blue”)
Cars.find_car_by_name(“闪电麦昆”)==> [car1]
对象的用途之一是使存储和检索信息更加容易。 如果您在不使用物品的情况下玩交易纸牌游戏,则每次发牌时,您都需要输入所有必要的信息。
手= []
手<< [名称,马力,攻击力,成本,稀有度]
您将最终得到一个充满数组的手动数组(或者,如果选择走那条路线则为哈希)。 然后,如果该卡从您的手中移到其他地方,则所有这些信息都必须再次完全转移。
栏位= []
字段<< [名称,马力,攻击,成本,稀有度]
此外,如果卡公司决定在攻击后添加一个额外的统计信息,称为防御
[名称,马力,攻击,防御,成本,稀有度]
现在,任何尝试检索卡成本的代码现在都将检索其防御,而所有内容都必须重新编写。
但是,如果使用对象,则在对象具有其所有属性创建一次之后,只需要传递对象本身即可。
card1 = Card.new(名称,hp,攻击,花费,稀有度)
手<<卡1
字段<< card1
而且,如果添加了新的统计信息,则只需更改initialize方法以包括防御即可,其他所有功能都将保持相同状态,因为属性不是通过位置访问,而是通过属性名称访问。
card1.name ==>名称
当在视频游戏中表示事物时,对象特别有用,因为视频游戏的敌人和盟友通常是一种具有名称,攻击,生命值,能力等属性的奇异事物,可以用对象完美地表示。 例如,在炉石传说中有一张牌:

只要这张卡在一次攻击中没有被杀死,就会召唤一张额外的副本。 但是,这张卡召唤的副本在召唤时仍保留统计信息。 如果软泥怪是5/2,则召唤另外5/2软泥怪而不是新的2/4软泥怪。 最好的方法是将该卡作为对象,并在对象内跟踪具有hp和Attack属性的对象,而不是拆分具有完全相同状态的实例化对象时。
在英雄联盟之类的MOBA中,您可以通过统计信息和地图上的位置来控制角色。 角色将是一个具有HP,攻击,装甲和物品等属性的对象,还有位置坐标,该位置坐标会根据您在地图上的位置而不断更新,并确定攻击是否与您联系。 如果没有对象不断更新x,y坐标,将很难保持跟踪。

对象非常适合跟踪包含各种属性的内容,尤其是当它们可以更改并需要记住这些值时。 无论是跟踪级别和赢/输的帐户,还是角色不断壮大的角色,或者可以更改其属性的纸牌,对象都非常适合代表视频游戏中的几乎所有内容。