Build a nine-level word guessing game The basics:
You'll need to provide a nine-level word guessing game in the fewest characters possible (in your language of choice).
The metrics:

Provide a word-list
(one word per line, seperated by a
newline) (e.g.
/usr/share/dict/words or similar could do). It's fine to
pipe a filename or the wordlist
itself into your solution.
Provide 9 levels with incrementing word length (words with 4 characters -&gt; 12 characters):


Level 1:  a random word from the wordlist containing 4 characters
Level 2:  a random word from the wordlist containing 5 characters
...                                                  ...
Level 8:  a random word from the wordlist containing 11 characters
Level 9:  a random word from the wordlist containing 12 characters


In every level, obfuscate a randomly chosen word from the list (with a specific word length of course) and replace a certain number of characters by the asterisk (*). The number of characters to replace: current_word_length / 3 (round down). Randomize which characters to replace.
Let the player 'guess' the word (only one try per level), give feedback (correct or wrong) and give points accordingly. When correct, the player gains number_of_obfuscated_characters * 10 points.
Print the current score at the end of each level.

The format (&amp; sample I/O):
Make sure you follow the following formatting scheme:

Level 1     # level header
=======     # 
g*ek        # obfuscated word
geek        # user input
correct     # guess validation
score: 10   # print score
            #  
Level 2
=======
l*nux
linux
correct
score: 20

Level 3
=======
ran**m
random
correct
score: 40

...

Level 9
=======
sem***act*ve
semiinactive
wrong
score: 90

Winner:
Shortest solution (by code character count). Have fun golfing!
Ruby (188)

takes the filename to read words from as argument.

q=*$&lt;
s=0
4.upto(12){|n|o=''+w=q.grep(/^#{?.*n}$/).sample
[*0..n-1].sample(c=n/3).map{|i|o[i]=?*}
puts"Level #{n-3}",?=*7,o
puts STDIN.gets==w ?(s+=c;"correct"):"wrong","score: #{s}0",""}