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