Генератор колоды Beta
This commit is contained in:
@@ -4,40 +4,14 @@ require_relative "../config/app"
|
||||
|
||||
Hanami.app.prepare
|
||||
|
||||
repo = ClashDeckGenerator2::Repos::CardsRepo.new
|
||||
roles_repo = ClashDeckGenerator2::Services::CardRolesRepository.new
|
||||
generator = ClashDeckGenerator2::Services::DeckGenerator.new(
|
||||
cards_repo: repo,
|
||||
roles_repo: roles_repo
|
||||
)
|
||||
|
||||
puts roles_repo.roles_for("Knight").inspect
|
||||
puts roles_repo.roles_for("Hog Rider").inspect
|
||||
puts roles_repo.has_role?("Hog Rider", "win_condition")
|
||||
puts roles_repo.has_role?("Tesla", "win_condition")
|
||||
puts roles_repo.meta.inspect
|
||||
|
||||
cards = repo.all
|
||||
cards = cards.last if cards.is_a?(Array) && cards.first == :cards
|
||||
|
||||
rarity_counts = cards.group_by(&:rarity).transform_values(&:size)
|
||||
|
||||
puts "RARITY COUNTS:"
|
||||
rarity_counts.each do |rarity, count|
|
||||
puts "#{rarity}: #{count}"
|
||||
end
|
||||
|
||||
puts "========================================"
|
||||
puts "POOL DIAGNOSTICS"
|
||||
puts "========================================"
|
||||
puts "Total cards: #{cards.size}"
|
||||
puts "Spells: #{cards.count { |c| c.type == 'spell' }}"
|
||||
puts "Troops: #{cards.count { |c| c.type == 'troop' }}"
|
||||
puts "Buildings: #{cards.count { |c| c.type == 'building' }}"
|
||||
puts "Champions: #{cards.count { |c| c.rarity == 'champion' }}"
|
||||
puts "Heroes: #{cards.count { |c| c.rarity == 'hero' }}"
|
||||
puts "Evolutions: #{cards.count { |c| c.rarity == 'evolution' }}"
|
||||
puts "Avg elixir all cards: #{(cards.sum(&:elixir_cost).to_f / cards.size).round(2)}"
|
||||
puts "========================================"
|
||||
|
||||
generator = ClashDeckGenerator2::Services::DeckGenerator.new(cards_repo: repo)
|
||||
deck = generator.call
|
||||
|
||||
deck = deck.last if deck.is_a?(Array) && deck.first == :cards
|
||||
|
||||
puts "========================================"
|
||||
@@ -45,7 +19,11 @@ puts "DECK GENERATED SUCCESSFULLY"
|
||||
puts "========================================"
|
||||
|
||||
deck.each_with_index do |card, index|
|
||||
puts "#{index + 1}. #{card.name} | #{card.type} | #{card.rarity} | #{card.elixir_cost}"
|
||||
roles = roles_repo.roles_for(card.name)
|
||||
meta_flag = card.is_meta == 1 ? "META" : "NON-META"
|
||||
|
||||
puts "#{index + 1}. #{card.name} | #{card.type} | #{card.rarity} | #{card.elixir_cost} | #{meta_flag}"
|
||||
puts " roles: #{roles.join(', ')}"
|
||||
end
|
||||
|
||||
puts "----------------------------------------"
|
||||
@@ -56,10 +34,18 @@ puts "Unique cards count: #{names.uniq.size}"
|
||||
|
||||
avg_elixir = deck.sum(&:elixir_cost).to_f / deck.size
|
||||
puts "Average elixir: #{avg_elixir.round(2)}"
|
||||
puts "Spells count: #{deck.count { |c| c.type == 'spell' }}"
|
||||
puts "Spells by type: #{deck.count { |c| c.type == 'spell' }}"
|
||||
puts "Troops count: #{deck.count { |c| c.type == 'troop' }}"
|
||||
puts "Buildings count: #{deck.count { |c| c.type == 'building' }}"
|
||||
puts "Champions count: #{deck.count { |c| c.rarity == 'champion' }}"
|
||||
puts "Heroes count: #{deck.count { |c| c.rarity == 'hero' }}"
|
||||
puts "Evolutions count: #{deck.count { |c| c.rarity == 'evolution' }}"
|
||||
puts "Meta cards count: #{deck.count { |c| c.is_meta == 1 }}"
|
||||
|
||||
all_roles = deck.flat_map { |card| roles_repo.roles_for(card.name) }.uniq.sort
|
||||
puts "Deck roles coverage: #{all_roles.join(', ')}"
|
||||
|
||||
puts "Win conditions count: #{deck.count { |c| roles_repo.has_role?(c.name, 'win_condition') }}"
|
||||
puts "Anti-air count: #{deck.count { |c| roles_repo.has_role?(c.name, 'anti_air') }}"
|
||||
puts "Spell-role count: #{deck.count { |c| roles_repo.has_role?(c.name, 'spell') }}"
|
||||
puts "========================================"
|
||||
Reference in New Issue
Block a user