class CardGame::Player
Attributes
current_card[RW]
deck[R]
gold[R]
name[R]
rank[RW]
score[RW]
Public Class Methods
new(name, rank =1, gold = 0, score = 0)
click to toggle source
# File lib/card_game/player.rb, line 9 def initialize(name, rank =1, gold = 0, score = 0) @name = name.capitalize @rank = rank @gold = gold @score = score @deck = [] @current_card = nil @die = Die.new() end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/card_game/player.rb, line 23 def <=>(other) other.score <=> @score end
add_card(card)
click to toggle source
# File lib/card_game/player.rb, line 59 def add_card(card) if @deck.length < 3 @deck.push(card) end end
add_gold(value)
click to toggle source
# File lib/card_game/player.rb, line 35 def add_gold(value) @gold +=(value * 1) end
add_score(percentage)
click to toggle source
# File lib/card_game/player.rb, line 47 def add_score(percentage) @score += (percentage * 100) end
current_card_to_play()
click to toggle source
# File lib/card_game/player.rb, line 66 def current_card_to_play if @current_card.nil? @current_card = @deck.sample() elsif @current_card.health <= 0 @current_card.health = 0 @deck.each do |card| if card.health > 0 @current_card = card end end #if @deck.sample().health > 0 # @current_card.health = 0 # @current_card = @deck.sample() #end else end end
deduct_gold()
click to toggle source
# File lib/card_game/player.rb, line 39 def deduct_gold if @gold > 0 @gold -= 8 elsif @gold < 0 @gold = 0 end end
deduct_rank()
click to toggle source
# File lib/card_game/player.rb, line 31 def deduct_rank @rank -= 1 end
deduct_score()
click to toggle source
# File lib/card_game/player.rb, line 51 def deduct_score if @score != 0 @score -= 50 else @score = 0 end end
got_attack?(player)
click to toggle source
# File lib/card_game/player.rb, line 84 def got_attack?(player) die = Die.new(4) chance = die.roll if self != player case chance when 0 @current_card.health = @current_card.health - player.current_card.damage puts "#{@name}'s #{@current_card.name.to_s.capitalize} took full hit from #{player.name}'s #{player.current_card.name.to_s.capitalize}!" deduct_score when 1 @current_card.health = @current_card.health - (player.current_card.damage/4) puts "#{@name}'s #{@current_card.name.to_s.capitalize} blocked 75% damage from #{player.name}'s #{player.current_card.name.to_s.capitalize}!" add_score(0.25) add_gold(2) when 2 @current_card.health = @current_card.health - (player.current_card.damage/2) puts "#{@name}'s #{@current_card.name.to_s.capitalize} blocked 50% damage from #{player.name}'s #{player.current_card.name.to_s.capitalize}!" add_score(0.5) add_gold(5) when 3 @current_card.health = @current_card.health - (3*(player.current_card.damage/4)) puts "#{@name}'s #{@current_card.name.to_s.capitalize} blocked 25% damage from #{player.name}'s #{player.current_card.name.to_s.capitalize}!" add_score(0.75) add_gold(7) when 4 puts "#{@name}'s #{@current_card.name.to_s.capitalize} successfully blocked the attack from #{player.name}'s #{player.current_card.name.to_s.capitalize}!" add_score(1) add_gold(10) end end end
set_rank(rank_number)
click to toggle source
# File lib/card_game/player.rb, line 27 def set_rank(rank_number) @rank = rank_number end
to_s()
click to toggle source
# File lib/card_game/player.rb, line 19 def to_s "Player: #{@name}\t Rank: #{@rank}\t Gold: #{@gold}\t Score: #{@score}\nCurrent Card: #{@current_card.name.to_s.capitalize}\t Health: #{@current_card.health}\t Damage: #{@current_card.damage}" end