Ruby (programming language)
Ruby has been described as a multi-paradigm programming language: it allows procedural programming (defining functions/variables outside classes makes them part of the root, 'self' Object), with object orientation (everything is an object) or functional programming (it has anonymous functions, closures, and continuations; statements all have values, and functions return the last evaluation). It has support for introspection, reflection and metaprogramming, as well as support for interpreter-based threads. Ruby features dynamic typing, and supports parametric polymorphism.
Pokémon Ruby and Sapphire
The basic mechanics of "Ruby" and "Sapphire" are largely the same as their predecessors'. As with all "Pokémon" games for hand-held consoles, gameplay is in third-person, overhead perspective and consists of three basic screens: a field map, in which the player navigates the main character; a battle screen; and the menu, in which the player configures their party, items, or gameplay settings. The player begins the game with one Pokémon, and can capture more using Poké Balls. The player can also use their Pokémon to battle other Pokémon. When the player encounters a wild Pokémon or is challenged by a trainer to a battle, the screen switches to a turn-based battle screen where the Pokémon fight. During battle, the player may fight, use an item, switch their active Pokémon, or flee (the last is not an option in battles against trainers). All Pokémon have hit points (HP); when a Pokémon's HP is reduced to zero, it faints and cannot battle until it is revived. If the player's Pokémon defeats the opposing Pokémon (causes it to faint), it receives experience points. After accumulating enough experience points, it may level up; most Pokémon evolve into a new species of Pokémon when they reach a certain level.