Command line flashcard game
The program's data structures aren't necessarily complicated enough for OOP - you'll almost never need to create multiple instances of any of the potential objects. So don't worry about it too much. 

The only big problem I can see is that you always calculate both the Korean-English and English-Korean dictionaries even though only one is used each game, which could be a big waste of memory if the dictionaries get larger. I'd suggest waiting until after the user has chosen their direction and THEN invert the hash if you need to, and ideally throw away the uninverted version (unfortunately Ruby doesn't have an invert! method on hashes). If you're reading from a file, you can invert the data yourself as it is read in. 

The one OOP improvement I'd recommend is to wrap the dictionary in an abstract data type. Rather than counting on it being a hash, write methods that return a word to use as a question and the translation of input word, and call those. That way, when you want to make the dictionary bigger or read it from a file, you can just modify those methods. For example, when the dictionary gets really big you might want to read it from disk by random access rather than reading the whole thing into memory. Or you could even write a version that makes requests to a web service.