Class: Berlin::Fake::ConflictState
- Inherits:
-
Struct
- Object
- Struct
- Berlin::Fake::ConflictState
- Defined in:
- lib/ai/fake.rb
Instance Attribute Summary collapse
-
#node_id ⇒ Object
Returns the value of attribute node_id.
-
#soldiers_per_player ⇒ Object
Returns the value of attribute soldiers_per_player.
Instance Method Summary collapse
- #add_soldiers(player_id, number_of_soldiers) ⇒ Object
-
#initialize(node_id) ⇒ ConflictState
constructor
A new instance of ConflictState.
- #process(node) ⇒ Object
Constructor Details
#initialize(node_id) ⇒ ConflictState
Returns a new instance of ConflictState.
116 117 118 119 |
# File 'lib/ai/fake.rb', line 116 def initialize(node_id) super(node_id) self.soldiers_per_player = Hash.new(0) end |
Instance Attribute Details
#node_id ⇒ Object
Returns the value of attribute node_id
115 116 117 |
# File 'lib/ai/fake.rb', line 115 def node_id @node_id end |
#soldiers_per_player ⇒ Object
Returns the value of attribute soldiers_per_player
115 116 117 |
# File 'lib/ai/fake.rb', line 115 def soldiers_per_player @soldiers_per_player end |
Instance Method Details
#add_soldiers(player_id, number_of_soldiers) ⇒ Object
121 122 123 |
# File 'lib/ai/fake.rb', line 121 def add_soldiers(player_id, number_of_soldiers) self.soldiers_per_player[player_id] += number_of_soldiers end |
#process(node) ⇒ Object
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/ai/fake.rb', line 125 def process(node) add_soldiers(node.player_id, node.number_of_soldiers) if node.player_id puts "[Conflict] Resolving conflicts for ##{node.node_id}" losses = soldiers_per_player.values.sort.reverse[1] || 0 soldiers_per_player.each do |player_id, number_of_soldiers| if number_of_soldiers < losses || number_of_soldiers == losses && node.player_id != player_id puts "\t[#{player_id}] loses #{number_of_soldiers} soldiers" else node.number_of_soldiers = number_of_soldiers - losses puts "\t[#{player_id}] wins the combat with #{number_of_soldiers - losses} soldiers left" node.player_id = player_id end end end |