Ruby MMO is a programming challenge in which players compete to gain the highest level in an MMO simulation.
Fork this repo and commit a module inside the /players
directory. The module is then used to extend a player object with a couple of methods:
-
The
move
method returns an array with two elements: the method to be called (can be one of:attack
or:rest
), and the method arguments. In the case of:attack
the argument should be an instance of an opponent Player (see below for how to get this). In the case of:rest
no argument is required. See the examples in the/players
directory. -
to_s
(optional) returns the name of the player.
The player modules have access to the Game.world
hash. This hash contains all the players and monsters in the world and their current stats. For example, to get the stats of a random player you could do:
player_count = Game.world[:players].count
opponent = Game.world[:players].select{|p|p != self}[rand(player_count - 1)]
opponent.stats
The select
is to ensure the player is not fighting itself.
There is also a method alive
that returns false if the player is dead.
- No cheating by overriding classes or instance variables.
- Cheating players will be moved to the cheaters/ directory.
./engine.rb -r 100
where -r
sets the number of rounds (default is 10).
The player with the highest level and experience wins.
The game can be run 1000 times using ./multi_run.rb
On it's last run these were the results:
Eric the Kill Steal won 272 times
strax won 247 times
A Tabby Cat won 226 times
Ian Terrell won 185 times
Valentin won 39 times
Izidor won 21 times
*No rest for the wicked* won 10 times