Class: MISSIONGAME::Player

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Player

Returns a new instance of Player.



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/player.rb', line 27

def initialize (args)
  name = args[:name]
  neworleans = args[:neworleans]
  @name = name
  @level = 1
  @lives = 100
  @bonus = 100
  @str = 5
  @int = 5
  @x = 1
  @y = neworleans.get_height
  @in_combat = false
  @current_enemy = nil
  @points = 0
  @dead = 0
  return "Welcome %{name}! Let's play!"
end

Instance Attribute Details

#bonusObject

Returns the value of attribute bonus.



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

def bonus
  @bonus
end

#current_enemyObject

Returns the value of attribute current_enemy.



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

def current_enemy
  @current_enemy
end

#deadObject

Returns the value of attribute dead.



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

def dead
  @dead
end

#in_combatObject

Returns the value of attribute in_combat.



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

def in_combat
  @in_combat
end

#intObject

Returns the value of attribute int.



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

def int
  @int
end

#levelObject

Returns the value of attribute level.



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

def level
  @level
end

#livesObject

Returns the value of attribute lives.



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

def lives
  @lives
end

#nameObject

Returns the value of attribute name.



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

def name
  @name
end

#pointsObject

Returns the value of attribute points.



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

def points
  @points
end

#strObject

Returns the value of attribute str.



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

def str
  @str
end

#xObject

Returns the value of attribute x.



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

def x
  @x
end

#yObject

Returns the value of attribute y.



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

def y
  @y
end

Instance Method Details

#attack(args) ⇒ Object

Player attacks enemy



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/player.rb', line 46

def attack(args)
  player = self
  enemy = args[:enemy]
  ui = args[:ui]

  # Does the player even hit the enemy?

  # We could use a hit chance stat here, but since we don't have one,

  # we'll just base it off the player/enemy stength discrepency.

  ui.enemy_info({:player => player})
  ui.player_info({:player => player})
  str_diff = (player.str - enemy.str) * 2
  hit_chance = rand(1...100) + str_diff + HIT_CHANCE_MODIFIER

  if (hit_chance > 50)
    # Determine value of the attack

    attack_value = rand(1...player.str) + ATTACK_VALUE_MODIFIER
    if attack_value > enemy.lives
  print "You fought for your life and " + "hit".light_yellow + " " + enemy.name.light_red + " for " + attack_value.to_s.light_white + " damages, killing him!\n"
  print "You gain " + enemy.points.to_s.light_white + " points.\n"
  return ENEMY_KILLED
    else
  print "You fought for your life and " + "hit".light_yellow + " " + enemy.name.light_red + " for " + attack_value.to_s.light_white + " damages, killing him!\n"
  return attack_value
    end
  else
    print "You fought for your life and " + "missed".light_red + " " + enemy.name + "!\n"
    return 0
  end
  return true
end

#move(args) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/player.rb', line 77

def move(args)
  direction = args[:direction]
  neworleans = args[:neworleans]
  ui = args[:ui]
  story = args[:story]
  case direction
    when :up
      if @y > 1
 @y -= 1
  else
 ui.out_of_bounds
 return false
  end
    when :down
      if @y < neworleans.get_height
 @y += 1
  else
 ui.out_of_bounds
 return false
  end
    when :left
      if @x > 1
 @x -= 1
  else
 ui.out_of_bounds
 return false
  end
    when :right
      if @x < neworleans.get_width
 @x += 1
  else
 ui.out_of_bounds
 return false
  end
    end
  unless neworleans.check_area({:player => self, :ui => ui, :story => story})
    return false
  else
    return true
  end
end