资源说明:The Elo rating system is a method for calculating the relative skill levels of players in two-player games such as chess and Go.
= Elo From {Wikipedia}[http://en.wikipedia.org/wiki/Elo_rating_system]: The Elo rating system is a method for calculating the relative skill levels of players in two-player games such as chess and Go. It is named after its creator Arpad Elo, a Hungarian-born American physics professor. The Elo system was invented as an improved chess rating system, but today it is also used in many other games. It is also used as a rating system for multiplayer competition in a number of computer games, and has been adapted to team sports including association football, American college football and basketball, and Major League Baseball. == Links * {API documentation}[http://iain.github.com/elo/doc] * {Source Code}[http://github.com/iain/elo] == Usage You need to have at least two players that can play a game (duh). bob = Elo::Player.new jane = Elo::Player.new(:rating => 1500) Once you have players, you can register games in a variaty of ways. There is more than one way to do it, choose whatever works from your other code: game1 = bob.wins_from(jane) game2 = bob.loses_from(jane) game3 = bob.plays_draw(jane) game4 = bob.versus(jane) game4.winner = jane game5 = bob.versus(jane) game5.loser = jane game6 = bob.versus(jane) game6.draw game7 = bob.versus(jane) game7.result = 1 # result is in perspective of bob, so bob wins game8 = bob.versus(jane, :result => 0) # jane wins You can get all kinds of info from a player: bob.rating # => 1080 bob.pro? # => false bob.starter? # => true bob.games_played # => 8 bob.games # => [ game1, game2, ... game8 ] == Configuration You can configure Elo in many ways. In it's default configuration, it is configured in the same way as the {FIDE}[http://www.fide.com/] (World Chess Foundation). Altering settings to your liking is very easy and very flexible. You can even specify your own K-factor rules. Have a look at the Rdoc in the code for a complete reference. Here is an example: Elo.configure do |config| # Every player starts with a rating of 1000 config.default_rating = 1000 # A player is considered a pro, when he/she has more than 2400 points config.pro_rating_boundry = 2400 # A player is considered a new, when he/she has played less than 30 games config.starter_boundry = 30 end == About the K-factor The Elo rating system knows a variable called the "K-factor". The K-factor is used to reward new talent and stableize the rating once a player is participating longer. FIDE (the World Chess Foundation), gives players with less than 30 played games a K-factor of 25. Normal players get a K-factor of 15 and pro's get a K-factor of 10. Once you reach a pro status, you're K-factor never changes, even if your rating drops. You need to provide Elo the amount of games played, their rating and their pro-status. bob = Elo::Player.new(:games_played => 29, :rating => 2399, :pro => true) bob.k_factor == 10 You can define your own K-factors by adding K-factor rules. This code will change the K-factor to 12, for every player that played less than 10 games, and 16 for everybody else. Elo.configure do |config| config.k_factor(12) { games_played < 10 } config.default_k_factor = 16 config.use_FIDE_settings = false end == Installation gem install elo == Note on Patches/Pull Requests * Fork the project. * Make your feature addition or bug fix. * Add tests for it. This is important so I don't break it in a future version unintentionally. * Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull) * Send me a pull request. Bonus points for topic branches. == Copyright Copyright (c) 2010 Iain Hecker. Released under the MIT License
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。