Teaching Object-Oriented software engineering through Problem-Based Learning in the context of game design