hlockey 0.1 → 1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/hlockey +41 -33
- data/lib/data/divisions.yaml +845 -0
- data/lib/data/season.rb +27 -0
- data/lib/game.rb +35 -28
- data/lib/league.rb +68 -58
- data/lib/messages.rb +25 -25
- metadata +5 -6
- data/lib/data/names_markov_chain.rb +0 -634
- data/lib/player.rb +0 -41
- data/lib/team.rb +0 -46
data/lib/player.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
require_relative "./data/names_markov_chain"
|
2
|
-
|
3
|
-
class Player
|
4
|
-
attr_reader :stats, :to_s
|
5
|
-
|
6
|
-
@@prng = Random.new 8010897121101114 # This never changes
|
7
|
-
|
8
|
-
def initialize
|
9
|
-
@to_s = random_name + " " + random_name
|
10
|
-
@stats = [:offense, :defense, :agility].each_with_object Hash.new do |stat, hash|
|
11
|
-
hash[stat] = @@prng.rand * 5
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
def random_name
|
17
|
-
combination = "__"
|
18
|
-
next_letter = ""
|
19
|
-
result = ""
|
20
|
-
|
21
|
-
10.times do
|
22
|
-
next_letters = NamesMarkovChain[combination]
|
23
|
-
break if next_letters.nil?
|
24
|
-
|
25
|
-
cumulative_weights = []
|
26
|
-
next_letters.values.each do |v|
|
27
|
-
cumulative_weights << v + (cumulative_weights.last or 0)
|
28
|
-
end
|
29
|
-
rand_num = @@prng.rand cumulative_weights.last
|
30
|
-
|
31
|
-
next_letter = next_letters.keys[cumulative_weights.index do |n| rand_num < n end]
|
32
|
-
break if next_letter == "_"
|
33
|
-
|
34
|
-
result += next_letter
|
35
|
-
combination = combination[1] + next_letter
|
36
|
-
end
|
37
|
-
|
38
|
-
result
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
data/lib/team.rb
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
require_relative "./player"
|
2
|
-
|
3
|
-
class Team
|
4
|
-
attr_accessor :wins, :losses
|
5
|
-
attr_reader :name, :emoji, :roster
|
6
|
-
|
7
|
-
def initialize name, emoji, roster_idxs = {:lwing => 0,
|
8
|
-
:center => 1,
|
9
|
-
:rwing => 2,
|
10
|
-
:ldef => 3,
|
11
|
-
:goalie => 4,
|
12
|
-
:rdef => 5}
|
13
|
-
@wins = 0
|
14
|
-
@losses = 0
|
15
|
-
@name, @emoji = [name, emoji]
|
16
|
-
@roster = {}
|
17
|
-
players = []
|
18
|
-
6.times do players << Player.new end
|
19
|
-
roster_idxs.each do |pos, i|
|
20
|
-
@roster[pos] = players[i]
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def to_s
|
25
|
-
"#{@emoji} #{@name}"
|
26
|
-
end
|
27
|
-
|
28
|
-
def print_win_loss
|
29
|
-
puts " #{to_s.ljust 26} #{@wins}-#{@losses}"
|
30
|
-
end
|
31
|
-
|
32
|
-
def print_roster
|
33
|
-
puts to_s
|
34
|
-
@roster.each do |pos, player|
|
35
|
-
puts " #{pos.to_s.ljust 6}: #{player}"
|
36
|
-
player.stats.each do |stat, value|
|
37
|
-
puts " #{stat}: #{value.round 1}"
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.sort_teams teams
|
43
|
-
teams.sort do |a, b| b.wins - b.losses <=> a.wins - a.losses end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|