Class: Adventure::Player

Inherits:
Object
  • Object
show all
Defined in:
lib/adventure/player.rb

Overview

Represents the game player.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, classes, species, gender, **opts) ⇒ Player

Create a new instance of Player.

Parameters:

  • name (String)

    The player's name.

  • classes (Array<String>)

    The player's list of classes, as an Array of Strings.

  • species (String)

    The player's species.

  • gender (String)

    The player's gender.

  • opts (Hash)

    A list of optional parameters.

Options Hash (**opts):



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/adventure/player.rb', line 38

def initialize(name, classes, species, gender, **opts)
  # Mandatory parameters.
  @name      = name.strip
  @classes   = classes.to_a.map(&:strip).map(&:capitalize)
  @species   = species.strip.capitalize
  @gender    = gender.strip.capitalize
  # Optional parameters.
  @level     = opts.key?(:level) ? opts[:level].to_i : 1
  @purse     = opts.key?(:purse) ? opts[:purse] : nil
  @purse     = Purse.new unless @purse.is_a? Purse
  @inventory = opts.key?(:inventory) ? opts[:inventory] : nil
  @inventory = Inventory.new unless @inventory.is_a? Inventory
end

Instance Attribute Details

#classesObject (readonly)

Returns the value of attribute classes.



14
15
16
# File 'lib/adventure/player.rb', line 14

def classes
  @classes
end

#genderObject (readonly)

Returns the value of attribute gender.



20
21
22
# File 'lib/adventure/player.rb', line 20

def gender
  @gender
end

#inventoryObject (readonly)

Returns the value of attribute inventory.



26
27
28
# File 'lib/adventure/player.rb', line 26

def inventory
  @inventory
end

#levelObject (readonly)

Returns the value of attribute level.



11
12
13
# File 'lib/adventure/player.rb', line 11

def level
  @level
end

#nameObject (readonly)

Returns the value of attribute name.



8
9
10
# File 'lib/adventure/player.rb', line 8

def name
  @name
end

#purseObject (readonly)

Returns the value of attribute purse.



23
24
25
# File 'lib/adventure/player.rb', line 23

def purse
  @purse
end

#speciesObject (readonly)

Returns the value of attribute species.



17
18
19
# File 'lib/adventure/player.rb', line 17

def species
  @species
end

Instance Method Details

#level_upInteger

Bump the player's level by 1.

Returns:

  • (Integer)

    The player's new total level.



69
70
71
72
# File 'lib/adventure/player.rb', line 69

def level_up
  @level += 1
  @level
end

#new_class(new_class) ⇒ Array<String>

Add a new class to the player and levels them up.

Returns:

  • (Array<String>)

    The player's new list of classes.



77
78
79
80
81
# File 'lib/adventure/player.rb', line 77

def new_class(new_class)
  @classes.push new_class.strip.capitalize
  level_up
  @classes
end

#to_iInteger

Return an Integer as the player's total level.

Returns:

  • (Integer)

    The player's total level.



62
63
64
# File 'lib/adventure/player.rb', line 62

def to_i
  @level
end

#to_sString

Return a String with the player's name, gender, species, and total level.

Returns:

  • (String)

    A String with the player's name, gender, species, and total level.



55
56
57
# File 'lib/adventure/player.rb', line 55

def to_s
  "#{@name}, #{@gender.downcase} #{@species.downcase}, level #{@level}"
end