The best exercise I can think is to to write a simple 2d game engine and something like tetris or pong on top of that.
Remember though, that it is important to know when not to use a patterns as well. Engineering just for the sake of it is not very cost effective.
Good luck!
(Incidentally, this interesting conversation is going on as well When should I use, and not use, design patternsWhen should I use, and not use, design patterns)